Skip to content
Gustavo Maia

Gustavo Maia, Salvador, Brazil

I make production systems faster, steadier and cheaper to run.

I'm a mid-level full-stack developer focused on backend. I work with Node.js, NestJS, queues, caching and cloud, and I'm currently building a corporate mobility platform at Koepe do Brasil, used by clients such as Petrobras.

Measured in production, before and after my work
  • A list page on a corporate mobility platform. Response time dropped from 24.5 seconds to 1 second, 96% faster.

    Its payload also dropped from 10.8 MB to 11 KB.

  • An ERP with 50,000+ users. Response time dropped from 16 seconds to 200 milliseconds, 98% faster.

  • Storage for 108,000 images. Storage dropped from 20 gigabytes to 2 gigabytes, 90% less space.

    And 90% lower cost after moving to S3.

Problems I've solved

Three real situations, told the way they happened: what was broken, what I did and what changed.

Koepe do Brasil, 2026

Reports that brought the API down

The problem

XLSX and PDF reports were generated inside the API itself. Large exports loaded everything into memory and took the service down for everyone.

Result

The memory spikes that crashed the API are gone. Users request a report, keep working, and download the file straight from S3 through a presigned URL.

What I did

  • Moved exports out of the API into an event-driven microservice on RabbitMQ.
  • Made the worker stream from MongoDB and stream the file to S3, never holding the whole report in memory.
  • Added retries and a dead letter queue so no export fails silently.
  • Wired it into the React front end with a real-time notice when the file is ready, isolated per tenant.
How the flow ended up
  1. Request

    the API answers at once and publishes an event

  2. RabbitMQ

    queue with retries; failures go to the DLQ

  3. Worker

    streams from MongoDB, builds XLSX or PDF

  4. AWS S3

    streamed upload, flat memory use

  5. Download

    presigned URL and a real-time notice

Koepe do Brasil, 2026

A list page that took 24 seconds

The problem

List endpoints returned whole documents with every relation populated, and filtering happened on the client. A single response reached 10.8 MB and took 24.5 s.

Result

Up to 99.9% smaller payloads (10.8 MB to 11 KB) and up to 96% lower latency (24.5 s to 1 s), without breaking any app version.

What I did

  • Profiled memory and the time spent in each step of the request until I found where the weight was.
  • Projected only the fields each screen needs, on demand, and populated relations selectively in Mongoose.
  • Moved search to the server with an Aggregation Pipeline and a result limit.
  • Kept the already-published mobile apps working and wrote API contract conventions for the team.

Acesso Ponto Tech, 2025

Time-clock records arriving all at once

The problem

Electronic time-clock records for a public-sector client arrived in parallel and were processed inside the request. The API slowed down, records got duplicated, and the integration with the client's system failed without a trace.

Result

API response time dropped 99.7%, duplicates disappeared, and every record became traceable from the time clock to the client's system.

What I did

  • Designed a queue architecture with Bull and Redis to ingest and process everything in the background, in parallel and with retries.
  • Built Redis-first deduplication, with generation-based cache rotation during daily imports.
  • Rewrote the external integration to send batches, flushed by volume or time window, with exponential backoff, isolation of invalid records and alerts on critical failures.
How the flow ended up
  1. Records

    arrive in parallel, all day long

  2. Redis

    deduplication before touching the database

  3. Bull queue

    background processing with retries

  4. Batches

    grouped by volume or time window

  5. External API

    exponential backoff and failure alerts

