5.9 KiB
go-tell
Go Tell is a small content CMS: one Go binary that serves the API and embeds the React frontend, backed by a JSON file. It is served from a single host, https://tell.dev, and it uses Go Loose to decide who is allowed to edit.
| Module | github.com/danyel/go-tell · go 1.27.1 · 13 Go files |
| Endpoints | 14 endpoints |
| Components | 3 component directories |
| Tests | 26 in 5 files |
| Go lines | 3050 lines |
Everything between the generated markers is rewritten by every sync. Notes written outside the markers are kept.
For Users
What this application does
Go Tell is a small content CMS: one Go binary that serves the API and embeds the React frontend, backed by a JSON file. It is served from a single host, https://tell.dev, and it uses Go Loose to decide who is allowed to edit.
The project ships its own README at README.md, which is the long form of this page. The three audience tabs split the same facts three ways so you only read the part that concerns you.
Reading this in go-doc
Open the page and pick the tab that matches you:
- User — you use the finished application. This section is all you need.
- Operator — you run it. Configuration, ports and deployment notes are under that tab.
- Developer — you integrate with it or change it. The API and layout tables are under that tab.
The feedback panel stores a note per audience, tagged with your badge, so operators and developers can see which audience raised it.
Where the original documentation lives
This project already carries 4 Markdown documents. They stay in the project repository: this page points at them instead of copying them, so there is always exactly one copy of the truth.
| Document | Size |
|---|---|
README.md |
7238 bytes |
deploy/helm/go-tell/README.md |
9194 bytes |
ui/app/README.md |
1266 bytes |
ui/changelog.md |
5324 bytes |
For Operators
Running it locally
This project has no root Makefile, so the binary or container is run directly.
Image
Dockerfile builds from node:22-alpine, golang:1.27-alpine, alpine:3.20 in stages: ui, backend and exposes 8080.
Configuration
Every environment variable found in the source or in a .env file:
| Variable | Example | Found in |
|---|---|---|
CMS_ALLOWED_ORIGINS |
http://localhost:5173 |
.env file |
CMS_CONTENT_FILE |
— | .env file |
CMS_HTTP_ADDR |
:8080 |
.env file |
CMS_POSTGRES_URL |
— | .env file |
CMS_PROFILE |
demo |
.env file |
CMS_SSO_COOKIE |
— | .env file |
CMS_SSO_HEADER |
X-SSO-Token |
.env file |
CMS_SSO_TOKEN |
— | .env file |
GO_LOOSE_APP_DOMAIN |
tell.dev |
.env file |
GO_LOOSE_AUTH_DOMAIN |
auth.dev |
.env file |
GO_LOOSE_CA_FILE |
— | .env file |
GO_LOOSE_CLIENT_ID |
— | .env file |
GO_LOOSE_CLIENT_SECRET |
— | .env file |
GO_LOOSE_TENANT |
tell |
.env file |
VITE_API_BASE_URL |
— | .env file |
VITE_CONTENT_ENDPOINT |
/api/content |
.env file |
VITE_SESSION_ENDPOINT |
/api/auth/session |
.env file |
VITE_SSO_LOGIN_URL |
— | .env file |
Network surface
Ports referenced across the project: 8080.
Deployment artefacts
Helm 1 chart found:
deploy/helm/go-tell
Operations documentation that already exists
Read these in place rather than duplicating them here:
deploy/helm/go-tell/README.md— Go Tell Helm chart
For Developers
Module layout
- go.mod — module github.com/danyel/go-tell, go 1.27.1, 13 direct and 58 indirect dependencies
HTTP API
Every route registration found in the source:
| Method | Path | Handler |
|---|---|---|
| ANY | / |
singlePageApp |
| ANY | /api/admin/reset |
adminReset |
| ANY | /api/auth/session |
session |
| ANY | /api/auth/sudo |
sudo |
| ANY | /api/auth/users |
users |
| ANY | /api/content |
contentCollection |
| ANY | /api/content/ |
contentDetail |
| ANY | /api/content/badges |
contentBadges |
| ANY | /api/content/categories |
contentCategories |
| ANY | /api/content/clear |
adminReset |
| ANY | /api/dev/null |
contentCollection |
| ANY | /api/dev/null/ |
contentDetail |
| ANY | /api/protected |
— |
| ANY | /health |
func |
Direct dependencies
github.com/danyel/go-loosev0.0.0-20261002224534-b011701522b1github.com/go-chi/chi/v5v5.2.3github.com/golang-jwt/jwt/v5v5.3.0github.com/google/uuidv1.6.0github.com/jackc/pgx/v5v5.11.0github.com/ledongthuc/pdfv0.0.0-20260907135840-6c8c28e0e8a0github.com/pressly/goose/v3v3.26.0github.com/rabbitmq/amqp091-gov1.15.0github.com/testcontainers/testcontainers-gov0.44.0github.com/testcontainers/testcontainers-go/modules/postgresv0.44.0golang.org/x/cryptov0.54.0gorm.io/driver/postgresv1.6.0gorm.io/gormv1.31.0
Directory map
| Directory | Files | Lines | Likely purpose |
|---|---|---|---|
ui/ |
26 | 1636 | frontend assets |
deploy/ |
20 | 81 | deployment manifests |
internal/ |
12 | 2988 | unimportable application internals |
cmd/ |
1 | 62 | binary entry points |
migrations/ |
1 | 9 | schema migrations |
Languages
- YAML — 20 files, 14872 lines
- Go — 13 files, 3050 lines
- JSON — 5 files, 2025 lines
- TypeScript — 15 files, 1616 lines
- Markdown — 4 files, 499 lines
- CSS — 1 file, 383 lines
- Templates — 1 file, 76 lines
- txt — 1 file, 35 lines
- HTML — 1 file, 29 lines
- SQL — 1 file, 9 lines