Skip to content

Repository files navigation

☕ Java-chan

An anime-guided Java tutor built for CS22301 — Object Oriented Programming

Because nobody learned polymorphism from a cold error message.

React Vite Zustand Framer Motion License: PolyForm Noncommercial

No account. No install. Just open it and start learning.

Built by Omega Mu Gamma Studio — Java-chan is the flagship of the Chan series, a family of anime-mascot programming tutors that also includes Python-Chan, Rust-Chan, Go-Chan, Sharp-Chan (C#), Kotlin-Chan, and PlusPlus-Chan (C++). The studio also builds SeeDS, KMapX, EG Suite, GateLab, ArchVisor, ThermOS, and BlockBeats.


What is Java-chan?

Java-chan is a fully finished, actively maintained browser-based Java learning app where an anime mascot teaches the complete CS22301 OOP syllabus in her own voice — not textbook prose with commentary stapled on top. Every one of 75 lessons runs the same five-phase arc: worked example, broken code walkthrough, hands-on coding, an MCQ challenge, and a closing trivia beat. Java-chan reacts to how you're doing, escalates her hints when you're stuck, and celebrates when you get it right.

No abstract theory walls. No cold error messages. No account required. Progress is saved in your browser automatically. Just open the app and start lesson one.

This is a finished, deployed product under active development. The codebase is public for transparency and academic interest — it is not intended as a template or starting point. If you're a student, just use the app. If you're a contributor or collaborator, read on.


The Teaching Model

Every lesson — all 75 — runs this exact five-phase arc, no exceptions:

Phase Name What Happens
1 Learn It With Me A click-to-pin split screen: Java-chan's dialogue plays in short beats on one side; clicking a topic pins a sticky note (term + plain-English definition) on the other. You pick the topic order — it's not one long scroll
2 See the Code The same idea, deliberately broken — she explains the bug and why it matters, with an optional "Show Me the Fix" reveal
3 Code It With Me Fill-in-the-blank scaffolded coding for most lessons; a full in-browser code editor with real output for coding-heavy lessons, powered by the built-in Java interpreter
4 Challenge A quick MCQ check, plus a self-directed prompt to attempt the full program in your own IDE
5 Fun Facts & Trivia A closing lore beat in her voice — no grading, just flavor

The Journal

Every sticky note you pin in Phase 1 is filed into your Journal — a persistent, cross-lesson glossary of every term you've clicked on, browsable at any time. It's a standing reference you build for yourself as you study, not something authored up front.

The Sandbox

A floating Java sandbox is available on every screen — open it any time to write and run Java code freely, completely outside any lesson context. No expected output, no grading, no judgment. Just a place to experiment. Powered by Java-chan's built-in in-browser interpreter.


The In-Browser Java Interpreter

Java-chan ships a custom tree-walking Java interpreter written entirely in JavaScript. It runs entirely in your browser — no server, no API, no JVM installation, no internet connection required once the page loads.

The interpreter covers the full CS22301 scripting subset: primitive types, strings, arithmetic, control flow (if/else/switch/for/while/do-while/break/continue), 1D and 2D arrays, static methods, System.out, Math, String instance methods, ternary, enhanced for-each, and array initializer syntax. Object system (classes, inheritance, this, super, instanceof) is in active development.

It runs 233 passing tests and has been fixture-verified against real JVM output across the entire Unit 1 curriculum.

For the full architecture, scope decisions, and development roadmap, see INTERPRETER.md.


Curriculum — 75 Lessons Across 5 Units

All five units are complete, published, and available from day one. No paywalls, no drip releases.

Unit Topic Lessons
1 OOP & Java Fundamentals 15
2 Inheritance & Interfaces 15
3 Exception Handling & I/O 15
4 Collections & Threads 15
5 JavaFX & UI 15
📖 View all 75 lessons

Unit 1 — OOP & Java Fundamentals 1.1 What is Java? · 1.2 Setting Up & Your First Program · 1.3 Hello, World! · 1.4 Data Types & Variables · 1.5 Type Casting & Literals · 1.6 Operators · 1.7 Input & Output · 1.8 Control Flow — if/else · 1.9 Loops — for & while · 1.10 Arrays · 1.11 2D Arrays & Matrices · 1.12 Methods · 1.13 Strings · 1.14 Intro to OOP — Classes & Objects · 1.15 Access Modifiers & Encapsulation

Unit 2 — Inheritance & Interfaces 2.1 Inheritance Basics · 2.2 Method Overriding · 2.3 The super Keyword · 2.4 Polymorphism · 2.5 Abstract Classes · 2.6 Interfaces · 2.7 Multiple Interfaces · 2.8 Packages · 2.9 Static Members · 2.10 Final Keyword · 2.11 Inner Classes · 2.12 Enum Types · 2.13 Object Class Methods · 2.14 Wrapper Classes & Autoboxing · 2.15 Unit 2 Review — Design Patterns Intro

Unit 3 — Exception Handling & I/O 3.1 What Are Exceptions? · 3.2 try-catch-finally · 3.3 throw & throws · 3.4 Custom Exceptions · 3.5 try-with-resources · 3.6 Common Built-in Exceptions · 3.7 Byte Streams · 3.8 Character Streams · 3.9 Buffered Streams · 3.10 PrintWriter & Console I/O · 3.11 File Class & File Operations · 3.12 Serialization · 3.13 NIO Basics — Path & Files · 3.14 Working with CSV Files · 3.15 Unit 3 Review — Robust Programs

Unit 4 — Collections & Threads 4.1 Collections Framework Overview · 4.2 ArrayList · 4.3 LinkedList · 4.4 HashSet & TreeSet · 4.5 HashMap & TreeMap · 4.6 Generics · 4.7 Comparable & Comparator · 4.8 Iterator & For-Each · 4.9 Stack, Queue & Deque · 4.10 Intro to Multithreading · 4.11 Creating Threads · 4.12 Thread Synchronization · 4.13 Inter-thread Communication · 4.14 Executor Framework · 4.15 Unit 4 Review — Choosing the Right Tool

Unit 5 — JavaFX & UI 5.1 Intro to JavaFX · 5.2 Your First JavaFX Window · 5.3 Layouts — VBox & HBox · 5.4 Layouts — GridPane & BorderPane · 5.5 Basic Controls · 5.6 Event Handling · 5.7 Styling with CSS · 5.8 FXML & Scene Builder Intro · 5.9 FXML — Wiring Controllers · 5.10 Observable Properties & Binding · 5.11 ListView & TableView · 5.12 Dialogs & Alerts · 5.13 Animation Basics · 5.14 Building a Mini App · 5.15 Unit 5 Review & Course Wrap-Up


Features

🎓 Learning System

  • 75 fully authored lessons across 5 units — all available from day one, no paywalls or drip releases
  • Five-phase lesson structure on every single lesson, no exceptions — Learn It With Me → See the Code → Code It With Me → Challenge → Fun Facts & Trivia
  • Voice-first content — the explanation itself is written as Java-chan teaching, not a neutral textbook paragraph with her commentary appended
  • Click-to-pin split screen (Phase 1) — students choose which sub-topic to open first instead of reading top to bottom; each pin files into the Journal
  • Persistent cross-lesson Journal — every sticky note a student ever pins is saved and browsable independently of any lesson
  • Contextual hint escalation — hint appears at 2 wrong attempts, solution unlocks at 5
  • Two Phase 3 modes — fill-in-the-blank with answer-list checking for syntax-recall lessons; real execution with stdout comparison for coding lessons
  • Built-in in-browser Java interpreter — write and run real Java with no server, no API, and no installation. 233 tests passing. See INTERPRETER.md for the full scope
  • Global Java Sandbox — a floating code scratchpad available on every screen, completely outside any lesson context — no grading, no judgment, just free-form execution
  • Hover glossary — shared keyword tooltips across the app plus per-lesson overrides for anything unique to that lesson's example
  • Inline emphasis system — four distinct typographic treatments for vocabulary, warnings, key ideas, and trivia inside lesson prose (see The Geronimo Stilton Effect below)

🎮 Progression & Rewards

  • XP system — earn XP on lesson completion; bonus XP for first-attempt success and hint-free runs
  • 10 levels — 100 XP per level, with a persistent progress bar
  • Level-gated cosmetics — odd levels unlock a new app theme; even levels unlock outfit choices
  • localStorage persistence — no account needed, progress is saved in the browser automatically

🎨 The Shop

The shop has three sections. Everything is live and unlockable — no locked previews.

App Themes (equippable backgrounds):

Level Item Style
1 Terminal Black 🖤 The classic void
3 Sakura Study 🌸 Cherry blossom dark
5 Neon Night Compile 🌃 Late-night blue
7 Platform at Dusk 🚉 Train pulling in, golden light, day fading
9 Golden Hour Debug 🌇 Amber sunset

Character Outfits (equippable; all 12 ship with full 6-expression sprite art):

Level Outfits Vibe
1 Classic Hoodie 🧡 Her signature look, always equipped
2 Casual Hoodie 🧥 · Barista ☕ Off-the-clock hoodie, or apron + Java-logo latte art
4 School Uniform 🎀 · Sports Day 🏃 Sailor-collar edition, or track jacket + ponytail
6 Magical Girl Debugger 🪄 · Off The Clock 🌞 Gold robe with glowing { } staff, or a relaxed sundress
8 Streetwear Hacker 🕶️ · Winter Coat 🧣 All black with green cuffs, or scarf-and-earmuffs winter wear
10 Legendary Kimono 👘 · Cozy Homewear 👕 · Casual Streetwear 🧢 Three ways to celebrate making it

Downloadable Wallpapers (save to your phone or desktop):

Level Wallpaper Vibe
1 Sakura Study 🌸 Java-chan under a cherry blossom tree, textbook in hand
3 Neon Night Compile 🌃 Late-night session vibes — city glow, code scrolling
5 Platform at Dusk 🚉 Train pulling in, golden light, the day fading
6 Morning Brew ☕ Café window, early morning, warm steam rising
7 Golden Hour Debug 🌇 · Convenience Store Night 🏪 The build passed at sunset — or a warm konbini glow
8 Rainy Afternoon Library 📚 Velvet armchair, rain on tall windows, warm lamp light
9 Track Champion 🏆 · Beach Day 🏖️ Victory-lap confetti, or sun and sand
10 Winter Hot Chocolate ❄️ Blue-white cold outside, warm amber inside, fairy lights

The design rule for every wallpaper: Java-chan belongs in warm worlds. Golden light, lived-in spaces, and ordinary moments that feel like home. When the world is cool, she's the warmth inside it.

✨ Character & Expressions

Java-chan has 7 distinct expression states that fire contextually throughout lessons:

State Trigger
idle Default state — also shown while explaining code in Phase 1
idle-sleep 45 seconds of no interaction — she dozes off and wakes on the next click or keypress
thinking Hint mode; waiting for input
happy Wrong answer, early attempts — a gentle "good try"
sad Repeated wrong attempts
surprised Correct answer
domain A flawless, hint-free answer — triggers the fullscreen Domain Expansion overlay

Each equipped outfit has its own full set of matching sprites — swapping outfits changes Java-chan's entire look, not just a filter.

Domain Expansion fires on a perfect answer: a radial glow burst, her sprite front and center, the dialogue line, and a "tap anywhere to continue" prompt.

The Geronimo Stilton Effect

Lesson prose can tag words inline, and each tag renders as a distinct typographic event:

Tag Meaning Treatment
[[term:...]] New vocabulary, first appearance Rounded display font + hand-drawn wavy underline
[[warn:...]] Gotchas, common mistakes Gold, bold, larger, with a ⚠ mark
[[key:...]] The one idea worth remembering Pink, bold, with a highlighter-marker stroke behind it
[[fun:...]] Trivia / lighter aside Purple, italic, stamped in at a slight tilt with a ✨

All four pop in on mount and give a small hover bounce. prefers-reduced-motion drops the animation while keeping color/font/icon distinctions intact.

👯 Meet My Sisters

A family-photo rail on the home page linking to every sibling Chan app in the studio — Python-chan, C++-chan, Rust-chan, Go-chan, Kotlin-chan, and C#-chan — each with its own accent color, glyph badge, and one-line tagline.

🎵 Background Music

A looping background track plays across the whole app, composed by Aaron Felix J. A pill in the top bar lets students mute it or adjust the volume; the setting is remembered between visits.


Roadmap

Phase 1 ✅ — Complete

  • All 75 lessons written around the five-phase engine and voice-first content
  • Phase 1 rebuilt as a click-to-pin split screen across all 75 lessons, with the persistent Journal
  • Hover glossary and inline emphasis system across all lesson prose
  • Full cosmetics system — 5 app themes, 12 outfits (all with real sprite art), 10 downloadable wallpapers
  • XP/leveling, shop, expressions, Domain Expansion
  • Meet My Sisters cross-studio rail, background music with volume control

Phase 2 — In Progress 🔨

2A — The Java Interpreter ✅ (Milestone 1 complete)

The in-browser Java interpreter is built and shipped. Milestone 1 (the full scripting subset) is complete with 233 passing tests. The Global Sandbox UI (Milestone 2) is the active work item — the floating scratchpad panel available on every screen.

After the sandbox ships, the interpreter roadmap continues open-endedly: object system (classes, inheritance, super, instanceof), collections (ArrayList, HashMap), and additional standard library methods as students hit them in the sandbox. See INTERPRETER.md for the full milestone plan.

2B — Backend & Accounts

  • PostgreSQL + Express API backend
  • User accounts and cross-device sync (the store already has a _resetForMigration hook and storage adapter pattern ready for this)
  • Instructor view: class-wide completion dashboards
  • Suite-wide rollout of the five-phase engine to sibling Chan apps, pending validation here

Tech Stack

Layer Choice Why
Frontend React 19 + Vite 8 Fast HMR, ES modules, modern JSX transform
Styling Plain CSS + Framer Motion 12 No CSS framework overhead; animations via Motion
State Zustand 5 Minimal boilerplate, works with persist middleware out of the box
Data JSON files + localStorage Zero backend for Phase 1; data adapter ready for Phase 2
Routing React Router v7 File-level page components
Interpreter Custom tree-walking Java evaluator (src/interpreter/) Zero dependencies, runs entirely in browser, covers the CS22301 Java subset
Hosting Vercel Zero-config deployment

Credits & Assets

Character Art: Java-chan's sprites were generated using AI tools and hand-curated for expression consistency by @albertofelix08. All character designs are proprietary to Omega Mu Gamma Studio.

Music: Java-chan's background music was composed by Aaron Felix J, Omega Mu Gamma Studio's Music Director.


Part of Omega Mu Gamma Studio

Java-chan is one of the flagship tools from Omega Mu Gamma Studio — a student-built suite of open-source engineering and CS education tools.

The Chan series (anime-guided programming tutors):

Tool Language
Java-chan Java (CS22301) — this repo
PlusPlus-Chan C++
Python-Chan Python
Rust-Chan Rust
Go-Chan Go
Sharp-Chan C#
Kotlin-Chan Kotlin

Other studio tools:

Tool What it does
SeeDS 3D data structure visualizer and bug detector
KMapX Boolean expression simplifier (Quine–McCluskey)
EG Suite 3D Engineering Graphics simulator for ME22201
GateLab 2D digital logic schematic playground (CS22303)
ArchVisor Computer Organization & Architecture platform (CS22304)
ThermOS Interactive modules for Engineering Thermodynamics (ME22301)
BlockBeats Block-based music production and DAW tutor

License

This project is licensed under the PolyForm Noncommercial License 1.0.0.

You may use, modify, and share this software for noncommercial purposes only — personal study, educational use, and use by noncommercial organizations. Commercial use is prohibited without a separate commercial license from Omega Mu Gamma Studio.

The character art, sprites, and visual assets for Java-chan are also proprietary. They may not be reproduced, redistributed, or used outside this project without explicit permission.

For commercial licensing inquiries, contact Omega Mu Gamma Studio.

Found a security issue? See SECURITY.md rather than opening a public issue. For contribution guidelines, see CONTRIBUTING.md and our Code of Conduct.

© 2026 Omega Mu Gamma Studio

About

An anime-guided Java tutor for CS22301 — learn through working code, broken code, and hands-on practice with an expressive character who reacts to your progress.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages