Craft your English! A Minecraft/Roblox-style language game for school students. Chat with characters, mine 💎 gems and XP, hop across a block-world map — and trade gems at the Loot Shop 🎮 (100 gems = 15 min screen time).
See docs/REQUIREMENTS.md and docs/DESIGN.md for the full spec.
- 🗺️ Hop across a block-world map as your skin unlocks new stages!
- 🤖 Chat with AI characters in real-life quests—get instant grammar and vocab boosts!
- 🎭 Toggle formal or casual mode—AI matches your vibe!
- 📦 Level up your lingo—stash epic words as loot in your Word Chest!
- 💎 Mine gems and XP for every quest win!
- 🦸 Pick, unlock, and flex awesome skins!
- 🕹️ Trade gems at the Loot Shop for real screen time (100 gems = 15 min)!
- 💾 Your adventure, your browser—no logins needed!
- Next.js (App Router) + TypeScript
- Tailwind CSS v4
- Browser
localStorageas the primary store (no accounts, no database in v1) - Server-only LLM access via resilient-llm (GitHub) — wrapped in
lib/llm.tsbehindapp/api/chat
- Install dependencies:
npm install- Configure the LLM. Copy the example env file and add your provider key:
cp .env.example .envCopy .env.example to .env and set your provider key. LINGOCRAFT uses resilient-llm (GitHub) — swap PREFERRED_AI_SERVICE / PREFERRED_AI_MODEL and the matching API key. Without a key, chat falls back to a built-in non-AI message.
- Run the dev server:
npm run devOpen http://localhost:3000.
Production install and build (clean install from lockfile):
npm ci && npm run build
npm run startFull VM setup (Nginx, systemd, HTTPS, updates): see docs/DEPLOYMENT.md. A systemd unit is included at deploy/lingocraft.service.
Coins-to-screen-time in lib/constants.ts:
- 100 coins = 15 minutes of entertainment time.
app/- pages (/map,/chat,/vocabulary,/shop) andapp/api/chatroutecomponents/- UI building blocks (chat, world map, onboarding, etc.)lib/- resilient-llm wrapper (lib/llm.ts), localStorage store, scenarios, types, constants