A terminal-based learning system for practicing Python, Git, JSON, and code review through story-driven missions and deliberate practice.
Dojo Ascension is not just a coding tutorialโit's a learning operating system that combines:
- Mission-based progression โ Complete 10+ interconnected challenges
- Competency tracking โ Master specific skills (Python, Git, JSON, Architecture, Code Review)
- Reflection journal โ Optional Uta Hagen systems-thinking questions after each mission
- Persistent saves โ All progress stored in human-readable JSON
- Cross-disciplinary context โ Each mission connects code to philosophy, economics, and martial arts
Code is not syntaxโit's a framework for thinking about systems. By mastering these crafts, you learn to:
- Build resilient digital infrastructure (Git, version control, deployment)
- Design cooperative systems (OOP, APIs, data interoperability)
- Hold systems accountable (Code review, testing, documentation)
Frontends and clients The Dojo Ascension repo defines a data and logic layer for a learning game:
Missions are stored as JSON (missions.json and missions/*.json).
Player progress and journal entries are stored as JSON save files.
The current client is a terminal / VS Code experience written in Python.
We explicitly invite other frontends (RPG, web, mobile, etc.) that:
Consume the same mission schema and skill / honor model.
Preserve the educational intent of each mission.
Respect the project license (see LICENSE).
If you are building a new frontend (for example, an RPG Maker version), open an issue to coordinate on data formats and progression so we stay interoperable.
Use in fundraisers and ethical businesses We explicitly welcome:
Nonโprofits using Dojoโderived games in fundraisers.
Ethical solarpunk businesses building commercial games or tools that teach with Dojo missions.
If you distribute software that incorporates Dojo code, you must follow the GPLโ3.0 license (keep derivative code open-source, provide source to users).
If you want to discuss special arrangements or dual-licensing for a specific project, open an issue or contact the maintainers.
- Python 3.8+
- Git
- 2GB free disk space
# 1. Clone this repo
git clone solarpunkopensourcelaboratory/dojo-ascension
cd dojo-ascension
# 2. Install dependencies
pip install -r requirements.txt
# 3. Launch the Dojo
python dojo_classroom.pyWhen you run the game, you'll be prompted to enter your name. The system will:
- Check your environment (Python version, Git installation, disk space)
- Create a save file at
~/.dojo_save.json - Optionally create a journal at
~/.dojo_journal_data.json
If you want to help with missions or content:
python -m unittest discover -s tests
python validate_missions.pyThis gives you a quick sanity check before you share changes. If you add or edit missions, make sure the validator stays green and the mission index remains consistent.
Before sharing a new mission, run:
python validate_missions.pyIt validates mission files and the mission index for missing required fields and basic schema issues.
If you want a single text file you can share with other collaborators or AI tools, run:
python refresh_repo_bundle.pyThis regenerates repo_bundle.txt from the current repository contents.
On a shared machine, keep each participant's progress separate by setting a per-user data directory before launching the game:
$env:DOJO_DATA_DIR = "$HOME\.dojo-ascension\alice"
python dojo_classroom.pyYou can also override the individual files directly with DOJO_SAVE_FILE and DOJO_JOURNAL_FILE.
| # | Mission | Skill | Philosophy |
|---|---|---|---|
| 1 | System Grounding | Git | Wu Wei: Your tools become extensions of your mind |
| 2 | Variables & Data Lineage | Python | Genealogy: Tracing lineage reveals identity |
| 3 | JSON โ Data Language | JSON | Cornel West: Justice is cooperation in code |
| 4 | Functions & Jeet Kune Do | Python | Bruce Lee: Maximum efficiency with minimum effort |
| 5 | Git โ Journalistic Integrity | Git | Activism: Git is an immutable ledger of truth |
| 6 | Git โ Branching & Merging | Git | Wing Chun: Deflect and redirect, don't oppose |
| 7 | APIs & Digital Journalism | Architecture | Freedom of Information: Query the source directly |
| 8 | File I/O โ Institutional Memory | Python | Bushido: Legacy ensures society can learn |
| 9 | OOP โ Sociological Modeling | Architecture | Theatre: Roles and Actors in a cooperative |
| 10 | Code Review โ Gentle Art | Review | BJJ: Testing each other's code before production |
- Start Next Mission โ Play the next incomplete mission in sequence
- Choose Specific Mission โ Jump to any mission you want
- View Progress Dashboard โ See your skill levels and rank
- Reflection Journal โ Review past journal entries and your practice chain
- VSCode Integration Guide โ Learn how to pair missions with VSCode
- Save Progress โ Manually save your state
- Exit โ Quit (progress is auto-saved)
Each mission teaches a concept through:
- Philosophical Anchor โ Connect code to a real-world principle
- Economic Parallel โ Understand the "cost" and "value" of the pattern
- Technical Concept โ Learn the actual code syntax
- Challenge โ Answer a question or write code
- Reflection (optional) โ Answer Uta Hagen's 9 systems-thinking questions
- Honor Points โ Earned by completing missions (20-30 per mission)
- Ranks โ Initiate โ Apprentice โ Practitioner โ Adept โ Expert โ Co-Architect
- Skills โ Track mastery: Python, Git, JSON, Architecture, Code Review (0-5 levels each)
- Practice Chain โ Consecutive days of journaling (rewards deliberate practice, not perfection)
Your progress is stored in two JSON files:
{
"name": "David",
"honor": 150,
"completed": ["git_system_grounding", "python_variables"],
"skills": {
"python": 2,
"git": 3,
"json": 1,
"architecture": 0,
"review": 0
},
"last_save": "2026-06-22T18:40:02Z"
}{
"2026-06-22": {
"timestamp": "2026-06-22T18:42:15Z",
"mission_id": "python_variables",
"mission_title": "Variables & Data Lineage",
"player_rank": "Apprentice",
"answers": {
"Who am I in this circumstance?": "A programmer learning to think systematically...",
"What do I want?": "To understand how data flows through systems..."
...
}
}
}Pair each mission with VSCode for hands-on learning:
- Install VSCode
- Install extensions:
- Python (by Microsoft) โ Run and debug Python code
- GitLens โ View Git history and blame
- Prettier โ Auto-format JSON
- Python Indent โ Smart indentation
# In VSCode terminal:
python dojo_classroom.py
# In another VSCode editor:
# 1. Complete a mission in the terminal
# 2. Open ~/dojo_demo.json or other files created by missions
# 3. Experiment and modify them
# 4. Run code with F5 to see results- Missions 1-4 โ Python Quick Start
- Missions 5-6 โ Source Control
- Missions 7-8 โ Debugging
- Missions 9-10 โ Testing
Missions are stored in missions.json as pure data:
{
"id": "git_system_grounding",
"number": 1,
"title": "System Grounding",
"philosophy": "Like Tai Chi...",
"economics": "Infrastructure is...",
"tech_concept": "The terminal...",
"challenge": "Type the command to clone a repository.",
"answer": "git clone",
"skill": "git",
"honor_base": 20
}This means:
- โ Non-programmers can contribute missions (educators, subject-matter experts)
- โ Translators can localize content without touching Python
- โ Mission packs can be shared and loaded dynamically
- โ Save files are future-proof (mission IDs never change)
dojo_classroom.pyโ Main game loop, mission loading, player management (v5.0 Dynamic Engine)missions.jsonโ All mission data (externalized, data-driven)~/.dojo_save.jsonโ Player progress (persistent)~/.dojo_journal_data.jsonโ Reflection entries (persistent)
- Phase 1 (Current) โ 10 core Python/Git/JSON/CodeReview missions
- Phase 2 โ
dojo_ascension.pyโ Advanced multi-week curriculum (Linux, security, quant) - Phase 3 โ Mission packs: Journalism, Genealogy, Governance, AI Literacy
- Phase 4 โ Community: Shared mission packs, classroom dashboards, instructor tools
See CONTRIBUTING.md for the full guide. Quick start:
- Fork the repo
- Add your mission(s) to
missions.json - Test locally
- Submit a pull request
- Bug fixes and feature requests welcome
- See CONTRIBUTING.md for development setup
v5.0 (Current)
- โ Dynamic mission engine (missions.json)
- โ Competency-based ranking
- โ Uta Hagen reflection journal (optional)
- โ Dashboard with skill specialization
- โ Persistent saves (JSON)
- ๐ Mission packs (Journalism, Genealogy, Governance)
- ๐ Classroom mode (instructor dashboard)
GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. https://fsf.org/ Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
Preamble
The GNU General Public License is a free, copyleft license for software and other kinds of works.
The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software, some kind of works that we are made to share by their authors; it also applies to any other program released this way. You can also use it to follow these terms in your own programs.
When we use your software, we must adhere to the spirit of cooperation and transparency that defines the open-source community.
[... The remainder of the standard GPL-3.0 text is available at: https://www.gnu.org/licenses/gpl-3.0.txt ...]
Built by and for the SolarPunk community. Inspired by:
- Uta Hagen's acting techniques (systems thinking)
- Cornel West's philosophy (public justice)
- Bruce Lee's martial philosophy (efficiency)
- Estonia's e-governance model (resilience)
- Brazilian Jiu-Jitsu (collaborative learning)
Let us never stop learning from Galileo. โ SolarPunk Opensource Laboratory