A modern, intelligent flashcard application for language learning and vocabulary building. Features cloud synchronization, AI-powered definitions, and an intuitive study interface.
Choose your learning path - Start immediately with local storage or sign in for cloud sync across devices.
Try before you commit - Full functionality with local storage, perfect for testing and quick vocabulary sessions.
Organize your vocabulary - Complete flashcard management with auto-definitions, pronunciations, and examples.
Smart learning experience - Distraction-free study interface with history tracking and keyboard shortcuts.
- Dual Storage Options: Local storage for trial or cloud sync for persistence
- Auto-Definitions: Automatic word definitions, pronunciations, and examples
- Smart Study Mode: History tracking, random selection, and progress monitoring
- Mobile Optimized: Touch gestures and responsive design
- Audio Support: Text-to-speech pronunciation with multiple voice options
- Secure Login: Clerk authentication with social login support
- Cloud Storage: Real-time sync with Supabase PostgreSQL database
- Data Migration: Seamless transition from local to cloud storage
- Cross-Device: Access your flashcards anywhere, anytime
- Clean Interface: Minimalist design focused on learning
- Keyboard Shortcuts: Space (flip), arrows (navigate), escape (exit)
- Touch Gestures: Swipe navigation for mobile devices
- Loading States: Smooth transitions and feedback
- Next.js 15: React framework with SSR and optimized performance
- React 18: Latest features with concurrent rendering
- TypeScript 5: Full type safety with strict configuration
- TailwindCSS 3: Utility-first styling with responsive design
- Clerk: Authentication and user management
- Supabase: PostgreSQL database with real-time capabilities
- Dictionary APIs: Free Dictionary API integration
- Vercel: Deployment and hosting platform
- ESLint: Code linting with Next.js and React rules
- PostCSS: CSS processing and optimization
- Lucide Icons: Modern icon library
Node.js >= 18.0.0
npm >= 8.0.0# Clone the repository
git clone <your-repo-url>
cd flash-card-app
# Install dependencies
npm install
# Set up environment variables
cp .env.example .env.local
# Edit .env.local with your API keys
# Start development server
npm run devCreate a .env.local file with:
# Authentication (Required for cloud features)
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=your_clerk_publishable_key
CLERK_SECRET_KEY=your_clerk_secret_key
# Database (Required for cloud features)
NEXT_PUBLIC_SUPABASE_URL=your_supabase_project_url
NEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key
# AI Features (Optional)
NEXT_PUBLIC_GEMINI_API_KEY=your_gemini_api_keynpm run dev # Start development server
npm run build # Build for production
npm run start # Start production server
npm run lint # Run ESLint- Visit the app β Choose between "Try Instantly" or "Sign In & Sync"
- Trial Mode β Start immediately with local storage
- Cloud Mode β Sign in for cross-device synchronization
- Add Cards β Type a word and get automatic definitions
- Manage Collection β Edit, delete, or add personal notes
- Start Studying β Use keyboard shortcuts or touch gestures
- Track Progress β Review history and focus on difficult words
- Space β Flip flashcard
- β β β Navigate between cards
- Escape β Exit study mode
- Enter β Random next card
- Tap β Flip flashcard
- Swipe Left/Right β Navigate cards
- Tap "Back" β Exit study mode
flash-card-app/
βββ docs/screenshots/ # App screenshots
βββ src/
β βββ components/ # React components
β β βββ AuthButton.tsx # Authentication UI
β β βββ StudyMode.tsx # Study interface
β β βββ ManagementMode.tsx # Card management
β β βββ LocalApp.tsx # Trial mode app
β βββ hooks/ # Custom React hooks
β β βββ useFlashcardsCloud.ts # Cloud data
β β βββ useFlashcardsLocal.ts # Local data
β β βββ useSettings.ts # User preferences
β βββ pages/ # Next.js pages
β β βββ index.tsx # Landing page
β β βββ manage.tsx # Management page
β β βββ study.tsx # Study page
β β βββ local.tsx # Trial mode page
β βββ services/ # External API integrations
β β βββ dictionaryApi.ts # Word definitions
β β βββ supabaseService.ts # Database operations
β βββ types/ # TypeScript definitions
βββ next.config.js # Next.js configuration
βββ tailwind.config.js # TailwindCSS configuration
βββ package.json # Dependencies and scripts
- Quick Entry β Type new vocabulary words
- Rich Context β Get definitions, pronunciations, examples
- Personal Notes β Add translations or memory aids
- Spaced Practice β Random card selection for retention
- Progress Tracking β Monitor learning history
- Modern React Patterns β Hooks, context, custom hooks
- TypeScript Best Practices β Strict typing, interface design
- Next.js Features β SSR, API routes, optimization
- External API Integration β Dictionary APIs, authentication
- Database Operations β Supabase integration, real-time sync
- No registration required for trial mode
- One-click sign-in with Google, GitHub, or email
- Automatic data migration from trial to cloud
- Auto-complete definitions from dictionary APIs
- Pronunciation support with text-to-speech
- Personal notes for custom learning aids
- Study history to track progress
- Fast loading with Next.js optimizations
- Responsive design for all screen sizes
- Offline capability for core features
- Smooth animations and transitions
The app is optimized for deployment on Vercel:
- Connect your GitHub repository to Vercel
- Set environment variables in Vercel dashboard
- Deploy automatically on every push to main branch
Set these in your Vercel dashboard:
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEYCLERK_SECRET_KEYNEXT_PUBLIC_SUPABASE_URLNEXT_PUBLIC_SUPABASE_ANON_KEY
- Autocomplete from existing cards
- Word suggestions during typing
- Recently used words quick-add
- Complete Gemini AI integration
- Context-aware examples
- Learning difficulty assessment
- Spaced repetition algorithm
- Multiple deck organization
- Progress analytics dashboard
- React Native implementation
- Offline-first architecture
- Push notifications for study reminders
- β Build time: < 30 seconds
- β Bundle size: Optimized with Next.js
- β Loading speed: < 2 seconds on 3G
- β Type safety: 100% TypeScript coverage
- β ESLint: Zero linting errors
- β TypeScript: Strict mode enabled
- β Responsive: Mobile-first design
- β Accessible: ARIA labels and keyboard navigation
This is a personal learning project showcasing:
- Modern React development with Next.js
- TypeScript best practices
- Clean architecture patterns
- User-centered design principles
MIT License - Feel free to use this project for learning and reference.
π Learning Focus: Vocabulary building efficiency and modern web development
π Status: Core features complete, actively adding enhancements
π Next: Enhanced input features and AI integration