Skip to content

ci/tooling: migrate CodeForge database from AWS RDS (MySQL) to Neon (Postgres) #81

@ArchILLtect

Description

@ArchILLtect

Context / problem statement

CodeForge is currently using an AWS RDS MySQL instance (legacy from Elastic Beanstalk hosting).

The application has been migrated off EB to Render, but the database is still hosted in AWS, causing unnecessary monthly AWS costs.

Goal: migrate the CodeForge database from AWS RDS (MySQL) to Neon (Postgres) so AWS RDS can be deleted entirely.

This will reduce ongoing AWS billing and simplify infrastructure by consolidating the DB into Neon.

Proposed changes

  • Create a new Neon Postgres database project for CodeForge
  • Export the current RDS MySQL database schema + data
  • Convert schema/data to Postgres-compatible format
  • Import into Neon (Postgres)
  • Update CodeForge DB configuration to use Neon connection string
  • Update Render environment variables (DB_HOST / DB_PORT / DB_NAME / DB_USER / DB_PASSWORD or DATABASE_URL)
  • Verify application functionality (queries, authentication flows, challenge pages, drill mode, submissions)
  • Remove AWS RDS instance after successful validation
  • Remove any unused AWS resources still tied to CodeForge DB (security groups, parameter groups, snapshots, etc.)

Impact

  • Affects build time
  • Affects packaging/deployment
  • Requires new secrets or environment variables

Acceptance criteria

  • CodeForge successfully connects to Neon Postgres in production (Render)
  • Existing tables/data migrated successfully (challenges, drill_items, submissions, etc.)
  • Core workflows function correctly after migration:
    - browsing challenges
    - drill mode generation
    - submissions persistence
    - user login / Cognito auth unaffected
  • Render environment variables updated and verified
  • AWS RDS instance can be deleted with no loss of functionality
  • AWS monthly billing decreases (RDS no longer present in Cost Explorer)

Metadata

Metadata

Labels

api:externalWork related to external/public API selection, integration, and resilience.area:ci-cdGitHub Actions, build, test, packaging, and release workflows.post-mvpUse for all issues/PRs that do not belong to the MVP release. Will be implement post-MVP.priority:P2-normalNormal priority; plan within the current milestone.project:mvpUse for all issues/PRs that belong to the MVP release. Will auto-add labeled items to the board.status:in-progressActively being worked on; not ready for review.

Projects

Status

Todo

Relationships

None yet

Development

No branches or pull requests

Issue actions