I build software and run it on my own servers.

Tiziano Messina, 21 years old

Information Systems Engineering student, 4th year at UTN Rosario, Argentina

Open to my first junior role

Graduating 2027 · Remote, hybrid or on-site in Rosario · English B2

Photo of Tiziano Messina

Projects

Two things I built and still run.

AgroApp

Connects agricultural producers with rural contractors, with services priced per hectare.

  • Contractors publish services; producers find nearby ones, request work and rate the job.
  • A monorepo with a typed REST API, a web front end and one shared database schema.
  • Unit, integration and Playwright end-to-end tests. The whole stack starts with one docker compose command.

Team project for the DSW 2025 course at UTN Rosario, built with Jeremías Costantini.

AgroApp API documentation in Swagger: version 2.0.0, JWT authentication, and auth endpoints such as POST /auth/login and GET /auth/me.

Homelab

My own infrastructure, on a recycled 2014 all-in-one with a Celeron J1800 and 4 GB of RAM.

  • Private DNS for the whole house, blocking 240,687 ad and tracking domains.
  • HTTPS for every service through its own certificate authority. AgroApp runs behind it with no ports exposed.
  • Alerts on my phone when something breaks, and every real outage is diagnosed and written up in the repo.

Personal project, still growing.

6 running
Pi-hole + Unbound, Caddy, Uptime Kuma, Portainer, Samba, AgroApp
Next
Backups
Planned
Gitea, WireGuard
One outage, start to finishDNS went down for every device in the house. Pi-hole was quietly ignoring normal home-network traffic; one setting fixed it, and it’s now pinned in the config.Show the four steps
Symptom
Every device on the home network timed out on DNS.
Ruled out
A manual DNS setting on the client, the router’s client isolation (tcpdump showed the packets arriving) and Docker’s NAT rules.
Cause
Pi-hole starts with listeningMode LOCAL, which silently drops queries it doesn’t see as local, including normal LAN traffic NAT-ed through Docker. The FTL log said so: “ignoring query from non-local network”.
Fix
Switched to listeningMode ALL, then pinned it in the compose file so it survives recreating the container.
Pi-hole dashboard: 46,019 queries, 5,948 blocked, 240,687 domains on lists.
Portainer stacks list: agroapp, caddy, pihole, portainer, samba and uptime-kuma.

Skills & education

Grouped by where you can see them working.

AgroAppBuilt a full-stack app with
  • TypeScript
  • React
  • Node.js + Express
  • Prisma + MySQL
  • Vite + Tailwind CSS
  • Playwright
  • Git
HomelabRun my own servers with
  • Linux (Ubuntu Server)
  • Docker + Compose
  • DNS: Pi-hole, Unbound
  • Caddy
  • Uptime Kuma
  • Shell
UTN RosarioInformation Systems Engineering, subjects so far
  • Databases
  • Operating systems
  • Networks
  • Systems analysis & design
  • Object-oriented programming

Hiring a junior?

I’m looking for my first role in software or infrastructure. Write me about a position, an interview or anything on this page.