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

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

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

Study words in a built in spaced repetition flashcard program.
Exciting new features coming soon:
To run the app locally, you will need:
mongodb
Clone the repo
npm install in both the /server and /app directories.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.
$ claude mcp add hanbok \
-- python -m otcore.mcp_server <graph>