Thiago Bueno Garcia
← All projects

Falar: one product, three architectures

Three repositories, one Brazilian Portuguese learning app, and one shared idea behind all of them.

Why build the same product three different ways?

The desktop app is where the main learning logic lives. It keeps track of every review and mistake instead of just replacing the old data. Things like how a review session works and how mastery is calculated are the core ideas being shared across the project — not the actual code.

The mobile app and backend follow those same ideas but are built differently for what they need. The backend uses GraphQL, while the mobile app works like any other client and starts with fake data until the real backend is available.

The architecture isn't exactly the same across all three, and that's intentional. The desktop app uses event sourcing because keeping the history of a learner's progress is useful. The backend just stores the current state because it mainly needs to answer what's true right now.

Same core ideas, different implementations — using the architecture that makes the most sense for each project.

Each repository is public: portuguese-learning (opens in a new tab), falar-portuguese-mobile-backend (opens in a new tab), falar-portuguese-mobile (opens in a new tab).