GitHub
Menu

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.