Skip to content

Rosario, Santa Fe, Argentina

Felipe Garcia Suez

Backend Python Developer

What I build is running right now, on a server I administer myself.

My sites, right now

  • caudalwallet.comChecking…
  • jacintalynch.artChecking…

Status checked live when this page loaded.

About

I've worked in Python for over four years, mostly on the backend: data models, PostgreSQL, integrations and accounting systems that can't afford to fail.

Outside work I build my own products and take them all the way — which for me means all the way to the server. I bought a VPS, hardened it, and that's where my applications run, with backups I've tested by restoring them.

When something breaks I'd rather understand the cause than patch the symptom. It usually takes longer, and it's usually the only way it doesn't come back.

4+
years of professional experience
2
of my own applications in production
1
server of my own, administered by me
Languages

SpanishNative

EnglishProfessional · daily code, documentation and teamwork

Projects

In production

Deployed on my server and running right now.

In productioncaudalwallet.com

Caudal

Self-hosted, open source personal finance manager.

The problem it solves

Small recurring expenses — coffee, delivery, the subscription nobody cancels — never show up as a problem on a bank statement. They're diluted across hundreds of uncategorized lines. At the end of the month the money is gone and there's no way to point at where.

  • Python 3.12
  • Django 5.2
  • PostgreSQL 17
  • HTMX
  • Alpine.js
  • gunicorn
Caudal open on a phone at caudalwallet.com, showing the small-expenses panel with the categories Viaje, Hogar, Salud and Supermercado, and a 46% increase over last month. Amounts are blurred.
In productionjacintalynch.art

CuadrosJaci

Web catalogue for an artist, on its own domain.

The problem it solves

An artist showing work on social media depends on the algorithm and has no way to present an organised catalogue: by style, by medium, by size. Someone asking about a specific piece ends up scrolling through old posts.

  • Python 3.12
  • Django 5
  • Django REST Framework
  • PostgreSQL 16
  • React
  • Vite
A walkthrough of jacintalynch.art: the catalogue grid and the detail view for the piece Doberrman, with its description and availability.

Other projects

Discontinued

CoProduce

Remote music co-production over Ableton Live.

  • TypeScript
  • Electron
  • WebRTC
  • Node.js
Read the full case
In development

Gardenia Aromas

Candles and home fragrance e-commerce.

  • Python
  • Django
  • PostgreSQL
  • Docker
Read the full case

Infrastructure

I don't depend on a platform for my code to exist. I rent a server, hardened it, documented it, and that's where my applications run.

Two separate applications, on separate domains, sharing a single server. The only process listening on the internet is the reverse proxy; everything else talks over internal Docker networks that go nowhere else.

  1. Edge — exposed to the internet

    Caddy

    The server's only open ports are 80, 443 and SSH. It issues and renews TLS certificates for both domains with no intervention.

  2. Applications — shared network

    caudal-web

    gunicorn + Django. No published ports: Caddy reaches it by service name.

    cuadrosjaci-web

    Django REST Framework API. The frontend is static files served by the proxy.

  3. Data — isolated networks, one per app

    caudal-db

    PostgreSQL. Verified it doesn't answer from the proxy's network: only its own application can reach it.

    cuadrosjaci-db

    PostgreSQL, on its own network. A compromised app can't reach the other one's database.

Access

The only way into the server over the network is a cryptographic key. There's no password to guess.

Backups

Automatic daily backup, and the restore is actually tested instead of assumed.

Conventions

Container and volume names are mandatory, because the server's maintenance discovers what to do from them.

See how it's put together

Experience

  1. Adhoc S.A.

    Official Odoo PartnerMay 2024present

    Python Developer · Odoo

    I translate complex accounting and tax requirements — including Argentine fiscal localisation — into technical solutions that scale.

    Show detail +
    • Backend Python development on a large-scale web platform: building, customising and maintaining modules adapted to business needs.
    • Data modelling and queries over PostgreSQL through the framework's ORM, ensuring integrity and consistency across critical financial flows.
    • Debugging the framework's own source, not just our modules: I find the root cause instead of applying surface patches.
    • Refactoring and optimising production systems, automating flows and cutting processing times.
    • Python
    • Odoo
    • PostgreSQL
    • ORM
    • Linux
  2. Globalbitz

    Spain · remoteJul 2025Nov 2025

    Full Stack Developer (freelance)

    Delivered web applications end to end with an international team, working in English with autonomous execution.

    Show detail +
    • React and TypeScript on the frontend, Node.js on the backend, from component design through to production.
    • REST APIs, server-side business logic, and state and data handling between client and server.
    • Static typing as a maintainability tool: fewer runtime errors as the project grew.
    • Docker for containerisation, local development and consistent deploys across environments.
    • TypeScript
    • React
    • Node.js
    • Express
    • Docker
  3. Solvo

    Mar 2023Apr 2024

    Python Developer

    I bridged business and engineering: turning requirements into working software and explaining outcomes to non-technical stakeholders.

    Show detail +
    • Custom Python modules and client-facing solutions, focused on OOP and reusable code.
    • Containerised environments with Docker for development and deployment.
    • Python
    • POO
    • Docker
  4. Independent

    Oct 2022Feb 2023

    Full Stack Web Developer (freelance)

    I owned the full cycle with the client: discovery, development, deployment and support.

    Show detail +
    • Web projects end to end, from informational sites to e-commerce, with React on the frontend and Express on the backend.
    • Adopted TypeScript from this first freelance stage, making static typing my own standard.
    • React
    • Express
    • TypeScript
    • JavaScript

Education

Universidad Tecnológica Nacional (UTN)

Feb 2023May 2026

University Technical Degree in Programming

OOP, data structures, databases, networking and systems architecture.

Stack

No percentage bars: every technology says where I used it.

Backend

  • PythonAdhoc, Solvo, Caudal, Gardenia
  • DjangoCaudal, CuadrosJaci, Gardenia
  • Django REST FrameworkCuadrosJaci
  • OdooAdhoc · Argentine fiscal localisation
  • Node.js · ExpressGlobalbitz, freelance
  • APIs RESTGlobalbitz, CuadrosJaci
  • gunicornCaudal and CuadrosJaci in production

Data

  • PostgreSQLAdhoc, Caudal, CuadrosJaci, Gardenia
  • SQLQueries and modelling across every project
  • Migraciones y respaldosFull cross-provider database migration, verified
  • SQLiteCaudal in local development

Infrastructure

  • DockerSolvo, Globalbitz, and all three of my own apps
  • LinuxUbuntu Server · administration and hardening
  • CaddyReverse proxy and TLS for both my domains
  • systemdBackup timers and scheduled maintenance
  • ufw · SSHFirewall, ed25519 keys, password-less access

Frontend

  • TypeScriptGlobalbitz, CoProduce, this site
  • ReactGlobalbitz, CuadrosJaci, freelance
  • Next.jsThis site
  • HTMX · AlpineCaudal · two-tap entry without a SPA
  • HTML · CSSEvery project with its own interface

Tooling and practice

  • GitVersioning with per-release branches and tags
  • pytestCaudal, CuadrosJaci, Gardenia
  • ruff · uvCaudal
  • POO y patrones de diseñoCore of my UTN training, applied in Python and JavaScript
  • Agile · ScrumAdhoc, Globalbitz

Technical notes

Things I found while solving real problems.

Contact

If you'd like to talk about a project, a role, or anything technical, get in touch.