How wdhdev/free-for-life works
1. This repository is a content-heavy, static curated-list project rather than an application with runtime business logic. The core asset is a large set of categorized markdown lists of “free forever” services and tools.
2. The primary source-of-truth content lives under data/. Each file maps to one category shown in the README, such as APIs, AI, BaaS, DNS, Databases, Forms, Email, PaaS, and SSL. The _start.md and _end.md files act as framing markers for generated output.
3. README.md is treated as a generated artifact, not a hand-edited document. The warning block at the top and the <!-- data:start --> / <!-- data:end --> markers indicate that category content is assembled into the README from the data/ files.
4. scripts/update-readme.sh is the main build/generation step. Its job is to transform the category markdown sources into the published README, keeping the table of contents and section content synchronized with the files in data/.
5. The website/ directory is the public-facing static site layer. It contains a single index.html plus media assets, which suggests a lightweight static frontend that mirrors or presents the same curated list content outside GitHub.
6. The repository therefore has two presentation surfaces for the same underlying content: GitHub’s rendered README.md, and the standalone website under website/. The content pipeline feeds both.
7. GitHub Actions in .github/workflows/main.yml and .github/workflows/website.yml provide automation around that content pipeline. One workflow likely validates or regenerates the README, while the other publishes the website.
8. CNAME shows the site is mapped to a custom domain, so the static website is intended for direct public hosting rather than only GitHub viewing.
9. The boundary between “content” and “presentation” is important here: contributors are expected to edit category markdown under data/, while generated outputs (README.md and the website) are maintained by automation.
10. The resulting architecture is simple and deterministic: contributor edits flow into category markdown, a script assembles those files into the canonical README, and CI publishes the static website copy. No database, API server, or dynamic backend is part of the repo’s architecture.
Main entry points: update-readme.sh Update script · index.html Website · _start.md Start marker · main.yml README CI
Components 17
Content sources
Curated markdown lists that define the repository’s canonical service catalog.
- Start marker · Marks the beginning of generated README content.
data/_start.md - End marker · Marks the end of generated README content.
data/_end.md - APIs · Curated free-forever APIs and data/ML services.
data/APIs_Data_and_ML.md - AI · Curated artificial intelligence tools and services.
data/Artificial_Intelligence.md - BaaS · Backend-as-a-Service offerings.
data/BaaS.md - Data stores · Core storage and data infrastructure categories.
- Comms · Communication and productivity categories.
- Platforms · Hosting and deployment platform categories.
- Security · Domain and certificate-related categories.
- Other lists · Additional curated markdown sections that round out the catalog.
Generation
Automation that assembles source content into published outputs.
- Update script · Transforms category markdown into the generated README.
scripts/update-readme.sh
Published surfaces
Human-facing outputs rendered from the curated lists.
Connections 17
- Start marker → APIs: frames · Begins the generated README content around the category sources.
- APIs → AI: neighbors · Representative category sequence in the source catalog.
- AI → BaaS: neighbors · Representative category sequence in the source catalog.
- BaaS → Data stores: extends · Additional data-centric categories continue the catalog.
- Data stores → Comms: extends · Broader list sections continue beyond infrastructure topics.
- Comms → Platforms: extends · Platform and hosting categories follow in the curated set.
- Platforms → Security: extends · Security and trust-related categories complete the catalog.
- Security → Other lists: continues · Remaining markdown sections are folded into the generated output.
- Other lists → End marker: closes · Ends the generated README content.
- Start marker → Update script: feeds · The generator reads framed source sections.
- Update script → README: assembles · Build step produces the canonical README artifact.
- Update script → Website: mirrors · Same curated content is prepared for the public site.
- README CI → Update script: runs · Workflow invokes the README generation step.
- Site CI → Website: publishes · Workflow deploys the static site output.
- Website → Media: uses · Website pulls in supporting static assets.
- Domain → Website: points to · Custom domain is bound to the hosted site.
- README CI → README: checks · CI keeps the generated README synchronized.