Backend Development with GitScrum | API & Database Tasks
Organize API development, database migrations, and service architecture tasks. Structure backend work with clear contracts, dependencies, and rollback plans.
8 min read
Backend development involves APIs, databases, and services that power applications. GitScrum helps teams organize backend work with clear technical requirements and dependencies.
Backend Task Structure
API Development Tasks
API ENDPOINT TASK STRUCTURE:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β WELL-STRUCTURED API TASK: β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β BE-100: Create User Export Endpoint ββ
β β ββ
β β ENDPOINT: ββ
β β POST /api/v1/exports/users ββ
β β ββ
β β REQUEST: ββ
β β { ββ
β β "format": "csv" | "xlsx", ββ
β β "filters": { ββ
β β "created_after": "ISO date", ββ
β β "status": "active" | "inactive" ββ
β β } ββ
β β } ββ
β β ββ
β β RESPONSE (202): ββ
β β { ββ
β β "export_id": "uuid", ββ
β β "status": "processing", ββ
β β "estimated_seconds": 30 ββ
β β } ββ
β β ββ
β β ERRORS: ββ
β β 400: Invalid format or filters ββ
β β 403: No export permission ββ
β β 429: Too many pending exports ββ
β β ββ
β β IMPLEMENTATION: ββ
β β β Validate request ββ
β β β Queue background job ββ
β β β Create export record ββ
β β β Return async response ββ
β β ββ
β β TESTING: ββ
β β β Unit tests for validation ββ
β β β Integration test for full flow ββ
β β β Rate limit test ββ
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β KEY ELEMENTS: β
β β
Full API contract (request/response) β
β β
Error cases documented β
β β
Implementation checklist β
β β
Testing requirements β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Database Work
DATABASE TASK STRUCTURE:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β MIGRATION TASK: β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β BE-150: Add exports table ββ
β β ββ
β β SCHEMA: ββ
β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β β exports βββ
β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββ€ββ
β β β id: UUID (PK) βββ
β β β user_id: UUID (FK β users) βββ
β β β type: VARCHAR(50) βββ
β β β format: VARCHAR(10) βββ
β β β status: VARCHAR(20) [pending, processing, done] βββ
β β β file_url: TEXT (nullable) βββ
β β β error_message: TEXT (nullable) βββ
β β β expires_at: TIMESTAMP βββ
β β β created_at: TIMESTAMP βββ
β β β updated_at: TIMESTAMP βββ
β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β ββ
β β INDEXES: ββ
β β β user_id (filter by user) ββ
β β β status (process pending) ββ
β β β expires_at (cleanup job) ββ
β β ββ
β β ROLLBACK: ββ
β β DROP TABLE exports; ββ
β β ββ
β β DEPLOYMENT NOTES: ββ
β β β’ No downtime expected (new table) ββ
β β β’ Run in staging first ββ
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β MIGRATION CHECKLIST: β
β β Migration file created β
β β Rollback tested β
β β Staging deployment verified β
β β Production deployment planned β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
API Design
API Contracts First
CONTRACT-FIRST DEVELOPMENT:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β WORKFLOW: β
β β
β 1. DESIGN API CONTRACT β
β Frontend + Backend agree on shape β
β Document in OpenAPI/Swagger β
β β
β 2. PARALLEL DEVELOPMENT β
β Frontend: Build against mock API β
β Backend: Implement real API β
β β
β 3. INTEGRATION β
β Connect real API β
β Fix edge cases β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β CONTRACT DESIGN TASK: β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β API-001: Design Export API Contract ββ
β β ββ
β β Attendees: FE lead, BE lead, PM ββ
β β ββ
β β Deliverables: ββ
β β β OpenAPI spec for export endpoints ββ
β β β Request/response examples ββ
β β β Error responses documented ββ
β β β Pagination approach (if needed) ββ
β β ββ
β β Decisions needed: ββ
β β β Async vs sync for large exports ββ
β β β File storage approach ββ
β β β Rate limiting strategy ββ
β β ββ
β β Output: Approved API spec ββ
β β Enables: BE-100, FE-200 to start ββ
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β BENEFITS: β
β β
Teams work in parallel β
β β
Contract disagreements caught early β
β β
Frontend can use generated mocks β
β β
API documentation as byproduct β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Service Development
Service Architecture Work
SERVICE-LEVEL WORK:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β NEW SERVICE TASK: β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β BE-200: Create Export Worker Service ββ
β β ββ
β β PURPOSE: ββ
β β Background worker that processes export jobs ββ
β β ββ
β β ARCHITECTURE: ββ
β β βββββββββββ βββββββββββ βββββββββββ ββ
β β β API ββββ>β Queue ββββ>β Worker β ββ
β β β β β (Redis) β β β ββ
β β βββββββββββ βββββββββββ ββββββ¬βββββ ββ
β β β ββ
β β βββββββΌββββββ ββ
β β β S3 β ββ
β β βββββββββββββ ββ
β β ββ
β β IMPLEMENTATION: ββ
β β β Job processor class ββ
β β β Database query for export ββ
β β β CSV/XLSX generation ββ
β β β S3 upload ββ
β β β Status updates ββ
β β β Error handling ββ
β β β Retry logic ββ
β β ββ
β β SCALING: ββ
β β β’ Multiple workers can process in parallel ββ
β β β’ Jobs are idempotent ββ
β β β’ Timeout: 10 minutes per job ββ
β β ββ
β β MONITORING: ββ
β β β Job success/failure metrics ββ
β β β Processing time histogram ββ
β β β Queue depth alerting ββ
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Testing Backend
Test Requirements
BACKEND TESTING STRATEGY:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β TEST LEVELS: β
β β
β UNIT TESTS: β
β β’ Business logic β
β β’ Validation β
β β’ Utilities β
β β’ Fast, isolated β
β β
β INTEGRATION TESTS: β
β β’ API endpoints β
β β’ Database operations β
β β’ External service calls (mocked) β
β β’ Test database, real queries β
β β
β E2E TESTS: β
β β’ Critical flows β
β β’ Real services (staging) β
β β’ Fewer, more expensive β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β TASK TESTING REQUIREMENTS: β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β BE-100: Create User Export Endpoint ββ
β β ββ
β β UNIT TESTS: ββ
β β β Request validation ββ
β β β Filter building ββ
β β β Export job creation ββ
β β ββ
β β INTEGRATION TESTS: ββ
β β β POST /api/v1/exports/users (happy path) ββ
β β β Invalid format returns 400 ββ
β β β Missing permission returns 403 ββ
β β β Rate limit exceeded returns 429 ββ
β β β Job queued correctly ββ
β β ββ
β β TEST COVERAGE: ββ
β β Minimum: 80% for new code ββ
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β DEFINITION OF DONE: β
β β Unit tests pass β
β β Integration tests pass β
β β Coverage meets minimum β
β β CI pipeline green β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Error Handling
Error Strategy
ERROR HANDLING REQUIREMENTS:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β ERROR RESPONSE STRUCTURE: β
β { β
β "error": { β
β "code": "VALIDATION_ERROR", β
β "message": "Invalid export format", β
β "details": { β
β "field": "format", β
β "allowed": ["csv", "xlsx"] β
β } β
β } β
β } β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β ERROR HANDLING IN TASKS: β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β BE-100: Error Handling ββ
β β ββ
β β Validation errors (400): ββ
β β β Return field-level errors ββ
β β β Include allowed values ββ
β β ββ
β β Auth errors (401/403): ββ
β β β Clear message about what's needed ββ
β β β Don't leak internal info ββ
β β ββ
β β Rate limit (429): ββ
β β β Include retry-after header ββ
β β β Explain limit ββ
β β ββ
β β Server errors (500): ββ
β β β Log full error internally ββ
β β β Return generic message to client ββ
β β β Include request ID for debugging ββ
β β ββ
β β Timeout handling: ββ
β β β Set reasonable timeouts ββ
β β β Return 504 if exceeded ββ
β β β Make operations resumable where possible ββ
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β LOGGING: β
β β’ Structured logs (JSON) β
β β’ Request ID in all logs β
β β’ User context (who, what, when) β
β β’ Performance metrics (duration) β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