I'm Gabriel, a full stack engineer in Recife, finishing Computer Science at CIn (UFPE). Most of what I ship is TypeScript and React on the front with Django or Node behind it and PostgreSQL underneath, and almost all of it starts the same way. Somebody is doing something by hand that a computer should be doing instead.
That is the through line of this account. A venue tracking check-ins on paper. A company reconciling contracts in a spreadsheet. Attendance taken by trusting people about where they were standing when they said they were there. The interesting part is never the framework. It is the fifteen edge cases nobody mentions until the thing is live and someone's actual Tuesday depends on it working.
The rest of what you see here is coursework and experiments, kept public on purpose, including the half-finished ones, because pretending you sprang fully formed as a senior engineer helps nobody.
Note
Some repositories here are private, mostly client work and internal systems. Anything marked private in the table below is real, it just isn't browsable.
Roughly newest first. Where there is a live link, it is a real deployment that someone is actually using.
| Project | What it is | Stack | |
|---|---|---|---|
| anastasios-landing-page | Single-page site plus intelligence panel for H H Brasil, a sourcing and risk management consultancy in foreign trade. Static Next.js, hand-written WebGL2 ocean, no backend | TypeScript Next.js Three.js |
live |
| e-solucoes-website | Site for E-Soluções, an occupational health and safety firm here in Recife. Services, training, blog, the whole thing | TypeScript Next.js |
live |
| Beyond Class · private | Student portal, web app and API. Three repositories, split by concern | TypeScript React Python |
|
| toca-play-app | Check-in system for a venue. Grew well past the original scope into events, volunteers, inventory, reports and user roles | TypeScript Next.js Supabase |
live |
| Consultoria-website | Site for SM Terceirização, including a whistleblower channel | JavaScript Next.js |
live |
| geo-location-attendance | Attendance tracking tied to where you actually are, with the geofence work rendered through deck.gl | TypeScript Prisma PostgreSQL |
live |
| projetos-profissionais-do-futuro | Showcase for two front-end projects my students built. Their work, my scaffolding | HTML CSS JS |
live |
| Monitoramento de Contratos · private | Contract tracking system, front and back | Python Django |
|
| caminhos-digitais-2025-01 | E-commerce built by a class I taught. I mostly set up the rails and unblocked people | HTML CSS JS |
|
| instituto-portal | Lesson material and practice code from the web dev classes I teach | HTML CSS JS |
|
| gerador-de-parser | Parser generator. Compilers, from scratch, the hard way | Python |
Older things I'm still fond of
The largest thing I have built with a team is Hotelaria-website, a full hotel booking platform with a React front end and an Express back end, and it is also the most thoroughly tested thing on this account, because we wrote it with Cypress, Cucumber and Jest and I have not been able to ship anything untested comfortably since.
From the hardware and graphics side of the degree there is a multi-cycle MIPS processor handling R, I and J instructions in ModelSim, a ray tracer that was slow but did produce the images, and an octree implementation that began life as the ray tracer's companion and turned out to be the more interesting of the two.
The database coursework left behind a complete schema for a hypothetical prison system, written in PL/SQL back when I thought stored procedures were the answer to everything. C.O.AS.T is a colour detector in OpenCV and the first time computer vision genuinely clicked for me. The Haskell exercises were painful and worth it, A* across the Paris metro taught me how much of an algorithm is really the data structure you wrap around it, and Flashcards in Tkinter is the productive procrastination I mentioned earlier. The ABNT report template in LaTeX has quietly saved me more hours than everything above it combined.
Grouped by how often I actually open the documentation. Everything in the first group appears in a repository above rather than on a course certificate, which is the only claim I can make about a tool that means anything. The front end projects ship with Playwright or Vitest, Hotelaria-website runs on Cypress, Cucumber and Jest, and validation is Zod almost everywhere, because a missing test suite is the first thing anyone reviewing this would notice.
There are three different reasons a repository ends up on this account.
Something was being done by hand. Check-ins on paper, contracts in a spreadsheet, attendance taken on trust. These start narrow and get boring quickly, which is exactly the point, because the win is that a process nobody wanted to own now runs itself. toca-play-app, geo-location-attendance and the contract tracker all began as one screen and one form, and in every case the screen was the easy half.
I wanted to know whether something would work. Timeboxed, one question each, no obligation to survive. The WebGL2 ocean on the H H Brasil landing page was me asking whether I could write it without a library, and the answer was yes at a cost higher than the library would have been. gerador-de-parser was me asking whether I actually understood LR parsing, and the answer was no, and then later yes. Some of these get folded into real projects and most of them stay exactly where they are, which is fine. A killed experiment is still a result, and I would rather find the ceiling on a Saturday than in production.
Something had to keep running after I stopped looking at it. toca-play-app outgrew check-in into events, volunteers, inventory, reports and role-based access, and all the work worth talking about was in the second half. Permissions that do not leak, migrations that do not lose data, a schema that survives requirements arriving three months late. Beyond Class is split across three repositories by concern for the same reason. Given the choice I will take a boring datastore behind a clear boundary over an architecture I have to re-explain to myself in six months.
Working full stack with Django, React and AWS. Finishing the CS degree. Teaching web development on the side, which has quietly made me a better engineer than any tutorial ever did, because you cannot hand-wave an explanation to a room of people who will immediately ask you why.
Happy to talk about backends, databases, or teaching people to code. LinkedIn is at the top.
Sou Gabriel, engenheiro full stack no Recife, terminando Ciência da Computação no CIn (UFPE). A maior parte do que eu entrego é TypeScript e React na frente, Django ou Node atrás e PostgreSQL embaixo, e quase tudo começa do mesmo jeito. Alguém está fazendo na mão uma coisa que um computador deveria estar fazendo.
Esse é o fio condutor da conta. Uma casa de eventos controlando check-in no papel. Uma empresa conferindo contrato em planilha. Presença registrada na base da confiança sobre onde a pessoa estava quando disse que estava lá. A parte interessante nunca é o framework. São os quinze casos de borda que ninguém menciona até a coisa estar no ar e a terça-feira de alguém depender dela funcionando.
O resto do que você vê aqui é matéria de faculdade e experimento, público de propósito, inclusive o que ficou pela metade, porque fingir que você nasceu sênior não ajuda ninguém.
Nota. Alguns repositórios aqui são privados, na maioria trabalho de cliente e sistema interno. O que está marcado como private na tabela é real, só não é navegável.
A tabela em inglês acima está do mais recente pro mais antigo, com link pros deploys que estão no ar.
Existem três motivos diferentes pra um repositório terminar nesta conta.
Alguma coisa estava sendo feita na mão. Check-in no papel, contrato em planilha, presença por confiança. Começam pequenos e ficam entediantes rápido, e é justamente esse o ponto, porque o ganho é um processo que ninguém queria assumir passar a rodar sozinho. Em todos os casos a tela foi a metade fácil.
Eu queria saber se ia funcionar. Com prazo, uma pergunta cada, sem obrigação de sobreviver. O oceano em WebGL2 da landing da H H Brasil era eu perguntando se dava pra escrever aquilo sem biblioteca, e a resposta foi sim, por um custo maior do que a biblioteca teria saído. O gerador-de-parser era eu perguntando se entendia parsing LR de verdade, e a resposta foi não, e depois sim. Experimento morto também é resultado, e prefiro achar o teto num sábado do que em produção.
Alguma coisa tinha que continuar rodando depois que eu parasse de olhar. O toca-play-app passou de check-in pra eventos, voluntários, estoque, relatórios e papéis de acesso, e todo o trabalho que vale comentar estava na segunda metade. Permissão que não vaza, migration que não perde dado, schema que aguenta requisito chegando três meses atrasado. O Beyond Class está separado em três repositórios por responsabilidade pelo mesmo motivo. Se puder escolher, eu fico com um datastore chato atrás de uma fronteira clara em vez de uma arquitetura que eu vou ter que reexplicar pra mim mesmo em seis meses.
Trabalhando full stack com Django, React e AWS. Terminando a graduação. Ensinando desenvolvimento web nas horas vagas, o que discretamente me fez um engenheiro melhor do que qualquer tutorial, porque não dá pra enrolar uma explicação numa sala de pessoas que vão te perguntar na hora por quê.
Aberto pra conversar sobre backend, banco de dados ou ensinar gente a programar. LinkedIn no topo.