How I build software
Structure first, evidence over guesswork. This is the approach behind Koffe and my other projects.
Feature-first architecture
Each feature lives in its own folder with a page, a controller and its widgets, while shared code stays in core. Anyone can open one folder and understand a whole feature.
lib/
core/
theme/app_colors.dart
widgets/
features/
clientes/
clientes_page.dart
clientes_controller.dart
clientes_widgets.dart
clientes_form_modal.dart
Design tokens, not hardcoded colors
Colors come from the theme (primary, secondary, surface, error) and never from hex values inside widgets. Rebranding or adding dark mode touches one place.
Offline-first by default
Data is saved to SQLite first and synced with Supabase. Deletes are soft (deleted_at), conflicts are handled with optimistic locking, and failed syncs retry with exponential backoff.
Security at the edges
Row Level Security on the database, role-based routing for owner and employee accounts, and sensitive flows like invites handled by Edge Functions.
How I work
I research the problem first, break it into small structured steps and check each result against evidence before moving on.