22 <img alt =" Logo " src =" https://github.com/prod-forge/backend/blob/main/assets/prod-forge-logo.png " width =" 264px " height =" 243px " >
33</p >
44
5- Most tutorials teach you how to write an app. Almost none of them teach you how to ** run it in production. **
5+ AI made writing backend code easy but running it in production is still hard.
66
7- ** Prod Forge** is an open-source guide that covers everything around the code - the part most projects skip :
8- repository strategy, team workflows, CI/CD, observability, security, release management , and rollback.
7+ ** Prod Forge** is an open-source reference that focuses on everything beyond the code:
8+ CI/CD, infrastructure, observability, deployment, migrations , and rollback.
99
10- To make it concrete, we build a simple Todo List API and treat it ** as if real users depend on it. **
10+ A simple Todo API, built as if it were a real production system.
1111
1212---
1313
@@ -28,7 +28,7 @@ To make it concrete, we build a simple Todo List API and treat it **as if real u
2828| -------------- | ---------------------------------------------- |
2929| Backend | NestJS · Prisma · PostgreSQL · Redis · Docker |
3030| Infrastructure | AWS · ECR · ECS · RDS · ElasticCache |
31- | Observability | Prometheus · Grafana · Loki |
31+ | Observability | Prometheus · Grafana · Loki · Promtail |
3232| Quality | ESLint · Prettier · Husky · Commitlint · CI/CD |
3333
3434# Table of contents
@@ -38,6 +38,7 @@ To make it concrete, we build a simple Todo List API and treat it **as if real u
3838 - [ A Real-World Problem With Monorepos] ( https://github.com/prod-forge/backend/blob/main/docs/repository-strategy.md#a-real-world-problem-with-monorepos )
3939 - [ Why Repository Boundaries Matter] ( https://github.com/prod-forge/backend/blob/main/docs/repository-strategy.md#why-repository-boundaries-matter )
4040 - [ Conclusion] ( https://github.com/prod-forge/backend/blob/main/docs/repository-strategy.md#conclusion )
41+
4142- [ 2. Architecture Decisions] ( https://github.com/prod-forge/backend/blob/main/docs/architecture-decisions.md )
4243 - [ Client Constraints] ( https://github.com/prod-forge/backend/blob/main/docs/architecture-decisions.md#client-constraints )
4344 - [ Understanding The Product] ( https://github.com/prod-forge/backend/blob/main/docs/architecture-decisions.md#understanding-the-product )
@@ -46,6 +47,7 @@ To make it concrete, we build a simple Todo List API and treat it **as if real u
4647 - [ 2. Community Ecosystem] ( https://github.com/prod-forge/backend/blob/main/docs/architecture-decisions.md#2-community-ecosystem )
4748 - [ 3. Opinionated Structure] ( https://github.com/prod-forge/backend/blob/main/docs/architecture-decisions.md#3-opinionated-structure )
4849 - [ 4. Stability Over Hype] ( https://github.com/prod-forge/backend/blob/main/docs/architecture-decisions.md#4-stability-over-hype )
50+
4951- [ 3. Development Workflow] ( https://github.com/prod-forge/backend/blob/main/docs/development-workflow.md )
5052 - [ Task Management] ( https://github.com/prod-forge/backend/blob/main/docs/development-workflow.md#task-management )
5153 - [ Git Flow] ( https://github.com/prod-forge/backend/blob/main/docs/development-workflow.md#git-flow )
@@ -56,12 +58,14 @@ To make it concrete, we build a simple Todo List API and treat it **as if real u
5658 - [ Code Review] ( https://github.com/prod-forge/backend/blob/main/docs/development-workflow.md#code-review )
5759 - [ Squash Merge Strategy] ( https://github.com/prod-forge/backend/blob/main/docs/development-workflow.md#squash-merge-strategy )
5860 - [ Squash Merge Workflow] ( https://github.com/prod-forge/backend/blob/main/docs/development-workflow.md#squash-merge-workflow )
61+
5962- [ 4. Code Quality] ( https://github.com/prod-forge/backend/blob/main/docs/code-quality.md )
6063 - [ Layer 1. Code Formatting And Consistency] ( https://github.com/prod-forge/backend/blob/main/docs/code-quality.md#layer-1-code-formatting-and-consistency )
6164 - [ Layer 2. Static Analysis With ESLint] ( https://github.com/prod-forge/backend/blob/main/docs/code-quality.md#layer-2-static-analysis-with-eslint )
6265 - [ Layer 3. Pre-commit Protection] ( https://github.com/prod-forge/backend/blob/main/docs/code-quality.md#layer-3-pre-commit-protection )
6366 - [ Layer 4. Commitlint Configuration] ( https://github.com/prod-forge/backend/blob/main/docs/code-quality.md#layer-4-commitlint-configuration )
6467 - [ Layer 5. Continuous Integration Checks] ( https://github.com/prod-forge/backend/blob/main/docs/code-quality.md#layer-5-continuous-integration-checks )
68+
6569- [ 5. Documentation] ( https://github.com/prod-forge/backend/blob/main/docs/documentation.md )
6670 - [ Recommended Documentation Structure] ( https://github.com/prod-forge/backend/blob/main/docs/documentation.md#recommended-documentation-structure )
6771 - [ README.md] ( https://github.com/prod-forge/backend/blob/main/docs/documentation.md#readmemd )
@@ -71,30 +75,35 @@ To make it concrete, we build a simple Todo List API and treat it **as if real u
7175 - [ Incident Log] ( https://github.com/prod-forge/backend/blob/main/docs/documentation.md#incident-log )
7276 - [ Feature Change Log] ( https://github.com/prod-forge/backend/blob/main/docs/documentation.md#feature-change-log )
7377 - [ Roadmap] ( https://github.com/prod-forge/backend/blob/main/docs/documentation.md#roadmap )
78+
7479- [ 6. Configuration Management] ( https://github.com/prod-forge/backend/blob/main/docs/configuration-management.md )
7580 - [ Environment Configuration Strategy] ( https://github.com/prod-forge/backend/blob/main/docs/configuration-management.md#environment-configuration-strategy )
7681 - [ Secret Management] ( https://github.com/prod-forge/backend/blob/main/docs/configuration-management.md#secret-management )
7782 - [ NestJS Configuration Setup] ( https://github.com/prod-forge/backend/blob/main/docs/configuration-management.md#nestjs-configuration-setup )
7883 - [ Structured Configuration Modules] ( https://github.com/prod-forge/backend/blob/main/docs/configuration-management.md#structured-configuration-modules )
7984 - [ Accessing Configuration] ( https://github.com/prod-forge/backend/blob/main/docs/configuration-management.md#accessing-configuration )
8085 - [ Why This Approach Works Well] ( https://github.com/prod-forge/backend/blob/main/docs/configuration-management.md#why-this-approach-works-well )
86+
8187- [ 7. Database Management] ( https://github.com/prod-forge/backend/blob/main/docs/database-management.md )
8288 - [ Database Scripts] ( https://github.com/prod-forge/backend/blob/main/docs/database-management.md#database-scripts )
8389 - [ Database Manager in Docker] ( https://github.com/prod-forge/backend/blob/main/docs/database-management.md#database-manager-in-docker )
8490 - [ Why Not a Separate Database Service?] ( https://github.com/prod-forge/backend/blob/main/docs/database-management.md#why-not-a-separate-database-service )
8591 - [ Working with Migrations] ( https://github.com/prod-forge/backend/blob/main/docs/database-management.md#working-with-migrations )
8692 - [ Running Migrations in CI/CD] ( https://github.com/prod-forge/backend/blob/main/docs/database-management.md#running-migrations-in-cicd )
93+
8794- [ 8. Project Structure] ( https://github.com/prod-forge/backend/blob/main/docs/project-structure.md )
8895 - [ API Layer] ( https://github.com/prod-forge/backend/blob/main/docs/project-structure.md#api-layer )
8996 - [ Thin Controllers] ( https://github.com/prod-forge/backend/blob/main/docs/project-structure.md#thin-controllers )
9097 - [ Data Validation and Sanitization] ( https://github.com/prod-forge/backend/blob/main/docs/project-structure.md#data-validation-and-sanitization )
9198 - [ Unified API Responses] ( https://github.com/prod-forge/backend/blob/main/docs/project-structure.md#unified-api-responses )
99+
92100- [ 9. Fault Tolerance] ( https://github.com/prod-forge/backend/blob/main/docs/fault-tolerance.md )
93101 - [ Non-Critical Dependency] ( https://github.com/prod-forge/backend/blob/main/docs/fault-tolerance.md#non-critical-dependency )
94102 - [ Fallback Strategies] ( https://github.com/prod-forge/backend/blob/main/docs/fault-tolerance.md#fallback-strategies )
95103 - [ Caching Strategy] ( https://github.com/prod-forge/backend/blob/main/docs/fault-tolerance.md#caching-strategy )
96104 - [ Throttling Strategy] ( https://github.com/prod-forge/backend/blob/main/docs/fault-tolerance.md#throttling-strategy )
97105 - [ Graceful Degradation] ( https://github.com/prod-forge/backend/blob/main/docs/fault-tolerance.md#graceful-degradation )
106+
98107- [ 10. Error Handling] ( https://github.com/prod-forge/backend/blob/main/docs/error-handling.md )
99108 - [ Types of Errors] ( https://github.com/prod-forge/backend/blob/main/docs/error-handling.md#types-of-errors )
100109 - [ Business Logic Errors] ( https://github.com/prod-forge/backend/blob/main/docs/error-handling.md#business-logic-errors )
@@ -107,6 +116,7 @@ To make it concrete, we build a simple Todo List API and treat it **as if real u
107116 - [ Correlation ID] ( https://github.com/prod-forge/backend/blob/main/docs/error-handling.md#correlation-id )
108117 - [ User Context] ( https://github.com/prod-forge/backend/blob/main/docs/error-handling.md#user-context )
109118 - [ Logging and Metrics] ( https://github.com/prod-forge/backend/blob/main/docs/error-handling.md#logging-and-metrics )
119+
110120- [ 11. Logging & Observability] ( https://github.com/prod-forge/backend/blob/main/docs/logging-observability.md )
111121 - [ Application Logging] ( https://github.com/prod-forge/backend/blob/main/docs/logging-observability.md#application-logging )
112122 - [ What Should Be Logged] ( https://github.com/prod-forge/backend/blob/main/docs/logging-observability.md#what-should-be-logged )
@@ -118,25 +128,29 @@ To make it concrete, we build a simple Todo List API and treat it **as if real u
118128 - [ Dashboards] ( https://github.com/prod-forge/backend/blob/main/docs/logging-observability.md#dashboards )
119129 - [ Metrics with Prometheus] ( https://github.com/prod-forge/backend/blob/main/docs/logging-observability.md#metrics-with-prometheus )
120130 - [ Why Observability Matters] ( https://github.com/prod-forge/backend/blob/main/docs/logging-observability.md#why-observability-matters )
131+
121132- [ 12. Testing] ( https://github.com/prod-forge/backend/blob/main/docs/testing.md )
122133 - [ Unit Tests] ( https://github.com/prod-forge/backend/blob/main/docs/testing.md#unit-tests )
123134 - [ Mocking Dependencies] ( https://github.com/prod-forge/backend/blob/main/docs/testing.md#mocking-dependencies )
124135 - [ End-to-End Tests (E2E)] ( https://github.com/prod-forge/backend/blob/main/docs/testing.md#end-to-end-tests-e2e )
125136 - [ Test Environment Setup] ( https://github.com/prod-forge/backend/blob/main/docs/testing.md#test-environment-setup )
126137 - [ Writing Effective E2E Tests] ( https://github.com/prod-forge/backend/blob/main/docs/testing.md#writing-effective-e2e-tests )
127138 - [ Test Specs Design Style] ( https://github.com/prod-forge/backend/blob/main/docs/testing.md#test-specs-design-style )
139+
128140- [ 13. Performance] ( https://github.com/prod-forge/backend/blob/main/docs/performance.md )
129141 - [ Avoid Returning Unnecessary Data] ( https://github.com/prod-forge/backend/blob/main/docs/performance.md#avoid-returning-unnecessary-data )
130142 - [ Use Pagination for Collections] ( https://github.com/prod-forge/backend/blob/main/docs/performance.md#use-pagination-for-collections )
131143 - [ Use Database Indexes (When Needed)] ( https://github.com/prod-forge/backend/blob/main/docs/performance.md#use-database-indexes-when-needed )
132144 - [ Response Compression] ( https://github.com/prod-forge/backend/blob/main/docs/performance.md#response-compression )
145+
133146- [ 14. Security] ( https://github.com/prod-forge/backend/blob/main/docs/security.md )
134147 - [ Request Validation] ( https://github.com/prod-forge/backend/blob/main/docs/security.md#request-validation )
135148 - [ Response Data Sanitization] ( https://github.com/prod-forge/backend/blob/main/docs/security.md#response-data-sanitization )
136149 - [ Security Headers] ( https://github.com/prod-forge/backend/blob/main/docs/security.md#security-headers )
137150 - [ CORS Configuration] ( https://github.com/prod-forge/backend/blob/main/docs/security.md#cors-configuration )
138151 - [ Rate Limiting] ( https://github.com/prod-forge/backend/blob/main/docs/security.md#rate-limiting )
139152 - [ File Upload Security] ( https://github.com/prod-forge/backend/blob/main/docs/security.md#file-upload-security )
153+
140154- [ 15. Release Management] ( https://github.com/prod-forge/backend/blob/main/docs/release-management.md )
141155 - [ Release Strategy] ( https://github.com/prod-forge/backend/blob/main/docs/release-management.md#release-strategy )
142156 - [ Creating a Release] ( https://github.com/prod-forge/backend/blob/main/docs/release-management.md#creating-a-release )
0 commit comments