- Astro 42.7%
- TypeScript 31%
- CSS 13.9%
- Shell 7%
- Python 2.1%
- Other 3.3%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
All checks were successful
CI / build (push) Successful in 17s
The FAQ said granting the docker group with group_add was enough. The image defines no user, so group_add alone leaves it root; both are needed, as the agent's documentation now says. |
||
| .forgejo/workflows | ||
| assets | ||
| brand/forgejo | ||
| public | ||
| scripts | ||
| src | ||
| .dockerignore | ||
| .env.example | ||
| .gitignore | ||
| astro.config.mjs | ||
| bun.lock | ||
| Caddyfile | ||
| CHANGELOG.md | ||
| CONTRIBUTING.md | ||
| Dockerfile | ||
| LICENSE | ||
| NOTICE | ||
| package.json | ||
| README.md | ||
| SECURITY.md | ||
| THIRD-PARTY-LICENSES.md | ||
| tsconfig.json | ||
📖 Visit codigosh.com — the site is its own documentation: the projects, their guides and every release.
Why codigosh-web
The place that presents CodigoSH's tools should follow the same rules as the tools: nothing ships unless it is fast, readable and honest about what it does. It is a static site with no cookies, no analytics and no request to any other host, and every number on it comes from the forge at build time, so it cannot drift from the code it describes.
| Shape | Static site built with Astro, served by Caddy from a container |
| Data | Projects, releases and documentation read from the Forgejo API at build time |
| Documentation | Written in each project's own repository, published here on every build, with search |
| Language | English, a single locale with no URL prefix |
| Licence | Apache-2.0 |
| Telemetry | None. Ever |
Features
- A page for each project: what it is, how to install it, a picture you can enlarge, the latest release and when it last shipped.
- A release history graph where every release of every project is a knob on its line, and a changelog of all of them, a page at a time.
- The documentation of every project, rendered by the site itself from the Markdown that lives in each project's repository: a menu that keeps one project open, "On this page" that follows your reading, and search with Ctrl K.
- Light and dark, with text size, font and layout width chosen by the reader and kept in their browser.
- For machines too: a sitemap,
robots.txt, a web manifest, social cards and anllms.txt.
Security & Privacy
Security
- A strict Content-Security-Policy: everything the site loads is from its own origin. The two exceptions, inline scripts and styles and WebAssembly for the search, are written next to the policy in the
Caddyfilewith their reasons. - The usual headers — HSTS,
nosniff, a referrer policy and a framing policy — and a real404for a page that does not exist.
Privacy
- No cookies, no analytics, no third parties. Preferences stay in your browser's local storage and are never sent anywhere.
- No access log: the
Caddyfilehas none.
Run your own copy
The repository builds into a container you can run. No image is published: you build it.
docker build -t codigosh-web .
docker run -d --name codigosh-web -p 8080:80 --restart unless-stopped codigosh-web
The image builds the site with Bun and serves dist/ with Caddy on port 80. Pass --build-arg for SITE_URL (the canonical URL), FORGEJO_URL and FORGEJO_ORG (where the projects are read from); all are optional. The CodigoSH Forgejo allows anonymous API reads, so no token is needed. If the API is unreachable the build fails rather than publish invented data; set FORGEJO_MOCK=1 to build with bundled mock data instead.
Updates
A visitor has nothing to update: the site is rebuilt and replaced as a whole. A push to main here triggers the deploy webhook, and every release of a project rebuilds the site, so its page, its documentation and the history are always the current ones. To follow it with your own copy, pull and rebuild the image.
Build
Requires Bun (≥ 1.3).
bun install
bun run dev # local dev server
bun run check # astro type/content check
bun run build # sync-docs + production build, indexed with Pagefind
bun run preview # preview the build
Copy .env.example to .env to configure it; every variable is explained there.
Docs are not written here. bun run sync-docs (which bun run build runs first) downloads the docs/ folder of every project tagged showcase into src/content/docs/docs/<project>/. It is generated and git-ignored: edit the docs in the project's own repository. Search exists only in a built site, because the index is made from the built pages.
The image at the top of this file is composed from the built site: after bun run build, run bun scripts/docs-shots.ts and then bun scripts/docs-mockup.ts.
Support & Recognition
We are an open-source initiative managed through Open Collective Europe.
Financial Support
If you find our tools useful, consider supporting our infrastructure through an unconditional donation.
Acknowledgments
Special thanks to everyone supporting our mission.
Organizations
We appreciate the organizations that support us as a gesture of goodwill to help maintain our infrastructure.
Credits
- Typefaces (self-hosted, not loaded from anywhere):
- Bricolage Grotesque (OFL 1.1 - https://github.com/ateliertriay/bricolage)
- Geist and Geist Mono (OFL 1.1 - https://github.com/vercel/geist-font)
- Built with:
- Astro (MIT - https://github.com/withastro/astro)
- Tailwind CSS (MIT - https://github.com/tailwindlabs/tailwindcss)
- Pagefind (MIT - https://github.com/CloudCannon/pagefind)
Full attribution, including the fonts and the licence texts, lives in NOTICE and THIRD-PARTY-LICENSES.md.
A project by CodigoSH — built to last.
