Skip to content
Home

// all projects

Everything I've built

Every project, newest and strongest first — including the smaller ones that don't make the front page.

SIMF budget-execution dashboard: committed, settled-payable and bank-balance figures above a table of commitments by supplier and process.

SIMF

case study

Internal Financial Management System

Internal web platform that monitors budget & financial execution for the Pará State Department of Education. Anchor project — I'm the tech lead and product owner.

  • Next.js 15
  • React
  • Tailwind
  • Supabase
  • PostgreSQL

Case study

Private gov system — case study only, with fictional-data screenshots. No code or real data is published.

problem
Budget and financial execution were tracked across scattered tools, with no single real-time view for the directors who answer for it.
solution
A role-based web platform that reads SIAFE data in real time, with modules for budget execution, settlements, payments and bank accounts — in active use by DFIN and DPPC.
impact
In active production use, serving SAPF. Deployed on an Ubuntu VM (Nginx + PM2) behind internal DNS with SSL.
ClickContas cash book: monthly entries with carried balance, income and expense totals, and a running balance column.

Modular accounting SaaS

Multi-tenant platform that digitises an accounting firm's routine: AI reads handwritten timesheets, and a shared cash book lets each client company post its own entries for the accountant to reconcile.

  • Next.js
  • TypeScript
  • React
  • Tailwind
  • PostgreSQL (Supabase)
  • Google Sheets API
  • Google Gemini
  • Vercel

Case study

Private client product — case study only, with fictional-data mockups of the real screens.

problem
The firm ran two routines by hand: retyping photographed handwritten timesheets into a spreadsheet, one at a time, and posting each client's cash movements that arrived by WhatsApp or on paper — with no standard and no consolidated view.
solution
Two independent modules on one multi-tenant platform. Gemini reads the photographed timesheet and a side-by-side review screen applies the business rules; the client company posts its own cash entries against a chart of accounts the accountant standardised, and she reconciles and closes the month.
impact
In production with real clients. The work that used to be retyping is now review, and the loop closes on itself: the system generates the blank timesheet, the client fills it in by hand, a photo goes back in, and the spreadsheet comes out.
Balcão de Atendimento coordination dashboard, showing scheduled schools, slot occupancy per day and outstanding invitations.

Scheduling & auditable service records

Full-stack platform that schedules ~110 schools into 200 in-person slots and turns every session into tamper-evident proof for federal oversight bodies. Built and shipped solo.

  • Next.js
  • TypeScript
  • PostgreSQL
  • Drizzle ORM
  • Tailwind
  • Docker

Case study

GitHub

Public repo is a demo build with fictional data — the production instance is internal.

problem
Schools told oversight bodies they were never trained on how to account for federal funds; the department said it did train them. Neither side could prove it.
solution
Every session becomes an immutable record with an author and a timestamp — corrections are appended as signed addenda, never overwrites. Schools book through a passwordless signed-token link; coordination and analysts get their own roles.
impact
In production. The rules that matter live in the database, not just the app: partial unique indexes make a double-booked slot impossible. Shipped onto a shared corporate database behind a reverse proxy I didn't control.
Sensse storefront home page: brand header, same-day regional delivery banner, editorial posts and product categories.

Sensse

live

Custom e-commerce, storefront to back-office

Sexual-wellness store in production: catalogue, Pix and card checkout, postcode-based shipping, stock held against the payment clock, and a back-office the owners run themselves.

  • Next.js 16
  • TypeScript
  • Tailwind v4
  • PostgreSQL (Supabase)
  • Row Level Security
  • Mercado Pago
  • Melhor Envio
  • Vercel

Case study

SiteGitHub

Public repo is the production code trimmed for portfolio; screens are mockups with fictional data and neutral product art.

problem
The shop sold over WhatsApp, one conversation at a time — quoting prices, calculating shipping, sending a Pix key, checking it cleared, noting stock in a notebook. That caps sales at however many messages one person can answer, and leaves no history of what sells or where buyers come from.
solution
A complete store built from scratch on Next.js and its own Postgres: catalogue with variants and stock, search, favourites, cart, Pix (expiring QR) and card checkout, postcode shipping with same-day local delivery, customer area, an editorial blog with its own publishing panel, and a back-office covering orders, stock with cost and expiry, finance, influencer coupons and cart recovery.
impact
In production at sensse.com.br, serving Belém, Ananindeua and Marituba with same-day delivery and the rest of Brazil by post. The whole operation — products, stock, dispatch, finance and content — is run by the owners in the panel, with no developer in the loop.
The storefront grid on a phone: twenty product cards addressed A1 to E4, each with a price and an ADD button.

Full-stack / IoT

A QR-code vending machine for handmade goods: one Pix covers a multi-item cart, and a payment webhook is the only thing allowed to move stock.

  • FastAPI
  • Python 3.11
  • PostgreSQL
  • psycopg2
  • Mercado Pago (Pix)
  • Cloudinary
  • Tailwind CSS
  • Vanilla JS
  • Railway
  • ESP32 / MQTT

Case study

The repository is public, but this case study is published without a link while a credential found in its documentation is rotated.

problem
Selling handmade pieces in residential buildings means standing by a table for hours or trusting an honour box. A conventional vending machine does not fix it: a card reader charges a monthly fee and a per-transaction cut that an R$ 8.50 hair clip cannot absorb, and cash has to be collected and secured. The machine needed to sell twenty distinct items, unattended, at R$ 5.50 to R$ 24.50, with no hardware in the customer's path.
solution
The payment terminal was removed from the machine and replaced by a sticker. A QR code on the glass opens a mobile storefront that mirrors the machine's physical layout — a 4×5 grid where every card is a real coil, addressed A1 to E4. The customer fills a bag across several slots and pays one Pix for the whole cart: the backend totals it server-side, asks Mercado Pago for a single charge, and waits. Nothing about the order is trusted until the webhook reports approved.
impact
Not measured, and deliberately not claimed. The software path runs in production end to end — storefront, Pix charge, confirmation webhook, stock subtraction — but physical dispensing is not implemented: the ESP32 firmware file is empty and there is no MQTT publisher. The honest summary is a payment and inventory system working in production, attached to a machine that cannot yet turn its coils. Any figure about units sold would be fiction.