FM-03 // ENGINEERING

Development Process

Updated Jan 15, 2025 · Contributors: nikhil
Table of Contents

From Idea to Production

Every feature follows a lightweight but rigorous path to production:

  1. Spec or RFC - For non-trivial features, write a short spec covering the problem, proposed solution, and key trade-offs. Share for feedback.
  2. Branch - Create a feature branch from main. Branch names follow feature/short-description or fix/short-description.
  3. Build - Write the code, tests, and documentation. Commit often with clear messages.
  4. Pull Request - Open a PR with a description of what changed and why. Tag relevant reviewers.
  5. Review - At least one approval required. Reviewers focus on correctness, edge cases, and maintainability.
  6. Merge - Squash-merge to main. CI runs automatically.
  7. Deploy - Production deploys happen continuously. Feature flags gate incomplete features.
  8. Monitor - Watch dashboards and alerts for the first few hours after deploy.

CI/CD Pipeline

Every push to main triggers:

  • Linting and type checking
  • Unit and integration tests
  • Build verification
  • Automated deployment to staging
  • Production deploy (after staging verification)

PRs run the same checks before merge is allowed. Broken CI blocks merging - no exceptions.

Feature Flags

Incomplete features are shipped behind feature flags. This lets us:

  • Merge to main frequently without blocking other work
  • Test features in staging and with internal users before public release
  • Gradually roll out features to a percentage of users
  • Kill a feature instantly if something goes wrong

Environments

  • Local - Your machine. Use the dev server and local databases.
  • Staging - Mirrors production. Every merge to main deploys here first.
  • Production - The real thing. Deploys are automated but gated by staging health checks.