Skip to content
Al Shakib E Elahi
06Artist network

Mélange

Mélange is a talent pool connecting musical, digital and visual artists across continents and skill sets. I built the backend and the real-time layer, and owned deployment. The product's value is entirely in who can find and reach whom, which makes discovery and messaging the system rather than features on top of it.

Year
2024
Role
Backend, API integration, deployment
Context
Client product
Category
Product
Mélange homepage

The network homepage.

01The problem

A network spanning continents and disciplines has no useful default ordering. A producer in one timezone needs to find a vocalist in another, start a conversation, and have it survive both of them being offline. Messaging that only works while two people are simultaneously connected is not messaging.

02The approach

Express.js services back artist profiles, discovery and conversations, with MongoDB holding the profile documents whose shape differs by discipline. Socket.IO carries live messaging and notifications, with messages persisted first so delivery is a read against durable state rather than a hope that a socket was open. Agenda handles the email queue for digests and off-platform notifications, and RTK Query keeps the Next.js client's repeated profile views cheap.

03Architecture

How the pieces fit.

  1. API

    Express.js services for artist profiles, discovery and conversations.

  2. Data

    MongoDB - profile documents vary by discipline, which suits a document model.

  3. Realtime

    Socket.IO for messaging and notifications, persisted before delivery.

  4. Queue

    Agenda for the email notification pipeline.

  5. Client data

    RTK Query for cached profile and listing fetches.

  6. Edge

    Nginx reverse proxy on DigitalOcean.

04Tech stack
Next.jsExpress.jsMongoDBSocket.IOAgendaRTK QueryNginx

Deployment

  • Hosted on DigitalOcean
  • Domain registered with Namecheap and connected via DNS
  • Nginx as reverse proxy, TMUX for session management
05Key features
  • Artist profiles across musical, digital and visual disciplines
  • Real-time messaging and notifications over Socket.IO
  • Agenda-backed email queue for off-platform notifications
  • Cache-aware client data fetching with RTK Query
06Challenges

The parts that were not obvious at the start.

  1. 01

    Messaging across timezones

    Persisting the message before emitting it turns delivery into a query against durable state. A user who was offline when a message was sent reads it on reconnect, from the same source of truth the live listener used.

  2. 02

    One schema, many disciplines

    A vocalist, a 3D artist and a photographer do not share a profile shape. A document model let each discipline carry its own fields without a migration for every new category.

07Results
  • Live at melangerecords.online
  • Artists across disciplines and continents discoverable in one network
08What I took from it
  • Persist, then emit. A socket is a transport, never a store.
  • Model the variation your domain actually has rather than flattening it into a schema that fits none of it.