Titan Planet Logo

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.

app.js
hello.js
package.json
Dockerfile
.dockerignore
.gitignore
.env.local

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.

Dockerfile
package.json
.dockerignore
.gitignore

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 build

Titan produces one executable.

titan-server

This binary is the production server.

Learn More About Production


What Does NOT Exist in Production

These never ship to production:

  • node_modules/
  • app/
  • titan/
  • .js source files
  • .jsbundle files
  • routes.json
  • action_map.json
  • server/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.

On this page