Experience

  1. – now

    Mid-level full-stack developer, Koepe do Brasil

    Remote

    A corporate mobility platform built as an innovation project for large clients such as Petrobras.

    • Event-driven export microservice on RabbitMQ, streaming from MongoDB to S3, with retries and a DLQ.
    • Performance investigation: up to 99.9% smaller payloads and up to 96% lower latency on list endpoints.
    • Bulk document upload with a Redis queue, automatic matching to existing records, and Azure Blob Storage.
    • Work schedule and labor-law policy modules with real-time validation.
    • NestJS
    • React
    • React Native
    • MongoDB
    • RabbitMQ
    • Redis
    • AWS S3
    • Docker
  2. –

    Software developer, Acesso Ponto Tech

    Salvador, on-site

    Electronic time tracking and public procurement analysis, with EBSERH (a federal hospital network) as the main client.

    • Queue architecture with Bull and Redis: 99.7% lower API response time.
    • An ERP with 50,000+ users went from 16 s to 200 ms through caching and query rewrites.
    • Migrated 108,000 images from local disk to S3 with near-zero downtime: 90% lower cost.
    • 60% less CPU, observability with Grafana, Prometheus and Loki, and backups restorable in under 10 minutes.
    • Node.js
    • NestJS
    • Redis
    • Bull
    • AWS S3
    • Grafana
    • Prometheus
    • Loki
  3. –

    Freelance software developer, Kastelly Design

    Remote

    Management system for a custom furniture store: clients, quotes, contracts, projects and finances.

    • Java API with Spring Boot, MongoDB Atlas, JWT, Caffeine caching, and PDF generation and delivery.
    • Electron and React desktop app with automatic updates through GitHub Releases, API hosted on AWS EC2.
    • Java
    • Spring Boot
    • MongoDB
    • Electron
    • React
    • AWS EC2
  4. –

    IT intern, Colégio Liceu Salesiano do Salvador

    Salvador, on-site

    Internal systems for the school.

    • IT asset tracking with Spring Boot, React and MySQL, tested with JUnit and documented with Swagger.
    • Service request form with Node.js, Express and React, containerized and tested with Jest.
    • Java
    • Spring Boot
    • Node.js
    • React
    • MySQL
    • MongoDB
    • Docker
  5. –

    Junior full-stack developer, Redgtech Automação

    Remote

    Apps for controlling home automation and IoT devices.

    • Navigation and UX of the React Native app, with state centralized in the Context API.
    • Electron desktop prototype for controlling IoT devices.
    • Asynchronous notifications through a process queue, keeping the interface responsive.
    • React Native
    • React
    • Electron
    • TypeScript

Education

Associate degree in Systems Analysis and Development

Universidade Salvador (UNIFACS), – in progress

Side projects

What I build outside work, usually to fix a problem of my own.

  • CashFlow

    Cash flow tracking with a REST API and a Telegram bot for logging an expense in seconds. Each user sees only their own data, every write is audited asynchronously, and every request is traceable end to end.

    • NestJS
    • PostgreSQL
    • Prisma
    • BullMQ
    • Telegram
  • Personal finances

    A finance organizer that captures transactions from phone notifications, with spending charts and recurring subscription tracking. API on Azure, front end on Vercel.

    • Node.js
    • Express
    • Prisma
    • MongoDB
    • React
    • Zustand

    Watch the demo on LinkedIn

  • Comanda

    An app for splitting the bar tab: each order records who had it, the service charge is adjustable, and the final bill shows what each person owes, down to the cent.

    • React
    • TypeScript
    • PWA

What I work with

Backend
Node.js, TypeScript, NestJS, Express, Fastify, Java, Spring Boot
Queues and caching
RabbitMQ, BullMQ, Redis, WebSockets
Data
MongoDB, PostgreSQL, MySQL, Prisma, Mongoose
Cloud and infra
AWS S3, EC2, Lambda, CloudWatch, Azure Blob Storage, Docker, Linux, CI/CD
Observability
Grafana, Prometheus, Loki
Front end and mobile
React, Next.js, React Native, Electron, Tailwind, Zustand
Testing
Jest, Vitest, Supertest, Cypress, JUnit

Let's talk

For roles, projects, or just a chat about backend work, email is the fastest way to reach me.

ms.gustavo@outlook.com

You can also find me on LinkedIn and GitHub.

Or send a message from here