Skip to content

Commit 8b0c38e

Browse files
authored
docs(docs): rewrite for v0.3.0 MVP + dark-first palette (#178)
* docs(docs): rewrite for v0.3.0 MVP + dark-first palette (closes #177) The docs site still read like pre-alpha — home lead with BYOK AI (Phase 4, not shipped), the webapp i18n strings said "Phase 0 — Bootstrap / Pre-alpha", self-hosting/runtime-profiles.md claimed "Phase 0 has no entities or migrations yet". None of that is true after today's v0.3.0 tag. Changes: - docs/index.md — new hero narrative leading with what ships today in v0.3.0 (auth, orgs, keys + translations + ICU, FTS, import/export, API keys/PATs). Moves BYOK AI into a "coming in v0.4.0" section. New capability grid. Roadmap table marks Phases 0–3 as ✅ shipped. - docs/quickstart.md — new 10-minute path from `docker compose up` to exported i18next JSON. Walks sign-up → verify → org → project → import → edit → export. Troubleshooting table for the four most common snags. - docs/_config.yml — switch `color_scheme` to `dark` (just-the-docs built-in). Aligns with developer-docs muscle memory (Stripe, Cloudflare, Tailwind all default dark). Description updated to reflect v0.3.0. - docs/self-hosting/runtime-profiles.md — unstick Phase 0 references; enumerate the four Flyway migrations that actually exist on master; bump the boot-time log-line version to 0.3.0. - docs/llms.txt — add Quickstart + home + all Phase 1–3 API/product pages that were missing from the hand-maintained index. Update the blurb at the top to reflect v0.3.0 scope. - docs/llms-full.txt — regenerated via scripts/gen-llms-txt.sh (picks up the new home + quickstart content). - webapp/src/i18n/en.json — `app.phase.current` "Phase 0 — Bootstrap" → "Phase 3 — MVP shipped (v0.3.0)"; `app.status.prealpha` "Pre-alpha" → "Prerelease (0.x)". Strings are not currently rendered anywhere in the UI; this is purely hygiene so the next page that surfaces them reads true. Webapp lint + typecheck + 104/104 tests green. No new env vars, no new compose services, no API surface change, no new ADR. This is pure docs + copy + visual palette. Closes #177 * fix(docs): Liquid-templated internal URLs so lychee resolves them * fix(infra): exclude localhost URLs from lychee (quickstart uses them)
1 parent 7e08c74 commit 8b0c38e

8 files changed

Lines changed: 598 additions & 99 deletions

File tree

docs/_config.yml

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,11 @@
44
title: Translately
55
tagline: Open-source localization & translation management
66
description: >-
7-
Self-hosted, MIT-licensed localization platform. Quarkus + Kotlin backend,
8-
React + Vite webapp, PostgreSQL + Redis + MinIO. Bring-your-own-key AI is
9-
optional; every feature (SSO, SAML, LDAP, Tasks, Branching, Webhooks, CDN,
7+
Self-hosted, MIT-licensed localization platform. Translation keys,
8+
translations, ICU validation, i18next JSON import/export shipping in v0.3.0.
9+
Quarkus + Kotlin backend, React + Vite webapp, PostgreSQL + Redis + MinIO.
10+
Bring-your-own-key AI lands in v0.4.0 — the platform runs end-to-end without
11+
it. Every feature (SSO, SAML, LDAP, Tasks, Branching, Webhooks, CDN,
1012
glossaries, audit) ships free.
1113
1214
url: https://pratiyush.github.io
@@ -16,7 +18,13 @@ baseurl: /translately
1618
remote_theme: just-the-docs/just-the-docs@v0.10.0
1719

1820
# ---- theme options ---------------------------------------------------------
19-
color_scheme: light
21+
# Dark palette by default. just-the-docs ships a light + dark pair; we pick
22+
# dark to match developer-docs muscle memory (Stripe Docs, Cloudflare Docs,
23+
# Tailwind Docs all default dark). A per-user toggle lands with the Phase 5
24+
# webapp-in-docs integration. Visitors who prefer light can pass
25+
# `?color_scheme=light` in the URL for a session-scoped override (handled
26+
# client-side by just-the-docs' toggle script).
27+
color_scheme: dark
2028
heading_anchors: true
2129
search_enabled: true
2230
search:

docs/index.md

Lines changed: 66 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -4,72 +4,96 @@ layout: default
44
nav_order: 1
55
description: >-
66
Translately — open-source, MIT-licensed, self-hosted localization and
7-
translation management. Bring-your-own-key AI, no paywalled premium tier.
7+
translation management. Keys, translations, ICU validation, i18next
8+
JSON import/export shipping in v0.3.0.
89
permalink: /
910
---
1011

1112
# Translately
1213
{: .fs-9 }
1314

14-
Open-source localization & translation management. Self-hosted, MIT, zero paywalled tier. Bring-your-own-key AI.
15+
**The open-source, self-hosted translation management platform for teams that ship in more than one language.** MIT. Every feature free. Keys, translations, ICU validation, JSON import/export shipping today. Bring-your-own-key AI arrives in Phase 4 — the platform runs end-to-end without it.
1516
{: .fs-5 .fw-300 }
1617

17-
[Download docs (ZIP)](downloads/translately-docs.zip){: .btn .btn-primary .fs-5 .mb-4 .mb-md-0 .mr-2 }
18-
[LLM corpus](llms-full.txt){: .btn .fs-5 .mb-4 .mb-md-0 .mr-2 }
19-
[GitHub](https://github.com/Pratiyush/translately){: .btn .fs-5 .mb-4 .mb-md-0 }
18+
[Quickstart]({{ '/quickstart/' | relative_url }}){: .btn .btn-primary .fs-5 .mb-4 .mb-md-0 .mr-2 }
19+
[API reference]({{ '/api/' | relative_url }}){: .btn .fs-5 .mb-4 .mb-md-0 .mr-2 }
20+
[GitHub](https://github.com/Pratiyush/translately){: .btn .fs-5 .mb-4 .mb-md-0 .mr-2 }
21+
[LLM corpus]({{ '/llms-full.txt' | relative_url }}){: .btn .fs-5 .mb-4 .mb-md-0 }
22+
23+
---
24+
25+
## What ships today — v0.3.0 (MVP)
26+
27+
Translately v0.3.0 is the **end of the MVP**: Phases 0 through 3 are complete, the platform works end-to-end, every capability listed here is in `master` and running on a signed release.
28+
29+
| Capability | What it means for you |
30+
|---|---|
31+
| **Email + password auth** with verified accounts, refresh-token rotation, forgot-password + reset | A translator can sign up, verify email, and sign in — nothing else needed to start. |
32+
| **Organizations, projects, members** with OWNER / ADMIN / MEMBER roles, last-owner protection, private-org semantics | Multi-tenant from day one. Each org scoped cleanly; non-members can't enumerate private orgs. |
33+
| **Keys, namespaces, translations** with the full 5-state lifecycle (`EMPTY → DRAFT → TRANSLATED → REVIEW → APPROVED`) | Translators get a sticky-col table with per-cell autosave; admins get namespaces to group keys by feature. |
34+
| **ICU MessageFormat validation** with CLDR plurals, line + col error reporting | Bad ICU is rejected at save time, not discovered in production. |
35+
| **Postgres full-text + trigram key search** | Find a key in a 10k-key project without dragging Elasticsearch into your self-host stack. |
36+
| **i18next JSON import + export** — flat and nested shapes, `KEEP` / `OVERWRITE` / `MERGE` conflict modes, per-row ICU validation | Paste your existing translations in, export them back out. One language per call; multi-language dumps as a scriptable GET. |
37+
| **API keys + Personal Access Tokens** with scope intersection computed on every request | CI pipelines + scripts authenticate with machine credentials; revocation is instant. |
38+
| **Light + dark + keyboard-first UI** — WCAG 2.1 AA, Radix Dialog + focus trap, `prefers-reduced-motion` respected | Accessible out of the box. No gated "enterprise a11y" SKU. |
39+
40+
All of it MIT. All of it free. No paywalled tier exists.
41+
42+
## Coming next — v0.4.0 (Phase 4)
43+
44+
- **Bring-your-own-key AI** — per-project OpenAI / Anthropic / Google / Azure / custom endpoints, envelope-encrypted at rest. **The platform runs end-to-end without this configured.**
45+
- **Machine translation** via the same BYOK layer for non-generative providers.
46+
- **Translation Memory** over `pgvector` + trigram.
47+
- **Async Quartz + SSE** for the bulk-import paths that v0.3.0 ships sync.
48+
49+
[Full roadmap](#roadmap) below.
2050

2151
---
2252

2353
## Documentation by surface
2454

25-
| Surface | What's in it |
55+
| Surface | Start here |
2656
|---|---|
27-
| [Product]({{ '/product/' | relative_url }}) | Walkthroughs of every user-visible flow — app shell, theming, authentication. |
28-
| [API reference]({{ '/api/' | relative_url }}) | OpenAPI spec, scopes, error codes, rate limits, versioning, auth endpoints. |
29-
| [Architecture]({{ '/architecture/' | relative_url }}) | Module map, data model, request lifecycle, multi-tenancy, crypto, ADRs. |
30-
| [Self-hosting]({{ '/self-hosting/' | relative_url }}) | Hardening checklist, operator guides. |
57+
| [Quickstart]({{ '/quickstart/' | relative_url }}) | 10-minute path from `docker compose up` to your first exported JSON. |
58+
| [Product]({{ '/product/' | relative_url }}) | Walkthroughs of every user-visible flow — auth, orgs, keys table, editor, import wizard, export modal. |
59+
| [API reference]({{ '/api/' | relative_url }}) | OpenAPI spec + scope matrix + error catalogue + rate-limit policy + the imports/exports + keys endpoints. |
60+
| [Architecture]({{ '/architecture/' | relative_url }}) | Module map, data model (V1–V4), request lifecycle, multi-tenancy, crypto, ICU, search, ADRs. |
61+
| [Self-hosting]({{ '/self-hosting/' | relative_url }}) | Runtime profiles, dev compose, hardening checklist. Everything an operator needs. |
3162

32-
Every PR ships its docs — see [CLAUDE.md rule #10](https://github.com/Pratiyush/translately/blob/master/CLAUDE.md#hard-rules-non-negotiable) and the [contributing rules](https://github.com/Pratiyush/translately/blob/master/.kiro/steering/contributing-rules.md).
63+
Every PR ships its docs — see [CLAUDE.md rule #10](https://github.com/Pratiyush/translately/blob/master/CLAUDE.md#hard-rules-non-negotiable). Stale docs are worse than missing docs.
3364

34-
## Positioning
65+
## Why Translately
3566

36-
- **MIT, no gated tier.** Every capability — SSO, SAML, LDAP, Tasks, Branching, Glossaries, Webhooks, CDN, custom storage, granular permissions, audit logs — ships free.
37-
- **Bring your own AI.** Per-project provider + key, envelope-encrypted at rest. The platform runs end-to-end with **zero AI configured**.
67+
- **MIT, no gated tier.** SSO, SAML, LDAP, Tasks, Branching, Glossaries, Webhooks, CDN, custom storage, granular permissions, audit logs — all on the free shipping schedule. No "enterprise" upsell.
68+
- **BYOK is the only AI shape.** Per-project encryption key, envelope-sealed at rest, zero Translately-owned API keys in the loop. If AI is off, every feature except AI suggestions still works.
3869
- **Quarkus + Kotlin backend.** Fast boot, low memory, native-image friendly for the zero-cost deploy shape.
39-
- **ICU from day one.** Native ICU MessageFormat parsing, CLDR plurals, CodeMirror 6 editor with inline validation.
40-
- **Keyboard-first UI.** Light + dark, ⌘K command palette, full keyboard nav, WCAG 2.1 AA.
70+
- **Translator-first UI.** Sticky column, autosave, ⌘+↵ commit, Escape revert, 5-state badges, inline ICU errors.
4171

4272
## Roadmap
4373

44-
Twelve-week, seven-phase plan. One signed minor-version tag per phase.
74+
Seven-phase plan. One signed minor-version tag per phase. **Phases 0–3 (MVP) are complete.**
4575

46-
| Phase | Tag | Theme |
47-
|---|---|---|
48-
| 0 | `v0.0.1` | Bootstrap — CI, repo, scaffolding _(shipped)_ |
49-
| 1 | `v0.1.0` | Auth + Org / Project + webapp shell _(in progress)_ |
50-
| 2 | `v0.2.0` | Keys + Translations + ICU |
51-
| 3 | `v0.3.0` | JSON import / export **first MVP** |
52-
| 4 | `v0.4.0` | AI / MT (BYOK) + Translation Memory |
53-
| 5 | `v0.5.0` | Screenshots + JS SDK + in-context editor |
54-
| 6 | `v0.6.0` | Webhooks + CDN + CLI + glossaries |
55-
| 7 | `v1.0.0` | Tasks + Branching + SSO / SAML / LDAP + audit |
76+
| Phase | Tag | Theme | Status |
77+
|---|---|---|---|
78+
| 0 | `v0.0.1` | Bootstrap — CI, repo, scaffolding |shipped 2026-04-17 |
79+
| 1 | `v0.1.0` | Auth + Org / Project + webapp shell | ✅ shipped 2026-04-18 |
80+
| 2 | `v0.2.0` | Keys + Translations + ICU | ✅ shipped 2026-04-19 |
81+
| 3 | `v0.3.0` | JSON import / export · **MVP** | ✅ shipped 2026-04-19 |
82+
| 4 | `v0.4.0` | BYOK AI + MT + Translation Memory | next |
83+
| 5 | `v0.5.0` | Screenshots + JS SDK + in-context editor | planned |
84+
| 6 | `v0.6.0` | Webhooks + CDN + CLI + glossaries | planned |
85+
| 7 | `v1.0.0` | Tasks + Branching + SSO / SAML / LDAP + audit | planned |
5686

57-
See the [CHANGELOG](https://github.com/Pratiyush/translately/blob/master/CHANGELOG.md) for what's landed.
87+
See the [CHANGELOG](https://github.com/Pratiyush/translately/blob/master/CHANGELOG.md) for per-PR detail and [RELEASE-NOTES](https://github.com/Pratiyush/translately/blob/master/RELEASE-NOTES.md) for the long-form narratives.
5888

59-
## Quickstart (local dev)
60-
61-
```bash
62-
git clone https://github.com/Pratiyush/translately
63-
cd translately
64-
docker compose up -d # Postgres 16 + Redis 7 + MinIO + Mailpit
65-
./gradlew :backend:app:quarkusDev # backend at :8080
66-
pnpm --filter webapp dev # webapp at :5173
67-
```
89+
## Download
6890

69-
Self-hosters: start with the [hardening checklist]({{ '/self-hosting/hardening/' | relative_url }}) before exposing to the internet.
91+
- [Full docs bundle (ZIP)]({{ '/downloads/translately-docs.zip' | relative_url }}) — every page under `docs/`, deterministic snapshot of the latest `master`.
92+
- [LLM corpus (single file)]({{ '/llms-full.txt' | relative_url }}) — every `.md` concatenated with file-boundary markers, per [llmstxt.org](https://llmstxt.org). For Claude, Cursor, in-house assistants.
93+
- [Link index]({{ '/llms.txt' | relative_url }}) — the short llms.txt discovery file.
94+
- Container images: `ghcr.io/pratiyush/translately-backend:v0.3.0` + `ghcr.io/pratiyush/translately-webapp:v0.3.0` (published by `release.yml` on every signed tag).
7095

71-
## Download
96+
## License
7297

73-
- [Full docs bundle (ZIP)](downloads/translately-docs.zip) — every page under `docs/`, deterministic snapshot of the latest `master`.
74-
- [LLM corpus (single file)](llms-full.txt) — every `.md` concatenated with file-boundary markers, per [llmstxt.org](https://llmstxt.org). For Claude, Cursor, in-house assistants.
75-
- [Link index](llms.txt) — the short llms.txt discovery file.
98+
- **Outbound:** [MIT](https://github.com/Pratiyush/translately/blob/master/LICENSE). Use it, fork it, ship it, sell it — no strings.
99+
- **Inbound:** [Contributor License Agreement](https://github.com/Pratiyush/translately/blob/master/CLA.md) (Apache-ICLA-adapted, copyright-license form — contributor retains ownership). Every PR carries a ticked CLA checkbox.

0 commit comments

Comments
 (0)