ProjectsProjetos

CV MakerCV Maker

A guided CV builder for organizing your experience, reviewing every part, and exporting a polished PDF.Um criador de currículos guiado para organizar experiências, revisar tudo com calma e baixar o resultado em PDF.

Open CV MakerAbrir o CV Maker
StatusStatus
liveno ar
AboutSobre
A product I build and runUm produto que eu crio e mantenho
Built withTecnologias
  • Next.js 15
  • FastAPI
  • PostgreSQL 16
  • Redis 7
  • Docker Compose
  • Nginx
  • Cloudflare R2
  • Hetzner VPS
CV Maker homepage showing an overview of the product and its plans.
CV Maker homepage, July 2026Página inicial do CV Maker, julho de 2026

Overview

Visão geral

People can start with a guided questionnaire or upload an existing CV. AI helps organize and condense what they provide without adding jobs or skills that were never there. Everything stays editable until the PDF is ready to download.

Dá para começar respondendo a um questionário ou enviando um currículo que já existe. A IA ajuda a organizar e resumir o conteúdo sem acrescentar empregos ou habilidades que a pessoa não informou. Antes de baixar o PDF, dá para revisar e editar tudo.

Architecture

Arquitetura

The interface is built with Next.js, while FastAPI handles accounts, CVs, and payments. PostgreSQL stores the application data, Redis coordinates background work, and a separate worker generates the PDFs. The services run with Docker Compose behind Nginx on a VPS I manage.

A interface é feita em Next.js, enquanto o FastAPI cuida de contas, currículos e pagamentos. O PostgreSQL armazena os dados, o Redis coordena as tarefas em segundo plano e um worker separado gera os PDFs. Os serviços rodam com Docker Compose, atrás de Nginx, em um VPS que eu gerencio.

How it fits togetherComo tudo se encaixa
  1. 01 / appWeb interface

    Next.js questionnaire and review editor

  2. 02 / appApplication API

    FastAPI handles accounts, CVs, and payments

  3. 03 / dataData

    PostgreSQL stores application data; Redis coordinates tasks

  4. 04 / workerPDF worker

    Playwright renders PDFs in a separate worker

  5. 05 / storageObject storage

    Finished files are stored in Cloudflare R2

  6. 06 / edgeServer

    Nginx routes traffic on a VPS I manage

  1. 01 / appInterface web

    Questionário e editor de revisão em Next.js

  2. 02 / appAPI da aplicação

    FastAPI cuida de contas, currículos e pagamentos

  3. 03 / dataDados

    PostgreSQL armazena os dados; Redis coordena tarefas

  4. 04 / workerWorker de PDF

    Playwright gera os PDFs em um worker separado

  5. 05 / storageArmazenamento de objetos

    Os arquivos prontos ficam no Cloudflare R2

  6. 06 / edgeServidor

    Nginx roteia o tráfego em um VPS que eu gerencio

Operations

Operação

PDF generation sits outside the web request, so a slower render does not hold up the rest of the application. Finished files go to Cloudflare R2, and database changes are applied through explicit migrations. I can troubleshoot or recover one service without rebuilding the whole deployment.

A geração do PDF fica fora da requisição do site, então uma renderização mais demorada não prende o restante da aplicação. Os arquivos prontos vão para o Cloudflare R2, e as mudanças no banco entram por migrações explícitas. Consigo investigar ou recuperar um serviço sem precisar refazer o deploy inteiro.

Notes

Notas

The AI part is only a small piece of the product. Most of the work is making it clear what changed, letting people correct anything, and making sure the final CV still feels like theirs. Since I also run the service, I tend to feel the infrastructure cost of product decisions pretty quickly.

A parte de IA é só um pedaço do produto. A maior parte do trabalho está em mostrar o que mudou, deixar a pessoa corrigir qualquer coisa e garantir que o currículo final continue sendo dela. Como também sou eu quem mantém o serviço no ar, acabo sentindo bem rápido o custo de infraestrutura de cada decisão de produto.

NAV

Where to?Pra onde?

Arrow keys navigate · Enter opens · Esc closesSetas navegam · Enter abre · Esc fecha