Portfolio
← Portfolio

Architecture walkthrough · Quarkus Todo

How I structure my applications.

A small task manager, used to explain the decisions behind the code. Follow the dependencies from the clients to the database, one diagram at a time.

Section 1 of 9
01 / 09 · Introduction

A familiar problem,
three applications.

Quarkus Todo brings together a Java 17 backend, a React web client built with Vite, and a React Native application built with Expo. The clients support task creation, completion, deletion, search and filtering, in English, French and Spanish.

This application reflects how I usually structure my projects: clear responsibilities, business logic separated from the UI, and external integrations behind adapters. Its deliberately small scope makes those choices easier to follow.

Both clients call Quarkus for tasks and weather. Quarkus accesses H2 and calls OpenWeatherMap through a backend adapter; the API key stays on the server. The diagram shows real integration mode; mocks replace external calls during offline development.

Quarkus Todo — system contextReact with Vite and React Native with Expo each call the Quarkus REST API for tasks and weather. Quarkus calls OpenWeatherMap with a server-side key. Quarkus stores tasks in an in-memory H2 database through Hibernate ORM and Panache. Arrows point from the caller to its dependency. This shows real integrations, not mock mode.CLIENT APPLICATIONS«application»«application»«backend»«external service»React · ViteReact Native · ExpoQuarkusOpenWeatherMapWeb clientMobile clientJava 17 · REST APICurrent weather APIREST / JSONHTTPSHibernate ORM / PanacheJDBCH2 · in memoryDashed arrows: caller → dependencyReal integration mode
UML-style context view. Both clients call Quarkus for tasks and weather. Only the backend calls OpenWeatherMap and holds its API key. In mock mode, client adapters replace these external calls.
Next · Frontend layers