01 / MOBILE · DATING BACKEND
DiamourApp
User-interaction APIs for a dating app helping Nigerians abroad find a connection that feels like home.
App download links are available on the Diamour website.

THE PRODUCT
Built around a real need.
Diamour is a dating app for Nigerians abroad. I joined DiamourApp Incorporated in August 2025 and worked with the CTO, contributing primarily to user-interaction APIs, endpoint development and integration within the backend supporting its Flutter mobile experience.
- User-interaction endpoints and integration
- Likes, saves, passes, blocks and reports
- Collaboration with the CTO
MY CONTRIBUTION
From problem to working product.
Collaboration with the CTO · Joined August 2025 · Backend development · User-interaction APIs, endpoints & integration
I joined DiamourApp Incorporated in August 2025 and worked with the CTO, contributing primarily to user-interaction API and endpoint development and integration. The wider backend supports accounts, rich profiles, discovery and social interactions for the Flutter mobile app. The sections below distinguish my interaction-focused contribution from the shared backend architecture and its documented follow-up work.
The interaction journey
- Authenticate
- Discover profiles
- Like, save or pass
- Review interactions
- Block or report
01User interactions as clear API contracts
The problem
The mobile app needed consistent ways to record and retrieve likes, saves, passes, blocks and reports.
Backend implementation
My main contribution was developing and integrating user-interaction APIs and endpoints with the CTO. The interaction domain supports creating, listing, filtering and deleting interactions, retrieving them by type and returning summary counts and related profiles.
02Validation and duplicate interactions
The problem
Interaction requests needed valid participants and supported action types, with useful feedback when the same action was repeated.
Backend implementation
The interaction implementation validates both users and the saved, liked, passed, blocked and reported action types. It maps duplicate database errors to understandable responses and includes batch upsert support. Automatic mutual-match creation after two likes is not yet wired.
03Profiles behind each interaction
The problem
A list of interaction identifiers alone would not provide the profile information needed by the mobile experience.
Backend implementation
The interaction data layer returns full profiles of interacting users through related-table queries. The wider profile domain aggregates basic information, location, biography, lifestyle, photos, interests and match preferences, with DTO validation and conversion between API and stored data.
04Discovery and filtered search
The problem
People needed to find relevant profiles using preferences rather than an undifferentiated user list.
Backend implementation
The shared backend includes discovery search, suggestions and filters for age, location, relationship status, education and other profile attributes. Controllers and services separate request handling from filtering logic and return pagination information and applied filters. This is wider system context rather than a claim of sole ownership.
05A layered backend across two data environments
What the project delivers
My contribution strengthened the user-interaction API and integration layer within Diamour’s collaborative backend effort. The documented system connects accounts, profiles, discovery and interaction management to the mobile experience, while messaging, settings and several backend flows remain unfinished in the supplied scope.
Backend follow-up priorities
- Implement the scaffolded messaging, notification and privacy/settings endpoints, currently returning 501 responses.
- Complete automatic mutual-match creation, profile-completion scoring, refresh-token handling and account-update behaviour.
- Reconcile interaction queries with schema column names, local/production schema differences and settings contracts; correct the documented account-field mapping issue.
- Expand interaction, discovery, repository and adapter tests, including real-database integration coverage.
- Improve filtering pagination and review transaction behaviour across database adapters.
THE TECHNOLOGY
How it comes together.
Mobile client
Flutter
The app’s frontend consumes the backend APIs. My contribution centres on backend endpoints and integration.
API & business logic
Node.js · TypeScript · Express
Routes, controllers and services handle accounts, profiles, discovery and interactions, with repositories separating database access.
Local development
PostgreSQL · Docker
A local database adapter and containerised database support development. The shared factory selects the configured data environment.
Managed data environment
Supabase
The production-oriented adapter uses PostgREST and RPC behind the shared repository interface. Schema alignment and transaction behaviour have documented follow-up work.
Integration tooling
OpenAPI · Pino · Jest
Swagger contracts, structured logs and Jest/Supertest tests support development. Interaction and end-to-end database test coverage remain priorities.