This is the
.githubrepository for the F3-Nation organization. Theprofile/README.mdis displayed on our GitHub org homepage and serves as the front door for new contributors. This README contains additional detail for developers getting set up.
- Read the org homepage to understand the landscape — what we build, who uses it, and how it all fits together.
- Pick a repo that interests you (see the Repository Guide).
- Clone it and follow the repo's README for local setup instructions.
- Find an issue to work on, or open one if you spot something that could be better.
- Open a pull request — we review everything and are happy to help.
Most of our repos use one or both of these:
| Stack | You'll Need |
|---|---|
| TypeScript apps (monorepo, map, PAX Vault, Codex, etc.) | Node.js 18+, PNPM |
| Python apps (Slack bot) | Python 3.11+, Poetry, Docker |
For database access during development, check the repo-specific README — some repos use local Docker Postgres, others connect to shared dev instances.
Almost everything runs on Google Cloud Platform:
- Cloud Run — hosts our APIs and web apps as containerized services
- Cloud SQL (PostgreSQL) — our primary relational database, shared across most apps
- BigQuery — analytics data warehouse, used by PAX Vault
- Firebase — authentication for some apps (PAX Vault, Codex)
- GitHub Pages — hosts the status page and org map
For the broader org-level view, see the homepage architecture section.
flowchart LR
subgraph apps[Applications]
bot[Slack Bot\nPython]
map[Map and Admin\nNext.js]
nearme[f3nearme]
vault[PAX Vault\nNext.js]
codex[The Codex\nNext.js]
auth[Auth Package\nTypeScript]
end
subgraph platform[F3 Nation Platform]
api[F3 Nation API\nCloud Run / Node.js]
orm[Drizzle ORM]
end
subgraph data[Data Services]
pg[(PostgreSQL\nCloud SQL)]
bq[(BigQuery)]
end
bot --> api
map --> api
nearme --> api
api --> orm --> pg
codex --> pg
vault --> bq
auth -. used by .-> vault
auth -. used by .-> codex
To avoid duplicate maintenance, we keep the canonical data model diagram on the org homepage README: Data Model Overview.
| Database Term | F3 Term | Meaning |
|---|---|---|
| user | PAX | A participant — anyone who shows up to a workout |
| org | AO | Area of Operations — an organizational unit, NOT a physical location |
| org | Region | A geographic grouping of AOs under shared leadership |
| user | Q | The person leading a particular workout |
| entry | Exicon | The F3 exercise dictionary |
| entry | Lexicon | F3-specific terminology and definitions |
| Repo | Runs On |
|---|---|
| f3-nation | Cloud Run |
| f3-nation-slack-bot | Cloud Run |
| pax-vault | Cloud Run |
| f3nearme | Cloud Run |
| f3-nation-auth | npm package |
| the-codex | Cloud Run |
| f3-region-pages | Cloud Run |
| f3-status | GitHub Pages |
| f3-org-map | GitHub Pages |
We're all doing it. And we're working on some guidelines for using it.
We're all volunteers here. A few norms:
- Ask questions. No question is too basic. Open an issue or comment on a PR.
- Small PRs are better. They're easier to review and merge.
- Write a good PR description. Say what you changed and why.
- Don't worry about breaking things. That's what code review and CI are for.
- Be kind. We're all here to accelerate and have fun doing it.