A beautiful, interactive German learning platform featuring story-based lessons, spaced repetition flashcards, and gamified progress tracking.
- π Story-Based Learning: Interactive German stories with vocabulary integration
- π― Spaced Repetition: Smart flashcard system using SM-2 algorithm
- π Progress Tracking: Detailed analytics and streak tracking
- π Gamification: Levels, XP, daily quests, and achievements
- πΊοΈ Learning Path: Visual roadmap with chapter progression
- π Multilingual: Support for English and Bulgarian interfaces
- π± Responsive: Works perfectly on desktop and mobile
- π Authentication: Secure user accounts with Firebase
- π Activity Heatmap: GitHub-style contribution calendar
- Node.js 18+ (Download)
- npm (comes with Node.js)
# Clone the repository
git clone [your-repo-url]
cd minka
# Install dependencies
npm install
# Set up environment variables
cp env-template.txt .env.local (on Linux or with the Git CMD)
copy env-template.txt .env.local (on Windows)
# Edit .env.local with your Firebase configuration
# Start development server
npm run devOpen http://localhost:3000 in your browser.
npm run dev # Start development server
npm run build # Build for production
npm run start # Start production server
npm run lint # Run ESLint
npm run type-check # Check TypeScript typessrc/
βββ app/ # Next.js app router
β βββ page.tsx # Main home page
β βββ layout.tsx # Root layout
β βββ flashcards/ # Flashcards page
βββ components/ # React components
β βββ story-reader.tsx # Story reading interface
β βββ dashboard.tsx # User dashboard
β βββ game-roadmap.tsx # Learning path visualization
β βββ profile/ # User profile pages
βββ lib/ # Utility libraries
β βββ firebase.ts # Firebase configuration
β βββ auth.ts # Authentication logic
β βββ story-engine.ts # Story data management
β βββ flashcard-system.ts # Spaced repetition system
βββ types/ # TypeScript definitions
- Create Project: Go to Firebase Console
- Enable Authentication: Email/Password + Google Sign-in
- Enable Firestore: Database for user data
- Get Config: Copy configuration to
.env.local
See SETUP.md for detailed instructions.
- Framework: Next.js 14 with App Router
- Language: TypeScript
- Styling: Tailwind CSS
- Animations: Framer Motion
- Icons: Lucide React
- Authentication: Firebase Auth
- Database: Firestore
- State Management: React Context + Hooks
- Interactive German stories with vocabulary highlights
- Click-to-add flashcards from story context
- Grammar lessons integrated with each chapter
- Audio support for pronunciation
- Bidirectional cards (German β English)
- Cloze deletion with example sentences
- Spaced repetition using SM-2 algorithm
- Typo tolerance and fuzzy matching
- Chapter completion tracking
- Vocabulary mastery statistics
- Learning streak visualization
- Activity heatmap calendar
- Level system with XP rewards
- Daily quests and achievements
- Streak tracking and rewards
- Progress visualization
- Welcome page with "Start Your Journey" button
- Guided first chapter experience
- Easy sign-up process
- Personalized dashboard with progress stats
- Continue where you left off
- Quick access to flashcards and lessons
- Add story data to
src/lib/story-engine.ts - Include vocabulary with articles and plurals
- Add grammar lessons to
src/data/grammar-lessons.ts
- Global styles in
src/app/globals.css - CSS variables for consistent theming
- Tailwind classes for component styling
- Add new languages in
src/lib/i18n.ts - Use
useLanguagehook in components - Update translation interfaces
- Code Splitting: Automatic with Next.js
- Image Optimization: Next.js Image component
- Bundle Analysis: Built-in Next.js analyzer
- Lazy Loading: Components loaded on demand
- TypeScript: Compile-time type checking
- ESLint: Code quality and consistency
- Manual Testing: Browser testing on multiple devices
- Firebase: Test authentication and data persistence
# Install Vercel CLI
npm i -g vercel
# Deploy
vercel
# Set environment variables in Vercel dashboard- Netlify: Static site deployment
- Firebase Hosting: Integrated with Firebase
- Docker: Containerized deployment
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
- Use TypeScript for all new code
- Follow existing naming conventions
- Add comments for complex logic
- Test on mobile devices
- Documentation: Check SETUP.md or the issues folder for setup issues
- Issues: Report bugs via GitHub Issues
- Questions: Contact the maintainer
This project is licensed under the MIT License.
Made with β€οΈ for German learners everywhere! π©πͺ
