ATLAS
Everything at once, for readers who already know what they want.
- Web
- 19
- Desktop
- 5
- Stations
- 30
Install
bun add @wess/atlas
Package constellation
Choose a module to open its canonical field reference.
No package matches that coordinate.
Desktop crates
The other half of Atlas: a Rust workspace on gpui and guise. Five layered crates behind one facade, and gpui confined to the top of the stack.
Every station
The survey has 30 sections. Reading them in order spoils the walk, which is the only reason they are numbered out of it.
01
You are about to build something
Fork
05
Does it wait on anything?
Fork
07
Who is calling it?
Fork
12
How do they prove it?
Fork
14
What shape is it?
Fork
16
The single-window tool that waits
Plate
19
What does it need beyond pages?
Fork
22
Two boilerplates, one repository
Fork
26
The API with accounts
Plate
28
The workspace
Plate
31
What does it open?
Fork
33
How many at once?
Fork
38
The API behind single sign-on
Plate
41
The agent service
Plate
44
The client
Plate
47
The full-stack app
Plate
53
The open API
Plate
59
The full-stack app with an admin
Plate
61
The single-window tool
Plate
64
The edge
Plate
70
What feeds the lists?
Fork
77
The identity provider
Plate
83
The realtime app
Plate
86
The workspace with a keychain
Plate
88
The command-line tool
Plate
92
The navigator
Plate
95
The API with social login
Plate
100
Putting it online
Appendix
101
Signing and shipping
Appendix
102
Handing it to an agent
Appendix
First route
Open the full quick startimport { defineConfig, env } from "@wess/atlas/config"
import { connect } from "@wess/atlas/db"
import { get, json, serve } from "@wess/atlas/server"
const config = defineConfig({ port: env("PORT", { parse: Number, default: "3000" }) })
const db = connect({ driver: "sqlite", path: "./app.db" })
serve({ port: config.port, routes: [get("/health", (c) => json(c, 200, { ok: true }))] })
The system stays shallow.
Atlas wraps Bun and the web platform. It does not make a second runtime underneath them.
- Compose
- Each package works alone. Pipes and shallow sibling imports connect the pieces.
- Keep data immutable
- Transforms return new values. Functions replace stateful class hierarchies.
- Use Bun directly
- Servers, SQL, Redis, passwords, files, and environment loading stay Bun-native.