steid

@jamesgill /

steid/plans/ROADMAP.md
2.9 KBCode·Blame·Raw
1# Steid
2
3The source of truth for everything in a developer's or organization's portfolio.
4
5## Vision
6
7Steid is a developer/org identity and portfolio platform. It's where you host your
8code, your writing, your projects — everything you do, in one place, under your
9control.
10
11Git repos are a core feature, not the whole product. Blogs, documentation, project
12showcases, and anything else a dev or org wants to present lives here too.
13
14Personal-first, but organizations can collaborate on it.
15
16**What makes it different from Gitea/Forgejo:** those are GitHub clones scaled down.
17Steid is portfolio-first — the profile page is the product, and repos are one kind of
18thing that appears on it. That framing should win any tie-break.
19
20## Core Principles
21
22- **Fast** — Rust, minimal overhead
23- **Reliable** — correct first, then optimize
24- **Personal-first** — great for a single dev, scales to orgs
25- **Identity-centric** — everything is built around who you are (user/org); auth is
26 designed in from day one, not bolted on
27
28## Stack
29
30Starting intent, not settled decisions. Each one gets a record in
31[decisions/]decisions/ when it's actually made and confirmed in this build.
32
33| Concern | Intent |
34|---|---|
35| Web framework | Topcoat (tokio-rs) |
36| Git protocol | shell out to the `git` binary |
37| SSH transport | embedded russh server |
38| Crate layout | single crate |
39| Ownership | personal org owns repos |
40| Database | SQLite via sqlx |
41
42Architecture and conventions: [architecture.md]architecture.md.
43
44## Milestone Ladder
45
46This repo is a from-scratch rebuild on Topcoat. Milestones 1–4 were built and
47verified end-to-end in a previous attempt — see [progress.md]progress.md for what
48that proved. Treat that code as reference, not as a baseline.
49
50| # | Milestone | Status |
51|---|---|---|
52| 0 | **Skeleton** — Topcoat app boots, config, one page, SQLite wired | nearly done |
53| 1 | **Identity** — users, orgs, memberships, sessions, registration policy | not started |
54| 2 | **Repo model** — repo records + bare repos on disk | not started |
55| 3 | **Git over SSH** — clone and push via embedded russh | not started |
56| 4 | **SSH key auth + authz** — pubkey → user, membership-gated push/clone | not started |
57| 5 | **Repo browsing** — tree, blob, commit log in the web UI | not started |
58| 6 | **Portfolio** — blogs, pages, project showcases | not started |
59| 7 | **Collaboration** — issues, PRs, review | not started |
60| 8 | **API / federation** | not started |
61
62Milestones 5–8 have never been built. Everything below 5 has a working reference
63implementation to crib from.
64
65**One numbering scheme.** The previous attempt kept two (a roadmap ladder and a
66separate build log with conflicting numbers) and they drifted apart within three
67milestones. If the plan changes, edit this table — don't start a second list.
68
69Milestone 0 is broken into steps in [current.md]current.md.