FULL-STACKDEVELOPER

Hi, I'm Leonardo — I build web platforms, mobile apps, and the backends behind them. I work in React and Next.js on the web, Flutter and Dart on mobile, and Node.js or Kotlin with Spring Boot on the server — shipping maintainable software with clean architecture, secure APIs, and intuitive user experiences.

ReactNext.jsTypeScriptNode.jsExpress.jsNestJSMongoDBPostgreSQLMySQLFlutterDartKotlinSpring BootGraphQLFirebaseJWTREST APIStorybookRAGMCPHITLReactNext.jsTypeScriptNode.jsExpress.jsNestJSMongoDBPostgreSQLMySQLFlutterDartKotlinSpring BootGraphQLFirebaseJWTREST APIStorybookRAGMCPHITL

The developer behind the work.

Full-Stack Developer with six years of experience building web applications, mobile apps, internal dashboards, and backend APIs.

On the web my stack is React, Next.js, Node.js, Express.js, NestJS and TypeScript, over MongoDB, PostgreSQL or MySQL. On mobile it's Flutter and Dart, and on the server I also work in Kotlin with Spring Boot and GraphQL. I enjoy turning complex business workflows into clean, usable, and maintainable software.

On the frontend I focus on reusable components, clear user flows, responsive interfaces, and dashboard experiences. On the backend I work with REST APIs, authentication, authorization, DTO validation, middleware, database operations, and production-ready service structure.

I also build with LLMs — retrieval-augmented generation, the Model Context Protocol, and human-in-the-loop flows where a person reviews and approves what the model produces before it takes effect.

I care about clean architecture, maintainability, performance, security, and business usability — and I'm comfortable owning work end-to-end across the stack with remote teams.

Things I've built & shipped.

QR Pet ID Platform · Live since 2024

Fanstik Tags

A physical pet tag wired to a live web platform. Owners publish a profile behind a QR code; whoever finds the pet scans it, sees the profile, and the owner gets an email with where and on what device it happened. Sold on Amazon and in use today.

  • 644 registered owners and 1,108 pets on the live platform
  • Scan-to-alert flow: browser geolocation, reverse geocoding to a street address, device fingerprinting, and an email to the owner — all optional per pet
  • Degrades on purpose: if the finder denies location access the alert still sends, marked Unknown, rather than failing silently
  • Pet profiles carry a full medical record — vaccines with dose dates, conditions, vet contact — alongside missing, service and ESA flags
  • Role-based admin over TanStack Table: owners, pets and tag registries, paginated through MongoDB aggregation
  • Session auth built on jose and bcrypt, with email verification and password reset
  • 24 components and 11 Zod schemas shared between forms and server actions
Next.jsTypeScriptMongoDBMongooseZodSendGridTailwind CSSRadix UI
View project
Fanstik Tags — screen 1Fanstik Tags — screen 2Fanstik Tags — screen 3
Offline-First Point of Sale · 2026

Smart Inventory POS

A point-of-sale and inventory system for small shops. Barcode scanning through the device camera, held carts, cash-drawer close-outs and supplier purchases — built to keep selling when the connection drops.

  • 73 test files with Vitest, covering the sales, cash-close and permission paths
  • 51 Convex functions over a 12-table schema — products, sales, held carts, closes, purchases, employees
  • Offline reads from an IndexedDB mirror via Dexie; writes stay online-only, so there is no sync conflict to resolve
  • Additive Dexie migrations across three schema versions, mirroring the Convex indexes
  • In-browser barcode scanning with zxing-wasm — no native app, no hardware scanner
  • Auth without a third-party package: email plus a 6-digit PIN, with the owner assigning them per employee
  • 15 screens and 14 shared components, ported verbatim from a high-fidelity prototype
ReactTypeScriptConvexDexieViteVitestReact RouterPWA
View project
Smart Inventory POS — screen 1Smart Inventory POS — screen 2Smart Inventory POS — screen 3
Ride-Hailing Platform · 2026

Bryngup Driver

A Flutter driver app — ride offers, live trip phases, earnings and payouts — inside a seven-app monorepo built by a team of seven. I joined in July 2026 and took ownership of the authentication and security layer that every app on the platform shares.

  • Sole author of the platform's second-factor stack: authenticator TOTP, SMS served from our own backend, e-mail codes, and one-time backup codes
  • Backup codes stored hashed and encrypted at the same time — the hash is what makes 'shown once' literally true, because a dump of the store returns nothing usable
  • reCAPTCHA Enterprise with server-side verdicts across sign-in and sign-up, plus a bot trap on the registration form
  • 2,663 lines across eleven auth and security modules in the shared package, consumed by all seven apps
  • Content-Security-Policy headers added to the six web surfaces the platform ships
  • Retired Maestro in favour of a Flutter integration_test suite — fifteen end-to-end files covering the agent, driver and NTD apps
  • 19 of the 56 commits on the driver app, a 272-file codebase with 44 blocs and 61 screens
FlutterDartBLoCFirebaseFirestoreGraphQLStripeGoogle Maps
View project
Bryngup Driver — screen 1Bryngup Driver — screen 2
Operations Console · 2026

Bryngup Admin

The web console the platform's operators work in — geofence pricing and driver queues, onboarding review, document verification and entity search over live data. Same seven-app Flutter monorepo as the driver app; here I built two modules and hardened the Firestore rules sitting behind them.

  • Geo-Fence and Queue module: 20 files and 9,861 lines covering surge pricing per zone, FIFO driver queues, a KPI dashboard and the map editor
  • Shipped it as a front-end design with no backend yet — every value the screens read lives in one file, so swapping it for real repositories changes no screen. The seam was drawn on day one rather than discovered later
  • 130 test cases across ten files for that module alone, 2,151 lines of them
  • Built the onboarding review queue end to end — bloc, model, table, badges and the approve/reject dialog — 1,792 lines, also shipped with tests
  • Closed collection enumeration in the Firestore rules: a read grant covers both get and list, so any signed-in client could list every user and vehicle document
  • Checked the assumption behind that rule instead of trusting its comment — it claimed agents and admins list users, and a sweep of the monorepo found no such query at all; every access goes through a document id
  • An 811-line rules test harness against the Firestore emulator: 32 cases, one of which verifies the harness itself is sound
  • A failed query no longer renders as zero results — operators were reading 'nothing to review' when the query had actually broken
FlutterDartBLoCFirestoreFirebase AuthPlutoGridGoogle MapsTurf
Bryngup Admin — screen 1Bryngup Admin — screen 2
Full-Stack Event Platform · 2022–2023

Your Tickets

An event platform for organisers: publish an event through a five-step flow, place the venue on a map, upload media, and configure ticket tiers with pricing and sales windows. Built alongside a full-time role, with an integration suite across every layer.

  • 25 REST endpoints over a layered backend — router, middleware, controller, data — each one covered by tests
  • 78 reusable components, treated as a design system rather than one-off screens
  • 43 test files across three layers — API, pages, and components — with Jest, MSW, and Testing Library
  • Five-step event creation flow with per-step validation and resumable progress
  • 6-table MySQL schema in hand-written SQL and versioned migrations, no ORM
  • Versioned API surface (/v1) with centralised error handling and auth middleware
  • Media uploads to AWS S3 and address autocomplete through Google Maps
Next.jsReactTypeScriptRedux ToolkitMySQLJestMSWTesting LibraryAWS S3
Your Tickets — screen 1

// Additional selected full-stack work available on request.

Skills, by layer.

01

Frontend

ReactNext.jsTypeScriptJavaScriptTailwind CSSResponsive DesignComponent ArchitectureDashboard Interfaces
02

Mobile

FlutterDartBLoCFirebaseOffline-FirstPush NotificationsGoogle MapsIn-App Payments
03

Backend

Node.jsKotlinSpring BootGraphQLExpress.jsNestJSREST APIsDTO ValidationMiddlewareGuardsError HandlingLoggingHealth Checks
04

Database

MongoDBFirestoreRealtime DatabasePostgreSQLMySQLMongooseData ModelingCRUD OperationsQuery Optimization
05

Auth & Security

JWTTwo-Factor AuthTOTPreCAPTCHA EnterpriseContent-Security-PolicyFirestore RulesRole-Based Access ControlProtected RoutesAPI AuthorizationSecure Backend Flows
06

AI Engineering

RAG (Retrieval-Augmented Generation)MCP (Model Context Protocol)HITL (Human-in-the-Loop)
07

Practices

GitGitHubCI/CDMonoreposEnd-to-End TestingStorybookCode ReviewsTechnical DocumentationRemote Collaboration
Clean ArchitectureMaintainableSecure APIsProduction-ReadyRemote-FriendlyClean ArchitectureMaintainableSecure APIsProduction-ReadyRemote-Friendly

How I build.

I approach full-stack development with a practical mindset: understand the business flow, design a clean user experience, define reliable API contracts, and build a system that can grow without becoming difficult to maintain.

On the frontend, I focus on reusable components, clear navigation, responsive layouts, and dashboard usability. On the backend, I care about validation, authentication, authorization, error handling, logging, and clean service structure — code that other developers can read, extend, and trust.

01
Maintainability first

Clear frontend/backend boundaries, reusable components, predictable API contracts.

02
Business workflow aware

Technical decisions follow real flows — not the other way around.

03
Secure by default

Authentication, permissions, error paths, and edge cases handled deliberately.

04
Clear communication

Documented decisions, clean PRs, code the next developer can extend.

Ready for remote teams.

I'm comfortable working with remote teams where communication, ownership, and clarity matter. I work independently, document decisions, communicate blockers early, and collaborate with developers, designers, and stakeholders across different workflows.

  • Asynchronous communication
  • Strong written communication
  • Documents technical decisions
  • Works independently with ownership
  • Adapts to existing codebases
  • Responsible with deadlines

LET'S BUILD
SOMETHING reliable.

If you're looking for a Full-Stack Developer who can work across React, Next.js, Flutter, Node.js, NestJS and Kotlin with Spring Boot — I'd be happy to connect.

Download CV