https://github.com/schiste/aetrain
Interactive European rail trip planner — built in the open.
https://github.com/schiste/aetrain
Last synced: 6 days ago
JSON representation
Interactive European rail trip planner — built in the open.
- Host: GitHub
- URL: https://github.com/schiste/aetrain
- Owner: schiste
- License: agpl-3.0
- Created: 2026-05-07T16:07:59.000Z (about 2 months ago)
- Default Branch: main
- Last Pushed: 2026-05-21T16:51:55.000Z (about 1 month ago)
- Last Synced: 2026-05-21T22:12:49.758Z (about 1 month ago)
- Language: Rust
- Size: 62.5 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Security: SECURITY.md
Awesome Lists containing this project
README
# Aetrain
> Interactive European rail trip planner — built in the open.
[](./LICENSE)
[](#project-status)
**Aetrain is an early-stage build.** _A clear pitch goes here — see the comment above._
## Project status
Early Stage 1 build-out, in public. The original legacy prototype now lives at
`apps/web/prototype/index.html`, and `apps/web/` itself now serves the
modularized version of that same proof of concept while shared Rust crates and
generated static datasets take shape underneath it. Expect breaking changes;
APIs, data contracts, and repo structure are intentionally still moving.
The architectural direction is now explicit:
- `Rust` is the shared performance-critical core
- `apps/web` is a thin browser surface around generated datasets and the core
- future `apps/ios` and `apps/android` are intended to be native clients, not
web wrappers
The staged technical decisions are documented in
[ARCHITECTURE.md](./ARCHITECTURE.md). Expect that document to evolve as the
web renderer, worker boundary, and runtime dataset contracts harden.
## Quick start
```sh
# Run the shared Rust workspace checks
cargo test
# Fetch or refresh the Stage 1 sources, build the selected target, and sync
# the runtime debug projection into the web app
tools/pipeline/run-stage1.sh
# Browse the current modularized web app (any static server works)
python3 -m http.server --directory apps/web 8080
# then open http://localhost:8080/
```
The web app is now split into modules, but it still contains a transitional
`src/legacy/` implementation while the long-term renderer, worker, and wasm
boundaries are being introduced. The Stage 1 pipeline now manages:
- raw source cache state under `data/cache/`
- target-scoped canonical artifacts under `data/build/stage1//canonical/`
- a compact runtime projection under `data/build/stage1//runtime/web/`
- a runtime `web-debug` projection under `data/build/stage1//runtime/web-debug/`
- optional sync into `apps/web/public/data/production/`
## Repository layout
```
aetrain/
├── apps/
│ ├── web/ # current web surface, future high-performance browser app
│ ├── ios/ # future native iOS client
│ ├── android/ # future native Android client
│ └── chatgpt/ # secondary assistant surface, never product truth
├── ARCHITECTURE.md # public architecture and staged technical decisions
├── data/ # source manifests, overrides, cache, build artifacts
├── packages/
│ ├── rust/ # shared engine: domain, routing, parsing, normalization
│ └── ts/ # thin browser-only glue around the Rust core
├── tools/ # operator-facing utilities and orchestration
├── docs/ # architecture notes and long-form repo documentation
├── scripts/ # compatibility shims for relocated tools
├── LICENSE # AGPL-3.0
├── CONTRIBUTING.md
├── CODE_OF_CONDUCT.md
└── SECURITY.md
```
The detailed folder intent is documented in the per-directory `README.md`
files throughout the repo.
## Contributing
We welcome contributions of all sizes. Please read [CONTRIBUTING.md](./CONTRIBUTING.md)
before opening a pull request, and abide by our [Code of Conduct](./CODE_OF_CONDUCT.md).
To report a security issue privately, see [SECURITY.md](./SECURITY.md).
## License
Aetrain is licensed under the [GNU Affero General Public License v3.0](./LICENSE).
The AGPL's network-use clause means: if you run a modified version of Aetrain
as a network service, you must offer the source of your modifications to its
users. We chose AGPL deliberately — see CONTRIBUTING.md for context.