An interactive map application for visualizing F3 Nation's sectors, areas, regions, and AOs. Built with TypeScript, Vite, and Leaflet, it displays organizational boundaries and leadership info using polygons generated from active workout locations.
- Interactive Map: Visualizes F3's organizational structure (sector → area → region → AO) on a modern map UI.
- Drill-down Navigation: Click polygons to drill down through organizational levels.
- Leadership Info: Hover polygons to view leadership positions and contact details.
- Convex Hull Boundaries: Boundaries are generated from the convex hull of active locations.
- Search: Quickly find sectors, areas, or regions by name.
- Responsive Design: Works on desktop and mobile devices.
- Clone the repository:
git clone https://github.com/your-org/f3-sector-map.git cd f3-sector-map - Install dependencies:
npm install
The API base URL is set automatically:
- Local development: Defaults to
https://api.f3nation.com/v1unlessVITE_API_BASEis set. - Production (GitHub Pages, etc.): Uses
https://api.f3nation.com/v1 - You can override this by setting the
VITE_API_BASEenvironment variable in a.envfile:VITE_API_BASE=https://api.f3nation.com/v1
npm run devVisit http://localhost:5173 (or the port shown in your terminal).
npm run buildOutput will be in the dist/ folder.
npm run testTests are written with Vitest.
npm run lint
npm run formatLinting and formatting are powered by Biome.
- Lefthook runs checks locally on
pre-commitand validates commit messages oncommit-msg. - Commitlint enforces Conventional Commits (requirements below).
- Dependabot opens weekly updates for npm packages and GitHub Actions.
- Release Please creates/updates a release PR and updates
CHANGELOG.md. - The app header shows the current version and links to the changelog.
Commit messages must follow Conventional Commits:
| Type | Description |
|---|---|
feat |
A new user-facing feature |
fix |
A bug fix |
perf |
A code change that improves performance |
refactor |
A code change that neither fixes a bug nor adds a feature |
style |
Changes that don't affect code meaning (whitespace, formatting, etc.) |
test |
Adding or correcting tests |
docs |
Documentation-only changes |
build |
Changes to the build system or external dependencies |
ci |
Changes to CI configuration files and scripts |
chore |
Maintenance tasks (deps, tooling, etc.) that don't modify src or tests |
revert |
Reverts a previous commit |
Examples:
feat: add region deep-link support
fix: handle missing org points in map rendering
chore: update vite and vitest
docs: document release workflow
Breaking changes should use ! or a BREAKING CHANGE: footer:
feat!: remove legacy org endpoint
- Runs on push to
main. - Uses Conventional Commit history to determine semantic version bump.
- Opens or updates a release PR with version/changelog updates.
- When the release PR is merged, it creates a Git tag and GitHub Release.
- GitHub Pages deployment is triggered from that release tag (one deploy per release).
Version bump rules:
- Patch bump:
fix:commits - Minor bump:
feat:commits - Major bump: any breaking change, typically
feat!:/fix!:/refactor!:or a commit with aBREAKING CHANGE:footer
Examples:
fix: correct map sizing on tall sidebars -> patch bump
feat: add in-app changelog modal -> minor bump
feat!: remove legacy org route -> major bump
This project is ready for static hosting (e.g., GitHub Pages, Netlify, Vercel).
- Merge regular work into
main. - Release Please opens/updates a release PR.
- Merge the release PR to create a Git tag and GitHub Release.
- The release workflow builds and deploys GitHub Pages from that tag.
- Optional: run
.github/workflows/deploy.ymlmanually to redeploy current code. - Ensure the
baseoption invite.config.tsis set to'./'for correct asset paths.
src/– Main source code (TypeScript, CSS)public/– Static assetsindex.html– App entry pointvite.config.ts– Vite configurationREADME.md– Project documentation
- API errors locally: By default, local development uses
https://api.f3nation.com/v1. To target a local backend, setVITE_API_BASE(for examplehttp://localhost:3000/v1) in your.envfile. - Module not found errors: Run
npm installto ensure all dependencies are installed. - Type errors for Vitest: Ensure
vitestis installed as a dev dependency.
MIT License. See LICENSE if present.