Skip to content
Manuel Manrique
Fullstack Developer · DevOps & LinuxSalamanca, Spain

Manuel
Manrique Agudo

I build applications and I maintain them.

I'm a fullstack developer with 3+ years of experience in PHP, JavaScript and SQL. I also run my own Linux server, where the tools I build for myself live in production.

Build

Run

PHPLinuxSQLDockerJS / TSActionsVue.jssystemdReactTailscaleNode.jsGrafanaPythonJenkinsPlaywrightGit

About me

I started with frontend work at Deloitte and Node.js services at AIR Institute. Today I work at Grupo Undanet, building PHP and SQL backends and Vue.js frontends while working directly with clients.

I like owning a project end to end: understanding what someone needs, building it, deploying it and supporting it afterwards. That's why in 2024 I set up a server at home on a recycled laptop. It now runs the app I use to track my massages, a psychologist's appointment reminders and my self-hosted services.

In short

  • 3+ years with PHP, JavaScript and SQL
  • Own Linux server in production since 2024
  • Docker, GitHub Actions and push-to-deploy
  • End-to-end testing with Playwright
  • English B2 (Cambridge First Certificate)

Experience

  1. Apr 2025 – now

    Grupo Undanet S.L.

    Fullstack Developer

    I build backend features in PHP and SQL and frontend features in Vue.js, working directly with clients. Unit and integration testing, and Git flow with pull requests and code review.

  2. Sep 2024 – now

    Self-employed

    Freelance projects

    Tools and websites for small businesses and healthcare professionals, including onboarding and support for non-technical owners.

  3. Oct 2023 – Jun 2024

    AIR Institute (BISITE)

    Fullstack Developer Intern

    Node.js services and REST APIs for blockchain R&D projects, with continuous integration in Jenkins and Docker.

  4. Sep 2022 – Mar 2023

    Deloitte

    Developer Intern

    Frontend with HTML, CSS and JavaScript, and a PHP module built with Yii2.

Languages

Spanish
Native
English
B2 · Cambridge First Certificate

Education

BSc Computer Engineering
University of Salamanca

Projects

Most of them started with a problem I or someone close to me had.

Personal · DevOps

Self-hosted production server

The problem

I was tired of paying a subscription for every service. Running my own server was a two-for-one: stop depending on third parties and learn systems on something that really has to work.

The solution

A recycled laptop running Ubuntu Server that has hosted my self-hosted services, and those of real users, since 2024.

  • Every push to main deploys itself, through GitHub Actions runners installed on the server.
  • Everything runs in Docker Compose with healthchecks and memory limits. It updates itself every week.
  • Nothing is open by default: I get in over a private VPN and only publish what's strictly needed.
Built with
Ubuntu Server 24.04 · Docker Compose · GitHub Actions · Tailscale · Cloudflare Tunnel
Status
Running since September 2024
View architecture

Own use · Fullstack

Massage and payment tracker

The problem

Besides being a developer, I'm a massage therapist. I was logging massages in a spreadsheet and figured a web app would keep me better organised and give me practice.

The solution

Keeps track of the massages I give and what I charge for them, with statistics. Nothing is logged by hand: the record comes from my own calendar.

  • Appointments stay in Google Calendar. When one ends, a Telegram bot asks me which massage it was and it gets logged.
  • Scheduled jobs are stored in a database, so they survive restarts and deploys.
  • Only the webhooks are public; the rest of the app stays inside the private network.
Built with
Flask · React · Tailwind · Google Calendar API · Telegram
Status
Used daily
View architecture

Product · Fullstack

Agendilla

The problem

Many appointment-based businesses take bookings over WhatsApp or phone calls. That eats hours of admin work. On top of that, many of them don't have their own website.

The solution

A two-for-one: the business's website with online booking built in. Each business is one config file with its own agenda panel, and the booking widget can be embedded in an existing site.

  • When booking, the client gets a private link to reschedule or cancel without calling or texting.
  • Each business has its own panel with the agenda as a list or a weekly calendar, behind its own password.
  • Tested with Vitest, also against PostgreSQL in CI, and deployed with Docker.
Built with
Next.js · React · PostgreSQL · Tailwind · Docker
Status
In development
View architecture

Other projects

How I deploy

Almost every project here reaches production the same way. The server is a recycled laptop with Ubuntu Server 24.04 and 3.2 GB of RAM, so every container has its own memory limit.

  1. git push

    To the main branch

  2. GitHub Actions

    Runner on my server

  3. Build

    Docker Compose or systemd

  4. Healthcheck

    Restart if something fails

  5. Publish

    Tailscale Funnel or Cloudflare Tunnel

  6. Users

    Real clients

See the full pipeline

What's running right now

ServiceWhat it's forHow it runs
WhatsApp gatewayAutomated WhatsApp notificationsDocker, reachable only from the server
Massage trackerTracking my massages and paymentsFlask + gunicorn under systemd
Appointment remindersA psychologist's appDocker + Tailscale Funnel
Music libraryNavidrome and my own serviceDocker with a healthcheck
Psychologists' websitesWebsites for two psychologistsStatic, on Cloudflare

Stack

What I work with and where I've used it.

AreaToolsWhere I've used it
BackendPHP, Node.js, Python (Flask, FastAPI)Undanet, AIR Institute, own projects
FrontendJavaScript / TypeScript, Vue.js, React, Next.js, Astro, Tailwind CSSUndanet, client websites
DatabasesMySQL, PostgreSQL, SQLite, MongoDBUndanet, Agendilla, massage tracker
SystemsLinux (Ubuntu Server, systemd, Bash), Docker Compose, GitHub Actions, JenkinsMy server, AIR Institute
NetworkingTailscale, Cloudflare TunnelMy server
MonitoringGrafana, PrometheusPower monitor, my server
TestingPlaywright, axe-core, unit and integration testsUndanet, reminders app, websites
AIClaude Code, local models with OllamaPayroll reader, daily work

Let's talk

If you're looking for someone who builds software and also takes care of deploying it, get in touch. Email is the fastest way.