HomeWorkLaboratoryCertificationsBlogLet's Talk

© 2026 Juan Villegas. All rights reserved.

Solutions Architect

    Back

    MoniWow — API

    API — multi-tenant personal finance

    NestJS backend of the MoniWow finance mobile app: hexagonal architecture that replicates the contract the mobile app already had defined, JWT authentication with real isolation per household (workspace), and the same business rules also running on the server side.

    Infrastructure & Backend

    The Challenge

    The mobile app already defined the complete contract (8 ports, as if they were endpoints) before a real backend existed. What was missing was building an API that respected that contract to the letter, without inventing new validations, and that a complete household could share its data without leaking to another.

    The Solution

    NestJS with hexagonal architecture, pure domain without Nest or Mongo dependencies. Each of the mobile's 8 ports became a real endpoint; the JWT carries the embedded workspace and decides which household each request sees, verified with two real households running in parallel on the same database without crossing.

    Development time

    In active development since July 2026

    Related project

    MoniWow

    Role in the project

    Solutions Architect and Full Stack Dev.

    Code

    Tech Stack

    Backend

    NestJS

    Database

    MongoDBMongoose

    Infrastructure

    DockerTraefik

    What it protects in production

    • JWT authentication with mandatory signing secret.
    • Passwords hashed with bcrypt.
    • Data isolation per household (workspace) on each endpoint.
    • Docker container without elevated privileges.

    Infrastructure in production

    • Deployed on own VPS with Traefik and Docker, same infrastructure pattern as the rest of the catalog, with MongoDB shared among personal projects on the same server.

    How it's deployed

    Mobile app (Expo / React Native)
    Traefik (reverse proxy + automatic TLS)
    Docker container (NestJS API, multi-stage build with pnpm)
    MongoDB (shared instance with other personal projects)
    React Flow
    Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
    Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.
    ShareLinkedIn

    Need something similar?

    Let's talk about your project.

    Let's talk