whoami
Borja Bacariza
I got into this because I wanted to know how things worked inside, and that's still why I'm here. These days those things are ACLs, microservices and event queues.
- role
- Tech Lead · Backend & Microservices
- company
- LogNext
- location
- Galicia, Spain · remote
- focus
- DDD · hexagonal architecture · event-driven
- scale
- Hundreds of thousands of events a day, in production
capabilities What I do
thesis
Most of my work is improving systems that can't be stopped.
I try to leave complicated things simpler than I found them, which usually starts with understanding why they were complicated.
experience What I've worked on
7 entries03/2023 — present Textile industry
Scaling Anti-Corruption Layers
Anti-corruption layers (ACLs) inside a DDD ecosystem. Orders pass through them on the way from manufacturing to distribution, so they sit in the middle of the process.
- Java 11 → 21
- Spring Boot
- Kafka
- Hexagonal architecture
- DDD
- Microservices
the challenge
Each system has its own domain model and changes at its own pace. If we coupled them directly, a change in manufacturing could break distribution. And because the main business process runs through here, a failure stops the whole chain.
what I did
We've designed and built three ACLs on Kafka and REST APIs, with hexagonal architecture and Java 11, 17 and 21. We defined an archetype, and we use it to build them and keep improving them. The team has evolved horizontally, and I'm now tech lead on one of them.
impact
They handle hundreds of thousands of events a day. Each team can change its model without having to coordinate with the others, and the pattern is becoming the internal standard.
08/2026 — present Side project
Appointment Reminders
A desktop app for a nutrition practice. It started out sending WhatsApp appointment reminders from Google Calendar and Google Sheets, and now it also handles the calendar, patient data, an audit of that data and the practice's metrics. It runs locally on Windows, with no paid services.
- Python 3.13
- Playwright
- Google API
- SQLite
- pytest
- uv
- PyInstaller
- GitHub Actions
the challenge
Reminding each patient by hand takes a lot of time, but once you automate it the risk is messaging the wrong person, or the same person twice. Calendar titles are typed by hand, so they don't follow a fixed format. The person who uses it isn't a developer either, so I can't ask them to open a terminal or make sense of an error. Later on it also had to write to the calendar and the spreadsheet, which until then it had only read.
what I did
I kept input and output separate from the logic, so almost everything can be tested without a network. Before a message goes out to a phone it has to pass four independent checks, and the list of allowed numbers starts empty, which means nothing gets sent to anyone. To avoid duplicates I rely on a SQLite primary key. The interface is a local web app with nine pages, including a preview of every message before it's sent and a weekly calendar where appointments are booked. The nightly run only reads, and there are tests that check it. Any write needs a permission that has to be granted explicitly. It's installed with a Windows installer that CI builds from a tag, and the build fails if any test fails.
impact
It's been used with real patients since September 2026 and has had eight versions since 1.0. It has 2,371 tests that run offline. It processed 2,335 real appointments from one year without a failure, and it saves the practice 30 minutes of work a day.
03/2025 — 06/2025 Environment
TRAZA
Waste traceability across Galicia. It follows the whole journey, from the truck that collects the waste (identified by its plate over RFID) to the point where it's recycled or incinerated.
- Java 21
- Spring Reactive
- Spring Boot
- Angular
- REST
- Redis
- RFID
the challenge
I joined when the project was already under way. The hardest part was mapping between models in reactive Java, because the boundaries between layers had to hold without breaking the Reactor chain or blocking the stream.
what I did
I designed how that mapping between domain classes fits into the reactive stack. I also built several REST APIs and new features on the Angular frontend.
impact
The mapping stopped causing problems in the integration, and the domain boundaries hold without blocking the reactive stream.
09/2021 — 03/2023 Textile industry
Core order management product
An internal product that holds all the business logic for an order along the supply chain.
- Java 11
- Spring Boot
- SOA
- REST
- React
- Java Swing
the challenge
The rules were spread across the whole chain, with states and sub-processes that overlapped. The system was critical for daily operations and it was hard to change anything without breaking something else.
what I did
I built the core backend features on an SOA architecture, with REST services between the pieces. I refactored the most tangled logic and improved the performance of the critical flows. I also did some of the frontend, in a React interface and in an older Swing application.
impact
The later migration to ACLs was built on top of it.
03/2019 — 09/2021 e-Government
FLEXIA
A process management tool for public administration. It lets you define any administrative workflow and includes case management and a public e-Office.
- Java EE
- Spring Boot
- Struts 1 & 2
- Hibernate
- JPA
the challenge
It was a legacy platform on Struts 1 and SOAP, many years old and used by several public bodies at once. Any change was expensive and risky.
what I did
I worked on modernizing it bit by bit. We migrated from Struts to Spring and Spring Boot and from SOAP to REST, and introduced DDD and a modular architecture.
impact
We did it while several public bodies used the platform every day, and without interrupting the service.
09/2018 — 03/2019 Public health · SERGAS
SIDI
Diagnostic imaging information system. I built appointment management, patient tracking and the processing of radiology results.
- Java EE
- Struts 1
- EJB
- Informix
- JSP
03/2018 — 03/2019 Public health · SERGAS
CRIIS
An early cancer detection programme, from the invitation to take part to patient follow-up. I worked as a fullstack developer on the pathway, automating follow-up and integrating it with external systems.
- Java EE
- Spring
- Hibernate
- Informix
- jQuery
stack Tooling
31 packagesLanguages
- Java 8 → 21
- Python
- TypeScript
- SQL
- Ruby
- JavaScript
Backend
- Spring Boot
- Reactor
- Hibernate / JPA
- Java EE
Architecture
- DDD
- BDD
- Hexagonal architecture
- Event-driven
- Microservices
- REST / OpenAPI
Data & messaging
- Kafka
- Oracle
- SQLite
- MongoDB
- DB2
Frontend
- React
- Angular
- Astro
Tooling & platform
- Docker
- OpenShift
- Jenkins
- Maven
- Bamboo
- Karate
- JUnit / Mockito
now Right now
building
-
SaaS for my own clients
Small products for friends and personal clients, outside work
learning
-
Frontend
What I'm most into right now
-
Python
Outside work. The appointment reminders are built with it
exploring
-
Niches to automate
Sectors where a lot is still done by hand and technology could help
-
Architecture at a larger scale
I'd like to end up designing architectures as well as working inside them
about About
README.mdSince 2018 I've worked on the part of software nobody sees: order systems, integration layers, and old monoliths that have to keep running while they're being migrated. It doesn't look like much, but it's where most things can break.
I don't only like working with code. The team is the core of the product, and before computers there are people.
History
-
06/2026 — present
Tech Lead
LogNext · Madrid
-
06/2025 — 06/2026
Analyst Programmer
LogNext · Madrid
-
09/2021 — 06/2025
Analyst Programmer
Coremain · Pontevedra
-
06/2020 — 09/2021
Software Engineer I
Altia · Santiago
-
03/2019 — 06/2020
Senior Programmer
Altia · Santiago
-
03/2018 — 03/2019
Junior Programmer
Bahía Software · Santiago
contact Contact
I reply within 24–48 hmail -s "hello"
borja.bacariza@gmail.com© 2026 Borja Bacariza
Hand-built, start to finish.