MCPcopy Index your code
hub / github.com/JamesAC42/hanbok

github.com/JamesAC42/hanbok @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
818 symbols 1,963 edges 347 files 26 documented · 3%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Hanbok

Visit Hanbok

Originally a Korean language learning app, Hanbok is now a general purpose language learning tool that supports:

  • Korean
  • Japanese
  • Chinese
  • Spanish
  • Italian
  • French
  • German
  • Dutch
  • Russian
  • Turkish

Features

  • Sentence analysis
  • Word analysis
  • Grammar analysis
  • Cultural analysis
  • Image analysis
  • Text to speech
  • Vocabulary builder
  • Cultural insights

Demo

Basic Sentence Analysis

Basic sentence analysis demo

Break down sentences into their components to understand grammar patterns, vocabulary, and usage.

Image Text Extraction

Image text extraction demo

Extract and analyze text from images to learn from real-world materials.

Spaced Repetition Flashcards

Flashcards demo

Study words in a built in spaced repetition flashcard program.

Roadmap

Exciting new features coming soon:

  • Song lyric database with grammar and vocab breakdowns
  • Interactive Grammar Exercises
  • Structured Daily Lessons
  • Real-time Voice Conversation Practice
  • Typing practice for different languages

Development and running locally

To run the app locally, you will need:

  • Node.js
  • npm
  • redis
  • mongodb

  • Clone the repo

  • Run npm install in both the /server and /app directories
  • Create a .env file in the /server directory with the following variables:
ANTHROPIC_API_KEY=          <-- Optional, depends on which LLM you want to use
GOOGLE_CLIENT_ID=           <-- For Google OAuth
GOOGLE_CLIENT_SECRET=       <-- For Google OAuth
ELEVENLABS_API_KEY=         <-- For text to speech
GEMINI_API_KEY=             <-- Optional, depends on which LLM you want to use
OPENAI_API_KEY=             <-- Optional, depends on which LLM you want to use
REDIS_PW=                   <-- For redis - leave blank if you don't want/need authentication for your server locally
LOCAL=true                  <-- For local development
SECURE_SESSION=false        <-- For local development
MONGODB_USER=               <-- For mongodb
MONGODB_PASSWORD=           <-- For mongodb
MONGODB_HOST=               <-- For mongodb
MONGODB_PORT=               <-- For mongodb
MONGODB_DB=hanbok           <-- Name of MongoDB database, should be hanbok
AWS_BUCKET_NAME=            <-- For AWS S3 to store audio files
AWS_REGION=                 <-- For AWS S3 to store audio files
AWS_ACCESS_KEY_ID=          <-- For AWS S3 to store audio files
AWS_SECRET_ACCESS_KEY=      <-- For AWS S3 to store audio files
STRIPE_PUBLISHABLE_KEY=     <-- For Stripe payment processing
STRIPE_SECRET_KEY=          <-- For Stripe payment processing
STRIPE_WEBHOOK_SECRET=      <-- For Stripe payment processing
CLIENT_URL=                 <-- Redirect URL for Stripe payment processing

You'll need to then make the hanbok database in MongoDB and create a user for it with the same credentials you put in the .env

To run the server, run node index or nodemon index in the /server directory.

To run the client in development mode, run npm run dev in the /app directory.

Core symbols most depended-on inside this repo

t
called by 850
app/src/contexts/LanguageContext.jsx
getDb
called by 113
server/database.js
useLanguage
called by 61
app/src/contexts/LanguageContext.jsx
useAuth
called by 38
app/src/contexts/AuthContext.jsx
navigateTo
called by 16
app/src/components/Sidebar.jsx
getActiveClass
called by 15
app/src/components/Sidebar.jsx
isAdmin
called by 15
server/controllers/lyrics/adminLyrics.js
setHoverTransform
called by 14
app/src/components/Sidebar.jsx

Shape

Function 805
Method 11
Class 2

Languages

TypeScript100%

Modules by API surface

app/src/app/cards/[deckId]/page.jsx21 symbols
app/src/components/analysis/SentenceForm.jsx17 symbols
app/src/app/lyrics/[lyricId]/page.jsx16 symbols
app/src/app/tutor/page.jsx15 symbols
server/controllers/conversations/conversations.js14 symbols
app/src/app/typing/page.jsx14 symbols
app/src/lib/studySessionManager.js13 symbols
app/src/app/history/page.jsx12 symbols
app/src/app/cards/[deckId]/study/page.jsx12 symbols
app/src/app/bookmarks/page.jsx12 symbols
app/src/app/admin/page.jsx11 symbols
app/src/components/analysis/WordsList.jsx10 symbols

Datastores touched

(mongodb)Database · 1 repos

For agents

$ claude mcp add hanbok \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact