Public Access — Unauthenticated Documentation Browsing
How unauthenticated users can view docs, projects, and files
Public Access — Unauthenticated Documentation Browsing
The docs system is designed so unauthenticated users can browse documentation without signing in. This supports public docs, shared links, and external readers.
Design Principle
Read operations are public. Write operations (admin, sync, preferences) require authentication.
| Operation | Auth required |
|---|---|
| View docs, projects, files, search | No |
| Admin panel, View Sessions, config | Yes (exec/dev/admin) |
| Preferences | Yes (any authenticated user) |
Public Backend Endpoints
All read endpoints use @Public() — no JWT required.
Content & Files
| Endpoint | Purpose |
|---|---|
GET /docs-api/sync/files |
List all doc files (paginated) |
GET /docs-api/sync/files/*path |
Get single file content by path |
GET /docs-api/sync/manifest |
Full manifest (all file metadata) |
GET /docs-api/sync/search?q= |
Search documentation |
Projects & Config
| Endpoint | Purpose |
|---|---|
GET /docs-api/sync/projects |
List all projects |
GET /docs-api/sync/settings/:key |
Read setting by key |
GET /docs-api/sync/settings |
Read all settings for namespace |
GET /docs-api/admin/docs/folders-config |
Folders/projects config (structure) |
View Sessions (Shareable Links)
| Endpoint | Purpose |
|---|---|
GET /docs-api/sessions/:token |
Resolve view session token → allowedProjectIds |
Analytics (Fire-and-Forget)
| Endpoint | Purpose |
|---|---|
POST /docs-api/analytics/page-views |
Track page view |
POST /docs-api/analytics/search-events |
Track search event |
Frontend Access
| Route | Auth required |
|---|---|
/ (select-project) |
No |
/english/..., /es/... (docs content) |
No |
/admin/* |
Yes (exec/dev/admin) |
/preferences |
Yes (any authenticated user) |
Unauthenticated users can:
- Land on the docs app
- Select a project from the switcher
- Browse all public documentation
- Use search
Modern Link-Based Sharing (View Sessions)
The primary way to share docs with specific projects is View Sessions:
- Admin (exec/dev/admin) goes to Admin → View Sessions
- Selects projects via checkboxes
- Creates shareable link → receives URL with
?v=TOKEN - Recipient opens link (no auth) → sees only the selected projects
Flow:
Recipient opens https://docs.app.com/?v=abc123
↓
Frontend calls GET /docs-api/sessions/abc123
↓
Backend returns { allowedProjectIds: ["english/GoGrab-Space", ...] }
↓
Frontend filters availableProjects to those IDs only
↓
Recipient sees only allowed projects in switcher and content
Summary
| Scenario | Auth | How |
|---|---|---|
| Public docs | No | Open docs URL → select project → browse |
| Restricted docs (specific projects) | No | Admin creates link → recipient opens ?v=TOKEN |
| Admin, config, View Sessions | Yes | Sign in as exec/dev/admin |
All documentation read operations are public by design. Authentication is required only for administration and personal preferences.