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.
- 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)
---
npm install
# or
yarn installnpm start
# or
yarn start- Use the Expo Go app on your device to scan the QR code and run the app instantly.
├── 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
└── ...
- 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
src/types/index.ts— TypeScript interfacessrc/services/storageService.ts— Local storage operationssrc/utils/dateHelpers.ts— Date manipulation utilitiessrc/services/streakService.ts— Streak logicsrc/screens/HomeScreen.tsx— Main win input screensrc/screens/HistoryScreen.tsx— Past wins listsrc/screens/WinDetailScreen.tsx— Individual win detailssrc/components/WinCard.tsx— Win display card
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;
}- Daily reminders via Expo Notifications
- User can set preferred reminder time
- Place icons and splash images in
assets/(see docs/ASSETS.md) - Update
app.jsonto reference your assets
- Test on iOS and Android using Expo Go
- Check streak logic, notifications, and sharing features
- Add win (text/photo)
- Streak counter
- History view
- Daily notifications
- Shareable cards
- Widgets (future)
- Cloud sync (future)
- Premium features (future)
See docs/app-idea.md for the product vision and docs/architecture-mvp.md for technical details.
- Built with Expo, React Native, and TypeScript
- Inspired by positive psychology and habit-forming apps