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:
- Spec or RFC - For non-trivial features, write a short spec covering the problem, proposed solution, and key trade-offs. Share for feedback.
- Branch - Create a feature branch from
main. Branch names followfeature/short-descriptionorfix/short-description. - Build - Write the code, tests, and documentation. Commit often with clear messages.
- Pull Request - Open a PR with a description of what changed and why. Tag relevant reviewers.
- Review - At least one approval required. Reviewers focus on correctness, edge cases, and maintainability.
- Merge - Squash-merge to
main. CI runs automatically. - Deploy - Production deploys happen continuously. Feature flags gate incomplete features.
- 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
mainfrequently 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
maindeploys here first. - Production - The real thing. Deploys are automated but gated by staging health checks.