Full-stack developer in Antananarivo, Madagascar, with three years of experience, internship included. I mostly work with NestJS and Node.js on the server, React and Next.js on the client, and PostgreSQL underneath.
The three projects below each started with a problem I did not know how to solve. I read, compared what others had done, and picked the idea that fit. None of it is my invention. What I can explain is the problem, the idea, and why it fit.
Every view or like a movie gets counts a little less as time passes, the same way yesterday's news slips down a front page. While reading about how sites build their trending lists, I came across exponential decay: each interaction loses half its weight after a fixed delay, called the half-life.
The useful part is what it removes. The ranking stays correct on its own, so there is no nightly job recomputing it. Three half-lives run side by side, which gives three lists from the same data: right now, today, this week.
Next.js 16 · Postgres · Drizzle · repo · live
A real estate app where the database itself decides who can see or edit a listing, using PostgreSQL row-level security. The application code does not repeat those rules.
The case I cared about was delegation. An agent can manage a listing they do not own, under a mandate, and that right ends by itself when the mandate expires. Each cell of this table is a test:
| see | create | edit | delete | |
|---|---|---|---|---|
| visitor, published listing | yes | — | — | — |
| visitor, draft | — | — | — | — |
| client | yes | — | — | — |
| owning agent | yes | yes | yes | yes |
| mandated agent | yes | — | yes | — |
| other agent | — | — | — | — |
The tests run against a real PostgreSQL started in memory (PGlite), so there is nothing to install. Row-level security has a few well-known traps. I ran into them one by one, and the tests now check them.
SvelteKit · Supabase · PGlite · repo · live
Each format is written once, as a small map of matches: where the winner goes next, and where the loser goes.
graph LR
M1[Match 1] --> SF[Semi final]
M2[Match 2] --> SF
M1 -.-> LB[Losers bracket]
M2 -.-> LB
SF --> F[Final]
LB --> F
classDef signal fill:#FF4F6E,stroke:#0A1628,stroke-width:2px,color:#0A1628;
class F signal;
Solid arrows carry the winner, dashed ones the loser. The rest of the app only reads that map. Recording a result, fixing a wrong score, knowing when the tournament is over: none of it needs to know which format is being played. Adding a format means adding one file.
The app also shows each player's chances of winning, based on Elo ratings, the system chess uses.
NestJS · React · SQLite · 249 tests · repo · no public demo, it runs with one Docker command
Co-founder and full-stack developer · NEXTRI Antananarivo · May 2026 – present
NEXTRI is a collective of three software engineers. Together we designed and built a modular management application: users, groups and permissions, invoicing with PDF output, dashboards. The API is in NestJS and TypeScript on Fastify, with PostgreSQL through Prisma and a Redis cache. The interface is in Next.js and React. It is not deployed yet and has no users.
Application developer · Stellar-IX (Axian Group) Antananarivo · September 2022 – January 2025
I rewrote the backend of a VMware monitoring application in FastAPI, with caching, and its average data load dropped from 4s to 300–500ms. Routine operations went through the vSphere REST API, and pyVmomi covered what only the SOAP SDK could do.
I built the time-series statistics for virtual machines in ClickHouse, and a generic table-and-chart module (AG Grid) for the internal dashboard. The codebase ran on legacy ejs and Node, and I argued for TypeScript on every new module. It took several team discussions before it was accepted. With the team, I then put Docker and CI/CD pipelines on every project, in a team of eleven.
Developer, internship · Ingenosya Madagascar Antananarivo · August 2021 – February 2022
In a team of eight, I built the administration space and the web services of an audio-visual e-learning platform for a client in Paris. We started from scratch and took it to pre-production. I attended the client meetings.
Master MIAGE, Mobiquity, Databases and Systems Integration (MBDS). Université Côte d'Azur & IT University, Antananarivo · 2022 – 2024. Bachelor in computer science, Web and Design. IT University, Antananarivo · 2018 – 2022.
DevSecOps Professional, Practical DevSecOps, January 2024. A three-day course with an instructor and no exam, so a course rather than a certification.
Main · TypeScript · Node.js · NestJS · React · Next.js · PostgreSQL Backend and API · Express · REST API design · WebSocket · OpenAPI Frontend · Angular · Tailwind CSS Databases and ORMs · MongoDB · MySQL · ClickHouse · Redis · Prisma · Mongoose DevOps · Docker · CI/CD (GitHub Actions) Quality · unit and integration tests Other languages · Python (FastAPI) · Java (Spring Boot, Jakarta EE) AI · AI-assisted development (Claude Code; aider with local models through Ollama)
Both live demos are checked every six hours from GitHub's servers. The chart shows the median of five requests, and a failed check leaves a gap in the line instead of a fake fast response. The workflow does the measuring.
LinkedIn · sitraka.rasatarivony@gmail.com
Malagasy (native) · French (fluent) · English (intermediate to professional, written)