Skip to content

anthonypdawson/Wyn

Repository files navigation

Wyn (MicroWin)

A beautifully minimal app to track and celebrate one tiny win each day. Snap a photo or write a one-sentence note about something good that happened—no matter how small. Built with React Native, Expo, and TypeScript.


✨ Features

  • Add a daily win: Text + optional photo
  • View today's entry
  • Current streak tracking
  • Daily notification reminder
  • Simple history list (last 7 days)
  • Shareable moment cards (export beautiful images)
  • Emoji picker for wins
  • Dark mode support
  • All data stored locally (no signup required)

📱 Screenshots

Wyn Home screenshot Wyn Settings screenshot Wyn First Win screenshot Wyn History screenshot

---

🚀 Quick Start

Prerequisites

1. Install dependencies

npm install
# or
yarn install

2. Start the app

npm start
# or
yarn start
  • Use the Expo Go app on your device to scan the QR code and run the app instantly.

🏗️ Project Structure

├── App.tsx                # App entry point
├── app.json               # Expo config
├── assets/                # App icons, splash, etc.
├── src/
│   ├── components/        # Reusable UI components
│   ├── hooks/             # Custom React hooks
│   ├── screens/           # App screens (Home, History, etc.)
│   ├── services/          # Storage, notifications, sharing, etc.
│   ├── types/             # TypeScript types
│   └── utils/             # Helpers, constants, theming
└── ...

🛠️ Core Tech Stack

  • React Native (0.81+)
  • Expo SDK (54+)
  • TypeScript
  • Zustand (state management)
  • date-fns (date handling)
  • AsyncStorage (local storage)
  • Expo Notifications, Image Picker, View Shot, Sharing

🗂️ Key Files

  • src/types/index.ts — TypeScript interfaces
  • src/services/storageService.ts — Local storage operations
  • src/utils/dateHelpers.ts — Date manipulation utilities
  • src/services/streakService.ts — Streak logic
  • src/screens/HomeScreen.tsx — Main win input screen
  • src/screens/HistoryScreen.tsx — Past wins list
  • src/screens/WinDetailScreen.tsx — Individual win details
  • src/components/WinCard.tsx — Win display card

🔑 Data Model

interface Win {
  id: string;
  date: string; // ISO format
  text: string;
  photoUri?: string;
  createdAt: number;
  emoji?: string;
}

interface AppState {
  wins: Win[];
  currentStreak: number;
  longestStreak: number;
  totalWins: number;
  notificationTime: string; // e.g., "20:00"
  isPremium: boolean;
}

🔔 Notifications

  • Daily reminders via Expo Notifications
  • User can set preferred reminder time

📦 Asset Guide

  • Place icons and splash images in assets/ (see docs/ASSETS.md)
  • Update app.json to reference your assets

🧪 Testing

  • Test on iOS and Android using Expo Go
  • Check streak logic, notifications, and sharing features

🗺️ Roadmap

  • Add win (text/photo)
  • Streak counter
  • History view
  • Daily notifications
  • Shareable cards
  • Widgets (future)
  • Cloud sync (future)
  • Premium features (future)

💡 Inspiration

See docs/app-idea.md for the product vision and docs/architecture-mvp.md for technical details.


🙏 Credits

About

A minimal, local‑first mobile app for capturing one meaningful win each day with photos, notes, streaks, and reminders.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors