Skip to content

hy0ren/flashcard-maker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

11 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Synapse - Learn Smarter ๐Ÿ“š

A modern flashcard web application built with Next.js, TypeScript, and Tailwind CSS. Create word sets, practice with flashcards, quizzes, and fun games!

โœจ Features

Core Features

  • Word Input & Set Creation - Paste or type word-meaning pairs with auto-parsing
  • Flashcards Mode - Flip cards with smooth animations, track "Known" vs "Still Learning"
  • Matching Quiz - Connect terms with definitions, timed with best score tracking
  • Multiple Choice Quiz - Select correct definitions with instant feedback

Mini-Games

  • Speed Match - 60-second rapid-fire matching with combo multipliers
  • Typing Practice - Type the term from the definition, tracks accuracy

Data Management

  • Local Storage - All data persists in your browser
  • Import/Export - Backup and share your sets as JSON
  • Demo Sets - Pre-loaded Korean, Japanese (JLPT N5), GRE, and Spanish vocabulary

UI/UX

  • Beautiful, responsive design with Tailwind CSS
  • Smooth animations with Framer Motion
  • Dark mode support (follows system preference)
  • Stats dashboard with performance tracking

๐Ÿš€ Getting Started

Prerequisites

  • Node.js 18+
  • npm or yarn

Installation

# Navigate to the flashcard-app directory
cd flashcard-app

# Install dependencies
npm install

# Start development server
npm run dev

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

Build for Production

npm run build
npm start

๐Ÿ“ Project Structure

src/
โ”œโ”€โ”€ app/
โ”‚   โ”œโ”€โ”€ layout.tsx           # Root layout with navbar
โ”‚   โ”œโ”€โ”€ page.tsx             # Dashboard home page
โ”‚   โ”œโ”€โ”€ stats/page.tsx       # Statistics page
โ”‚   โ””โ”€โ”€ sets/
โ”‚       โ”œโ”€โ”€ new/page.tsx     # Create new set
โ”‚       โ””โ”€โ”€ [id]/
โ”‚           โ”œโ”€โ”€ page.tsx     # Set detail & practice selector
โ”‚           โ”œโ”€โ”€ edit/page.tsx
โ”‚           โ””โ”€โ”€ practice/
โ”‚               โ”œโ”€โ”€ flashcards/page.tsx
โ”‚               โ”œโ”€โ”€ matching/page.tsx
โ”‚               โ”œโ”€โ”€ mcq/page.tsx
โ”‚               โ””โ”€โ”€ games/page.tsx
โ”œโ”€โ”€ components/
โ”‚   โ”œโ”€โ”€ Navbar.tsx           # Navigation bar
โ”‚   โ”œโ”€โ”€ Flashcard.tsx        # Flip card component
โ”‚   โ”œโ”€โ”€ MatchingGrid.tsx     # Matching game grid
โ”‚   โ”œโ”€โ”€ MCQQuestion.tsx      # Multiple choice component
โ”‚   โ”œโ”€โ”€ GameSpeedMatch.tsx   # Speed match game
โ”‚   โ”œโ”€โ”€ GameTyping.tsx       # Typing practice game
โ”‚   โ”œโ”€โ”€ WordSetEditor.tsx    # Word pair editor
โ”‚   โ”œโ”€โ”€ SetCard.tsx          # Set preview card
โ”‚   โ””โ”€โ”€ PracticeSelector.tsx # Practice mode picker
โ””โ”€โ”€ lib/
    โ”œโ”€โ”€ types.ts             # TypeScript interfaces
    โ”œโ”€โ”€ storage.ts           # LocalStorage utilities
    โ”œโ”€โ”€ parseWords.ts        # Word parsing & helpers
    โ””โ”€โ”€ demoData.ts          # Demo vocabulary sets

๐Ÿ“ Word Input Formats

The app supports multiple input formats:

term: definition
term - definition
term = definition
term	definition (tab-separated)

Example Input

์‚ฌ๊ณผ: apple
์˜ค๋ Œ์ง€: orange
๊ณต๋ถ€ํ•˜๋‹ค: to study

๐ŸŽฎ Practice Modes

Mode Description Min Words
Flashcards Flip cards, mark known/learning 1
Matching Connect terms to definitions 4
Multiple Choice Select correct answer from 4 options 4
Speed Match 60s timed matching with combos 4
Typing Type term from definition 1

๐Ÿ› ๏ธ Tech Stack

  • Framework: Next.js 15 (App Router)
  • Language: TypeScript
  • Styling: Tailwind CSS
  • Animations: Framer Motion
  • Icons: Lucide React
  • Storage: Browser LocalStorage

๐Ÿ“Š Statistics Tracked

  • Total practice sessions per set
  • Flashcard mastery percentage
  • MCQ accuracy (running average)
  • Matching best time
  • Speed Match high score
  • Typing best WPM
  • Last practiced date

๐ŸŽจ Customization

Theming

The app uses CSS custom properties for theming. Modify src/app/globals.css to customize:

  • Colors (primary, accent, success, danger, etc.)
  • Shadows
  • Gradients
  • Border radius
  • Animations

Dark Mode

Dark mode automatically follows your system preference. Custom variables are defined for both light and dark themes.

๐Ÿ“ฆ Demo Data

Load demo sets with one click from the dashboard:

  • Korean Basics ๐Ÿ‡ฐ๐Ÿ‡ท - 12 essential words
  • GRE Vocabulary ๐Ÿ“š - 10 advanced English words
  • JLPT N5 ๐Ÿ‡ฏ๐Ÿ‡ต - 12 basic Japanese verbs/adjectives
  • Spanish Essentials ๐Ÿ‡ช๐Ÿ‡ธ - 10 common phrases

๐Ÿ”ง Development

# Run development server
npm run dev

# Build for production
npm run build

# Start production server
npm start

# Run linter
npm run lint

๐Ÿค– AI-Powered Features

Synapse can use Google AI (Gemini) to automatically generate short descriptions for your study sets based on the words they contain.

Configure your Google AI API key

Create a .env.local file in the project root (next to package.json) and add:

GOOGLE_API_KEY=your_google_ai_key_here

Restart the dev server after adding or changing this file.

Where AI is used

  • New Set: On the โ€œCreate New Setโ€ page, use the Generate with AI button next to the Description field to auto-fill a description from the words youโ€™ve entered.
  • Edit Set: On the โ€œEdit Setโ€ page, use the same button to regenerate or improve the description for an existing set.

All AI calls are made through a server-side API route (/api/generate-description), so your API key is never exposed to the browser.

๐Ÿ“„ License

MIT License - feel free to use and modify for your own projects!


Built with โค๏ธ using Next.js and Tailwind CSS

About

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors