A Progressive Web App (PWA) for tracking your daily wins and achievements. Built with React, Material-UI, and Vite.
- 📝 Track daily wins and achievements
- 🌓 Dark/light mode theme
- 📅 Calendar view of your wins
- 💾 Offline support with PWA
- 📱 Mobile-friendly with keyboard handling
- 🔍 Context menu for managing wins (Copy, Edit, Delete, Create Image)
- 🎨 AI-powered image generation from win text (OpenAI DALL-E)
- 📊 Grouped by date for easy viewing
npm installnpm run devThe app includes AI-powered image generation using OpenAI's DALL-E 2 API. Simply right-click any win and select "Create an image" to generate a visual representation of your achievement!
Note: Image generation uses a shared test API key with limited credits for demo purposes.
npm run buildnpm run previewThis project follows a scalable, feature-based architecture. See the detailed documentation:
- QUICK_START.md - Quick reference for common tasks
- PROJECT_STRUCTURE.md - Comprehensive guide to the project structure
src/
├── components/
│ ├── common/ # Reusable UI components
│ ├── layout/ # Layout components (Header, InputBar)
│ └── features/ # Feature-specific components
│ └── wins/ # Wins management feature
├── hooks/ # Custom React hooks
├── utils/ # Utility functions
├── constants/ # App-wide constants
├── App.jsx # Main application
└── main.jsx # Entry point
- React 18 - UI library
- Vite - Build tool and dev server
- Material-UI (MUI) - Component library
- date-fns - Date utilities
- PWA - Progressive Web App support
- Quick Start Guide - Get started quickly with common patterns
- Project Structure - Detailed architecture and how to extend
useWins- Manages wins state and localStorageuseTheme- Theme managementuseLocalStorage- Generic localStorage hookuseInstallPrompt- PWA installationuseKeyboardHeight- Mobile keyboard detection
- Common: Reusable across features (ThemeSwitcher)
- Layout: Application structure (Header, InputBar)
- Features: Domain-specific (wins/)
- Create feature directory:
mkdir -p src/components/features/your-feature- Create components and export them
- Create custom hooks if needed
- Import and use in App.jsx
See PROJECT_STRUCTURE.md for detailed examples.
- Follow the existing file structure
- Keep components small and focused
- Extract reusable logic into hooks
- Add JSDoc comments for functions
- Test your changes
MIT
Built with:
Happy tracking your wins! 🎉