An API to build for an app
The mobile or web app needs a back end: accounts, data, payments, notifications and integrations.
Technology
NestJS and Node.js APIs and back ends for mobile and web apps: business modules, PostgreSQL, authentication, real time and testing. NestJS or Node.js appears in seven of our eight case studies.
1// orders.module.ts — illustration2@Module({3imports: [PrismaModule, PaymentsModule],4controllers: [OrdersController],5providers: [OrdersService],6exports: [OrdersService],7})8export class OrdersModule {}
Situations
The mobile or web app needs a back end: accounts, data, payments, notifications and integrations.
Unstructured code, few or no tests, a data model that is hard to change.
Moving from MongoDB to PostgreSQL, or restructuring a data model, without interrupting service.
Several business domains, roles, moderation or large imports living together in one API.
Scope of work
An API is judged by what it lets you change without breaking the apps that use it.
Business modules, dependency injection, decoupled controllers and services, conventions shared by the team.
PostgreSQL data models, Prisma, versioned migrations, and MongoDB when the use case justifies it.
REST APIs documented with OpenAPI, controlled versioning, contracts shared with client apps.
Accounts, roles, OAuth, AWS Cognito, Stripe payments and webhooks.
WebSocket and notifications for messaging, auctions or live progress tracking.
Unit and integration tests, continuous integration, tracked coverage. Blisterr's back end has 6,680 tests and 97% coverage.
Method
Business domains, data model and API contracts, approved with the teams that consume the API.
Module structure, authentication, conventions, tests and continuous integration.
Features delivered with their tests and documentation, with code review at every step.
Deployment, monitoring, logs and procedures, by the team that wrote the code.
Responsibilities
A typical division of responsibilities, agreed for each engagement.
| Topic | Your team | Black Tide |
|---|---|---|
| Business rules | You provide them and settle edge cases | We turn them into a model and an API |
| API contracts | Your client teams approve the contracts | We document and version them |
| Data | You remain the owner of the data and databases | We design the model and the migrations |
| Code review | Your process applies | We review and submit for review |
| Production | You decide on releases | We deploy and monitor |
Selected work
NestJS back end being migrated from MongoDB to PostgreSQL 17 with Prisma, table by table and without downtime; 6,680 tests and 97% coverage.
Read the Blisterr caseNestJS API with around twenty business modules, PostgreSQL and AWS Cognito: self-publishing for authors and trust-based moderation.
Read the Fantasy Alley caseEach case describes the work delivered, its scope and the current status of the product.
Budget and next steps
For a defined NestJS or Node.js product or increment: discovery sets the scope, the estimate and the delivery increments.
A senior back-end engineer joins your team at our public day rate of €750 excl. VAT, for a short or long engagement.
For an existing back end: a diagnostic of the code, data and operations, then stabilisation or a progressive migration.
Budget ranges by maturity level, from prototype to scalable product, are published on our pricing page.
Useful questions
Express leaves the whole structure to build; NestJS brings modules, dependency injection and conventions that help a team grow. For an API meant to last, we generally recommend NestJS.
PostgreSQL for most products, as soon as relationships and data integrity matter. MongoDB remains relevant for some document-oriented uses. On Blisterr, we are migrating from MongoDB to PostgreSQL table by table.
Yes. We first examine the code, data model, tests and deployment, then propose a step-by-step path rather than a rewrite.
Yes: Java, Python, C# or C++ depending on the context. NestJS remains the foundation of most of our published projects.
Next step
The apps that consume the API, the data and the deadline: that is the starting point.