ProjectsDelineate
05

Delineate

A database modernization project that replaced a duplication-heavy MongoDB model with a normalized PostgreSQL structure built for reliable, consistent, and maintainable data.

Project overview

Built around the product, users, and outcome.

Delineate's first version stored repeated business information across MongoDB documents, creating inconsistent records and unclear data ownership. For version 2, I helped turn that loosely structured model into an explicit relational design where shared information has a single source of truth and relationships can be enforced by the database.

MY ROLEBackend & Database Engineer — Version 2 Migration

Worked within a larger engineering team to audit and chart the MongoDB collections, reconstruct explicit and implicit relationships, normalize the data model, and migrate the affected persistence layer and NestJS modules to PostgreSQL.

PostgreSQLMongoDBMongooseNestJSSchema DesignDatabase NormalizationData Migration
Key contributions

The capabilities and outcomes I delivered.

  • 01MongoDB collection and document-structure audit
  • 02Data-model charts and relationship discovery
  • 03Normalized PostgreSQL schema design
  • 04Explicit one-to-one, one-to-many, and many-to-many relations
  • 05Reduced duplication and stronger referential integrity
  • 06Migration of affected NestJS persistence modules
Challenges & solutions

Technical decisions shaped by real constraints.

Understanding a loosely structured document model

CHALLENGE

Nested objects, arrays, embedded records, and variable document shapes made the complete database structure difficult to see and reason about.

SOLUTION

I audited each MongoDB collection and created charts of its fields, structures, identifiers, repeated values, and known dependencies before designing the target schema.

Reconstructing hidden relationships

CHALLENGE

Some relationships used MongoDB references, while others existed only through embedded documents, duplicated attributes, or application conventions.

SOLUTION

I traced both explicit references and implicit data connections, identified their business ownership, and represented them as clear relational associations in PostgreSQL.

Removing duplication without losing meaning

CHALLENGE

A direct collection-to-table conversion would have carried the original inconsistencies and maintenance problems into the SQL database.

SOLUTION

I separated repeated information into focused, normalized tables and connected them through keys, creating authoritative records and a foundation for database-enforced integrity.

Project screenshots

A closer look at the product experience.

Real project images can replace these placeholders without changing the page layout.

Explore the project

See the work in context.