Skip to content

feat(backend): Add Database Migration System with Version Tracking #274

Description

@devJaja

Summary

Implement a proper database migration system with version tracking, rollback support, and automated migration on server startup.

Motivation

Current migrations are manual SQL files without version tracking. A migration system ensures schema changes are applied consistently across environments.

Acceptance Criteria

  • Migration runner that executes SQL files in order
  • Version tracking in schema_migrations table
  • Up and down migrations (rollback support)
  • Automated migration on server startup (configurable)
  • Migration status endpoint: GET /migrations
  • Dry-run mode: show what would be migrated without executing
  • Idempotent migrations (safe to run multiple times)
  • Unit tests for migration execution, rollback, and version tracking

Files to Modify

File Action
backend/src/db/migrations/index.ts New: migration runner
backend/src/db/migrations/runner.ts New: migration execution engine
backend/src/db/migrations/tracker.ts New: version tracking
backend/src/db/migrations/003_create_schema_migrations.sql New: migration tracking table
backend/src/index.ts Run migrations on startup
backend/src/api/routes/health.ts Add migration status endpoint
backend/src/db/migrations/runner.test.ts New: migration runner tests

How to Contribute

  1. Create branch feat/database-migrations
  2. Build migration runner with version tracking
  3. Add rollback support
  4. Integrate with server startup
  5. Write unit tests for migration lifecycle
  6. Run npm run test && npm run lint before submitting PR

Metadata

Metadata

Assignees

Labels

GrantFox OSSIssue tracked in GrantFox OSSMaybe RewardedIssue may be eligible for a GrantFox rewardThird CampaignCampaign: Third CampaignbackenddatabaseDatabase related changesenhancementNew feature or requestmiddlewareMiddleware improvements

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions