Project Structure & Deployment Model
What you commit, what is generated, and what actually runs in production in Titan Planet
Overview
Titan Planet enforces a strict separation between:
- source code (what you write and commit)
- generated build artifacts (local-only)
- final production output (what actually runs)
This separation is enforced by the .gitignore and is essential to understanding what matters in production.
Development Structure (What You See While Working)
This is the full structure you see during development.
Not everything you see here is committed or deployed.
Some of these files exist only to produce the final binary.
What You Commit to Git (Source of Truth)
These files are committed and represent your real source code.
This is the only code you maintain long-term.
Generated & Ignored Files (Never Committed)
The following files are automatically generated and ignored by Git:
server/routes.json
server/action_map.json
server/actions/*.jsbundle
server/titan/*.jsbundle
server/target/**These are build outputs, not source code.
They are recreated on every build and must never be edited manually.
Why These Are Ignored
- They are deterministic
- They depend on the local build environment
- They are embedded into the final binary
- They do not represent developer intent
What Actually Runs in Production
After running:
titan buildTitan produces one executable.
This binary is the production server.
Learn More About Production
How to deploy
Dive deeper into how production runtime works, deployment strategies, and configuration best practices.
Deploy on Railway / Render (GitHub → Production)
Titan projects ship with a fully production-ready Dockerfile. Railway and Render automatically detect it and handle the entire build and runtime process.
What Does NOT Exist in Production
These never ship to production:
node_modules/app/titan/.jssource files.jsbundlefilesroutes.jsonaction_map.jsonserver/target/- Build tooling
Production does not contain JavaScript files or a JS runtime server.
Mental Model (Very Important)
Development is file-heavy.
Production is binary-only.
- JavaScript exists only at build time
- Rust owns runtime execution
- The binary is self-contained
- Deployment is intentionally boring and predictable
Summary
- Write & commit: JavaScript source + Titan tooling
- Ignore: generated routing, bundles, and Rust outputs
- Run in production: one native binary (
titan_server)
Titan Planet’s structure removes runtime ambiguity and makes production deployment as simple and reliable as possible.