Built a Node.js/Express/Sequelize API to replace the original Laravel/Dgraph monolith, migrated the data model to a relational MySQL schema, added OAuth/JWT authentication, PayPal payments, and Docker/CI containerization. Next.js frontend.
The core of the project was building a Node.js/Express/Sequelize API meant to replace the existing Laravel/Dgraph monolith. I analyzed the original Laravel routes and models to define what the new API had to reproduce, after weighing several architectural approaches (including a breakdown into microservices) before settling on a unified Express API. The Next.js frontend provides server-side rendering for SEO and smooth client-side navigation.
Migrating the data model from Dgraph to MySQL was a major undertaking. The initial graph database modeled the complex relationships well (artist-track-competition-vote-ranking) but caused performance and maintenance problems. Flattening it into a relational MySQL schema, via Sequelize migrations, improved query times and simplified backups.
Artist ranking relies on an existing ELO-style system that I reworked and extended. Each artist's score evolves according to their competition results, weighted by the level of their opponents, for more balanced contests and fair progression regardless of seniority on the platform.
Node.js/Express/Sequelize API replacing the original Laravel/Dgraph monolith.
MySQL schema migrations (beats, playlists, purchases, genres) via Sequelize.
OAuth/JWT authentication (Google, Facebook, Apple, Twitter) and PayPal payments.
Migration of the data model from Dgraph (graphs) to a relational MySQL schema.
Took over and extended an existing ELO-style scoring system (weighted rankings).
Docker containerization and a continuous integration (CI) pipeline.
Contributed to planning the frontend migration from React to Next.js.
Dgraph to MySQL
Replacement API
Auth and PayPal payments
A brief, a repo, or a quick call - whatever works.