Thanks for your interest in contributing to FedSpeak! This guide covers everything you need to get started.
git clone https://github.com/MetaPhase-Consulting/fedspeak.git
cd fedspeak
npm install
npm run devThe dev server runs at localhost:8888 with hot reload and Netlify Functions.
| Command | Description |
|---|---|
npm run dev |
Start dev server with Netlify Functions |
npm run build |
Production build |
npm run lint |
Run ESLint |
npm run typecheck |
TypeScript strict check |
npm run test:run |
Run tests (single run) |
npm run test |
Run tests (watch mode) |
The acronym database lives in src/shared/data/acronyms.json. To add new entries:
- Check that the acronym doesn't already exist in the file.
- Add the entry following this schema:
"ACRONYM": {
"full": "Full Name",
"description": "Brief 1-2 sentence description of what it is or does.",
"agency": "Parent agency acronym (or 'General')",
"category": "department|agency|office|bureau|program|process|regulation|system|general",
"url": "https://optional-official-website.gov"
}- Keep entries sorted alphabetically by key.
- Descriptions should be concise — what the thing IS or DOES, not its history.
- After adding entries, run
bash scripts/sync-cli-package.shto sync to the npm package.
department— Cabinet-level departments (DOD, HHS, etc.)agency— Independent agencies or major sub-agenciesoffice— Named offices within agenciesbureau— Named bureaus within departmentsprogram— Government programs (SNAP, TRICARE, etc.)process— Acquisition processes, reviews, milestonesregulation— Laws, acts, regulations, standardssystem— IT systems, databases, platformsgeneral— Everything else (titles, terms, concepts)
- All code is TypeScript with strict mode enabled.
- Run
npm run lint && npm run typecheck && npm run test:runbefore submitting. - The shared logic in
src/shared/is used by the API, website, and npm package — changes there affect all three. - Follow existing code style: 2-space indent, single quotes, trailing commas.
- Create a feature branch from
dev. - Make your changes and ensure all checks pass.
- Open a PR targeting
dev. - PRs from
devtomaintrigger production deploys.
Use imperative mood with a prefix:
feat:— New feature or acronym additionsfix:— Bug fixdocs:— Documentation changeschore:— Maintenance, dependencies, CI
Open an issue on GitHub Issues with:
- A clear description of the problem or suggestion
- Steps to reproduce (for bugs)
- Expected vs actual behavior
By contributing, you agree that your contributions will be licensed under the MIT License.