Skip to content

Mlukni22/minka

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

60 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🐾 Minka - German Learning Platform

A beautiful, interactive German learning platform featuring story-based lessons, spaced repetition flashcards, and gamified progress tracking.

Minka Logo

✨ Features

  • πŸ“š 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

πŸš€ Quick Start

Prerequisites

  • Node.js 18+ (Download)
  • npm (comes with Node.js)

Installation

# 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 dev

Open http://localhost:3000 in your browser.

πŸ”§ Development

Available Scripts

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 types

Project Structure

src/
β”œβ”€β”€ 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

πŸ” Firebase Setup

  1. Create Project: Go to Firebase Console
  2. Enable Authentication: Email/Password + Google Sign-in
  3. Enable Firestore: Database for user data
  4. Get Config: Copy configuration to .env.local

See SETUP.md for detailed instructions.

🎨 Technology Stack

  • 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

πŸ“± Features Overview

Story Learning

  • Interactive German stories with vocabulary highlights
  • Click-to-add flashcards from story context
  • Grammar lessons integrated with each chapter
  • Audio support for pronunciation

Flashcard System

  • Bidirectional cards (German ↔ English)
  • Cloze deletion with example sentences
  • Spaced repetition using SM-2 algorithm
  • Typo tolerance and fuzzy matching

Progress Tracking

  • Chapter completion tracking
  • Vocabulary mastery statistics
  • Learning streak visualization
  • Activity heatmap calendar

Gamification

  • Level system with XP rewards
  • Daily quests and achievements
  • Streak tracking and rewards
  • Progress visualization

🎯 User Experience

New Users

  • Welcome page with "Start Your Journey" button
  • Guided first chapter experience
  • Easy sign-up process

Returning Users

  • Personalized dashboard with progress stats
  • Continue where you left off
  • Quick access to flashcards and lessons

πŸ› οΈ Customization

Adding New Stories

  1. Add story data to src/lib/story-engine.ts
  2. Include vocabulary with articles and plurals
  3. Add grammar lessons to src/data/grammar-lessons.ts

Styling

  • Global styles in src/app/globals.css
  • CSS variables for consistent theming
  • Tailwind classes for component styling

Translations

  • Add new languages in src/lib/i18n.ts
  • Use useLanguage hook in components
  • Update translation interfaces

πŸ“Š Performance

  • 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

πŸ§ͺ Testing

  • TypeScript: Compile-time type checking
  • ESLint: Code quality and consistency
  • Manual Testing: Browser testing on multiple devices
  • Firebase: Test authentication and data persistence

πŸš€ Deployment

Vercel (Recommended)

# Install Vercel CLI
npm i -g vercel

# Deploy
vercel

# Set environment variables in Vercel dashboard

Other Platforms

  • Netlify: Static site deployment
  • Firebase Hosting: Integrated with Firebase
  • Docker: Containerized deployment

🀝 Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Test thoroughly
  5. Submit a pull request

Code Standards

  • Use TypeScript for all new code
  • Follow existing naming conventions
  • Add comments for complex logic
  • Test on mobile devices

πŸ“ž Support

  • Documentation: Check SETUP.md or the issues folder for setup issues
  • Issues: Report bugs via GitHub Issues
  • Questions: Contact the maintainer

πŸ“„ License

This project is licensed under the MIT License.


Made with ❀️ for German learners everywhere! πŸ‡©πŸ‡ͺ

About

Interactive German learning platform with stories, flashcards, and gamification

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages