Software architecture · Development · Technical direction

Roberto Drago. From idea to product.

I design and build software. I own the technical choices, the code and the team's work, all the way to release.

Inside my work
RD / From idea to releaseSoftware architecture
DATALOGICINTERFACE

Interface / Logic / Data

01 / Work

Selected projects. Under the surface.

Ventures, labs and client platforms. Open a project for the context, my role and the technical decisions.

Filter projects

11 products

01Venture

MatchRoom

Rooms for rent where tenants and hosts choose each other, and chat opens only on a mutual yes.Live on iOS · Android soon
The system, at a glance
TenantHostlikes a roomlikes a tenantMatch: both said yesChatBlock / reportcloses it

My part

In a team of three, I built the application: the mobile app, the backend and the site. I made the technical choices, the user experience and the release, all the way to the App Store.

Key decision

Problem
A check against Apple's and Google's criteria came back as a no-go: data access rules trusted too much of what the app sent, and there was no blocking, reporting or verified account deletion.
Solution
Move the permissions into the database, add blocking, reporting and a moderation console enforced there, and test account deletion end to end before publishing.
02Venture

posa

A shared camera for events: a few shots each, all revealed together.Live
  1. posa camera at a birthday party, on the last of five shots

    01Shoot

    A few shots each. The counter is the film.

  2. The event roll with one blurred, locked photo and a countdown to the reveal

    02Wait

    Photos stay locked until the roll develops.

Shared venture with Giulio

My part

I built the whole web side, worked on the Supabase backend and did about half of the app: I redesigned the rolls and the photo detail screens, optimised the camera and how photos are displayed, and added reactions and sharing.

Key decision

Problem
Taking, uploading and viewing photos was slow: every guest pulled full-size files, often on a weak party connection.
Solution
Compress on the phone at the moment of the shot, show a lighter copy in the grid and the viewer, and serve the original only when someone downloads it.
How it's built
The system, at a glance
CreatedOpenClosedRevealExpiredtimed by the server (pg_cron)Shot, compressedPhone queue1280 px → grid2560 px → downloadretries until signaloriginals travel only on download
03Venture

Booka

Five apps for salons and barbers, one shared database underneath.In production
The system, at a glance
web · Next.jsmobile · ExpoSiteManagerSuperadminStaff appClient appShared packages: types · auth · API · UI · flags · i18nSupabase · one data model for all fiveRLS · RPC · Edge Functions · migrations in their own repo

Shared venture with Giulio

My part

I built the three web applications: the public booking site, the management suite and the superadmin console. I designed the database together with Giulio, who built the two mobile apps.

Key decision

Problem
Five apps with different users and release rhythms had to share the same businesses, staff, clients and appointments without keeping five versions of the truth.
Solution
One monorepo with shared packages, each app deployed on its own, and a separate repository that owns the database: migrations, RLS, RPCs. The data stays single, the releases do not.
04Venture

EveryOneSeated

From the first RSVP to the last seat, one plan for the event.In development
The system, at a glance
Web · KonvaMobile · SkiaGuest RSVPShared geometry + plannerOne event · guests · tables · seatsSupabase · shared event data

Shared venture with Giulio

My part

I am developing the product with Giulio: a web and mobile workspace that connects the layout of an event with its guest list, seating and RSVP responses.

Key decision

Problem
A table moved in the floor plan and a guest assigned to a seat must refer to the same event across web and mobile.
Solution
Shared domain and planner packages with one Supabase data model. Each platform has its own canvas renderer, while geometry and seating rules stay in common code.
05Venture

Beep

Driving theory, one quiz at a time. Understand mistakes and revisit them.In development
The system, at a glance
A/BAMCQC · CAPAll licencesOne Expo codebaseQuizTheoryReviewLocal progress · no account

Shared venture with Giulio

My part

I am developing Beep with Giulio: from the study flow and quiz review to a family of apps for different licence categories, built on the same foundation.

Key decision

Problem
Different licence categories need focused apps without separate implementations of quizzes, review and progress tracking.
Solution
One codebase, four build variants. Each selects its categories and visual identity, with progress stored locally and kept separate by licence category.
06Venture

Lembi

Photos, paper and small keepsakes, composed in a notebook of your own.Live on the App Store
The system, at a glance
Photos + scansHandwritingMaterial drawerOne page document · layers + pocketsCanvas · SwiftUISQLite · GRDBPDF · .lembiCompose · save · undo · export

Independent personal product

My part

My own product, from the concept and visual direction to the native iPhone and iPad app. I built the canvas, material capture, local persistence and notebook export around the feeling of composing a physical journal, and released it on the App Store.

Key decision

Problem
Moving a fragment into a pocket, undoing a gesture or exporting a page must preserve the whole composition.
Solution
One page document for the canvas, saving, undo and export, backed by transactional SQLite persistence. Materials remain distinct from the instances placed on pages.
07Client work

Ionian Experience

Hospitality · five languagesIn production
The system, at a glance
server sideContact formServer APIinsertLeadsEmail✕validatesdirect read from the browser: denied by RLS

Client project

A multilingual hospitality platform that turns destination storytelling into qualified enquiries.

Next.jsTypeScriptSupabaseRLSResendnext-intl

The risk

A public contact form writing into the same database that holds every lead. The contact list had to stay private by design.

The fix

I rebuilt the submission path end to end: validation, APIs, transactional email, database policies. Writes go through the server. Reads never leave it.

System & result

System built

Internationalised Next.js frontend, server APIs, Supabase RLS, service-bound lead capture, transactional email, GDPR-shaped data flows.

Result

Five languages, one write path, zero public reads.

08Client work

Fabbrichiere

Creator platform · Italian visual artistsClosed beta
The system, at a glance
VisitorMemberArtistPortfolio, web size●●●Feedback–●●Print-quality original––●Shop · Printful, Stripeoffoffoffenforced by RLS and private storage, not by the UI

Client project · I also invest in it

A curated platform where Italian visual artists publish portfolios, exchange real feedback and keep their print-quality originals private.

Next.jsReactTypeScriptSupabaseRLSResend

The trap

Portfolio, community and commerce in one place, without reproducing the noise of a global social network or leaking a single full-resolution file.

How I built it

Product model, artist workflows, auth, storage policies, social interactions, admin controls, and a commerce layer designed to stay switched off until the community earns it.

System & result

System built

Next.js and Supabase across artist profiles, artwork discovery, private originals, RLS, feedback loops, and a Printful and Stripe model on paper.

Result

An invite-only beta running. Commerce architecture designed, deliberately not built.

09Venture

Gran Finale

Cross-platform media · event experienceBuilt MVP
The system, at a glance
Prompt on phoneGuest clipSealed storagenobody sees itRender queueFFmpeg workerOne film, days laterManual fallback

Guests film short prompted clips at a party. Nobody sees them. Days later, everyone receives one edited film.

ExpoReact NativeSupabaseFFmpegStripeDocker

The hard part

The guest experience had to stay emotionally simple while identity, sealed media, asynchronous rendering, payments and an actual event night happened underneath it.

All of it

The whole product: party entry, anonymous-to-creator identity, sealed media permissions, rendering workers, Stripe payments, notifications, retention.

There is also a manual fallback, because on the night of the party nobody is going to debug a render queue.

System & result

System built

Expo clients, Supabase permissions and storage, FFmpeg workers, Stripe, notifications, and one human escape hatch.

Result

Built to pilot. Media sealed by default, payments live, nothing that requires an engineer at midnight.

10Lab

Open Agent Skills

AI governance · developer enablement · agent workflowsOpen source
The system, at a glance
AI Act auditInventoryApplicabilityEvidenceReportWorkshopDiscoveryAudienceOutlineRemotion deckfile-level evidence + primary sources

My open-source skills

Evidence-driven agent workflows for complex work: auditing AI systems against the EU AI Act and turning unfamiliar codebases into ready-to-deliver workshops.

AI agentsEU AI ActAI governanceCodexClaude CodeCursorRemotionTypeScript

AI Act Audit

A six-step engineering audit for prohibited AI practices and content-transparency duties. It inventories features, checks applicability, traces findings to file-level evidence and primary sources, then produces a conservative report for engineering and legal review.

Workshop Generator

A repository-first discovery workflow that turns an unfamiliar codebase into a structured onboarding workshop and an animated Remotion deck, adapted to its actual stack and audience.

Two installable skills. No runtime, API key or platform lock-in: the method travels with the repository.

System & result

System built

Portable SKILL.md workflows, selectively loaded primary-source references, fixed reporting templates, repository discovery rules, a Remotion deck template and behavioral evals.

Result

One open-source collection spanning AI governance and developer enablement: complex knowledge turned into repeatable, evidence-backed operations for multiple coding agents.

11Lab

Aletheia

Private journal · phone-first PWALive
The system, at a glance
your phone · works offlineJournalCluesLocal storageNo serverexportJSON file

A private journal for the gestures, silences and fragments people communicate through. It never sends anything anywhere.

ReactTypeScriptVitePWALocal storageOffline

What's inside

The mobile flow, the ambient motion, the clue model, offline install, and JSON export, import and delete.

No account, no server, no analytics. Clear your browser and it is gone. That is the feature, not a limitation.

System & result

System built

A phone-first React PWA, local-only persistence, installable offline support, explicit export and deletion controls.

Result

Live and installable. The user holds the only copy.

02 / Method

The role changes with the problem.The ownership doesn't.

Four stages. Every project goes through all of them. Rarely in this order.

Four stages
01 / A brief and some hope

A plan people can approve

Client needs, constraints, missing information. I turn them into a direction the client can sign off and a team can start on Monday.

  • Stakeholder context
  • Scope design
  • Delivery path
Range in practiceThe same person at every layer.

BuildReact / Next.js · Vue / Nuxt · Angular · React Native / Expo

SystemsNode / NestJS · Supabase / PostgreSQL · Strapi · Docker

OperateVercel / Cloudflare · Azure / MSAL · CI/CD · AI / RAG

03 / About

Production teaches.The team shouldn't pay twice.

Software architect at The Wave Studio. I lead client delivery, stay close to the code and turn what we learn into foundations the next project can reuse.

  1. 01Make the decision explicit.
  2. 02Follow it to production.
  3. 03Leave a stronger default.
The Wave StudioItalyItalian + English

04 / Start a conversation

Bring me the thing nobody wants to own.

Software architecture, fractional technical direction, product leadership or senior hands-on delivery. I am most useful when the work needs breadth and depth at the same time. Tell me what is stuck, and within a day I will tell you whether I am the right person for it.