Learn Python, Git, and systems thinking through play, mentorship, and ecology — no prior experience required.
New here? → Start a good first issue · Read the Contributing Guide · Open in a Codespace (zero local setup)
“The world is already at your fingertips. You are here to find your voice.”
Welcome to the Dojo. This is not just a codebase or a traditional programming class. This is a sanctuary for the curious, the artists, the philosophers, and the inner child eager to understand how the digital world works.
Whether you are a seasoned traveler recovering from a difficult learning journey, or someone stepping into a terminal for the very first time, you belong here. We do not learn code to feed the machine. We learn code so that you can apply these instruments to your own arts, hobbies, and passions.
Here, you will learn Python, Linux, and systems thinking through play, mentorship, and ecology. Your wings are yours to open. Let us provide the updraft.
No prior experience is required. Follow these three steps to step onto the mat and begin your first mission.
Open your computer’s terminal and copy-paste this command to bring the Dojo to your local machine:
git clone https://github.com/solarpunkopensourcelaboratory/dojo-ascension.git
cd dojo-ascension
Every explorer needs the right tools. Run this command to unpack your gear securely:
pip install -r requirements.txt
You are ready. Awaken the engine and begin your journey:
python dojo_classroom.py
(When the screen lights up and the Dojo welcomes you, take a breath. You have just taken your first step into a larger world.)
Inspired by the greatest mentors—from the theatre stage to the realms of animation—our ultimate goal is to raise the next generation of formidable, responsible, and informed creators. We believe the strongest future is built by humans and machines intelligent enough to choose what they want, in harmony with the planet that sustains us.
See the one-page public promise and measurable outcomes in FUNDING_ONE_PAGER.md.
Key outcomes we track:
Why organizations adopt it:
The Dojo Ascension repo defines a data and logic layer for a learning game:
missions.json and missions/*.json)dojo_classroom.py)dojo_web.html) — NEW!We explicitly invite other frontends (RPG, mobile, desktop, etc.) that:
If you are building a new frontend, open an issue to coordinate on data formats and progression so we stay interoperable.
Use in fundraisers and ethical businesses
We explicitly welcome:
Dojo Ascension is designed as mission-aligned digital literacy infrastructure:
This makes the project useful for:
No installation required. Just download and open:
# Clone the repo
git clone https://github.com/solarpunkopensourcelaboratory/dojo-ascension.git
cd dojo-ascension
# Open in your browser
open dojo_web.html
# or double-click dojo_web.html in your file explorer
Features:
For a deeper, reflective experience with optional journal entries:
Prerequisites:
Installation:
# 1. Clone this repo
git clone https://github.com/solarpunkopensourcelaboratory/dojo-ascension
cd dojo-ascension
# 2. Install dependencies
pip install -r requirements.txt
# 3. Launch the Dojo
python dojo_classroom.py
First Time Setup:
When you run the game, you’ll be prompted to enter your name. The system will:
~/.dojo_save.json~/.dojo_journal_data.jsonShared Workstation Tip:
On a shared machine, keep each participant’s progress separate:
export DOJO_DATA_DIR="$HOME/.dojo-ascension/alice"
python dojo_classroom.py
| # | 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 |
Each mission teaches a concept through:
Your progress is stored in JSON files (shared between both frontends):
~/.dojo_save.json (Player State){
"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"
}
~/.dojo_journal_data.json (Reflection Entries — Terminal only){
"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:
# 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 are stored in missions/missions.json as pure data:
{
"id": "git_system_grounding",
"number": 1,
"title": "System Grounding",
"philosophy": "Like Tai Chi...",
"economics": "Infrastructure is...",
"lesson": "The terminal...",
"challenge": "Type the command to clone a repository.",
"answer": "git clone",
"answertype": "contains",
"skill": "git",
"honorreward": 20
}
This means:
Terminal Version:
dojo_classroom.py — Main game loop, mission loading, player management (v5.0 Dynamic Engine)missions/missions.json — All mission data (externalized, data-driven)~/.dojo_save.json — Player progress (persistent)~/.dojo_journal_data.json — Reflection entries (persistent, optional)Browser Version:
dojo_web.html — Standalone single-page app (HTML/CSS/JavaScript)dojo_ascension.py — Advanced multi-week curriculum (Linux, security, quant)Use these exact commands:
python newcomer.py
python newcomer.py --play
python newcomer.py installs dependencies, runs tests, and validates missions.python newcomer.py --play does the same and then launches the game.python validate_missions.py
This checks for missing required fields, type mismatches, and schema issues.
python -m unittest discover -s tests
Every PR must pass:
python -m unittest discover -s testspython validate_missions.pyFor mission/content PRs, also complete the Definition of Done in .github/pull_request_template.md.
If you want a single text file for sharing with collaborators or AI tools:
python refresh_repo_bundle.py
This regenerates repo_bundle.txt from the current repository contents. For fast AI orientation, also see llms.txt and CONTEXT.md.
Use these canonical, low-token entry points when working with agentic tools:
Public Pages URLs for URL-based tools:
For cohort reporting and grant evidence:
python export_learner_data.py --data-dir ~/.dojo_ascension --format json
python measure_retention.py --data-dir ~/.dojo_ascension
These commands aggregate anonymized learner outcomes from local save files.
See CONTRIBUTING.md for the full guide. Quick start:
missions/mission_template.json to draft a missionmissions/MISSION_REVIEW_RUBRIC.mdpython newcomer.pymissions/missions.jsonGood first mission path for non-coders:
Want to build a new frontend (RPG, mobile, web framework, etc.)?
missions/missions.json (or embed them)~/.dojo_save.json format)validate_answer() in dojo_classroom.py)We credit everyone who contributes code, missions, translations, accessibility, docs, facilitation, or review. See CONTRIBUTORS.md.
v5.0 (Current)
Dojo Ascension is intentionally small, legible, and inexpensive to maintain.
Funding primarily supports maintenance, accessibility, curriculum expansion, pilot operations, and community stewardship.
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.
The GNU General Public License is a free, copileft license for software and other kinds of works.
When we use your software, we must adhere to the spirit of cooperation and transparency that defines the open-source community.
[Full GPL-3.0 text available at: https://www.gnu.org/licenses/gpl-3.0.txt]
Built by and for the SolarPunk community. Inspired by:
Let us never stop learning from Galileo. — SolarPunk Opensource Laboratory