A Korean learning app for writing correction, handwriting OCR, and reviewed MCQ practice.
pnpm install
cp .env.example .env.local
# Set the Spring backend provider and OAuth values in .env.local.
docker compose --env-file .env.local --profile backend up --build -d
pnpm devThe local Spring backend and its Flyway-managed PostgreSQL database run through
Docker. Next.js is frontend-only and proxies /api/v1 and /api/auth to the
configured SPRING_BACKEND_ORIGIN.
Users sign up or sign in with Google. Configure this authorized redirect URI in Google Cloud for local development:
http://localhost:3000/api/auth/callback/google
DAILY_CORRECTION_LIMIT and DAILY_OCR_LIMIT control the per-user UTC daily
AI usage limits. They default to 20 corrections and 10 photo OCR requests.
ADMIN_EMAILS is a comma-separated allowlist of Google account email addresses
that can access the quiz review workflow.
- The frontend remains Next.js on Vercel while Kotlin/Spring owns all API, authentication, AI, and persistence behavior.
- Neon Postgres remains the source of truth.
- AI quiz drafts require operator approval before users can see them.
- Backend migration and database-operation commands are documented in
backend/README.md.
pnpm test
pnpm verify
pnpm test:unit
pnpm build
pnpm build:backendpnpm test always reruns backend tests and therefore requires Docker for the
Testcontainers integration suite. pnpm verify adds both production builds and
Compose configuration validation.