Programming services

From a working prototype to a living app

Mobile app (personal project) · Mobile apps / product

Budowanie solidnych fundamentów w projekcie cyfrowym.

The challenge

Late evening. On the screen, a working prototype of a mobile app – the fruit of months of solo work. Technically the core runs: you can browse data, tap buttons, save information. And yet frustration hangs in the air.

The app worked, but it had no „soul”. It was a collection of connected functions, not a coherent, intuitive experience. User flows were illogical, the interface clunky, the best ideas got lost along the way. It was that painful moment when you see the huge potential of the project trapped in code that „just worked” – instead of delighting.

What I did

I could have kept „patching” and adding features to the existing structure. But that is a road to nowhere – the app needed open-heart surgery. The goal was to turn a promising prototype into a professional, market-ready product (MVP+) with foundations for years to come. I split it into three pillars:

  • Architecture – a clean, scalable structure that makes future development easier.
  • UX – redesigning the key processes so they are intuitive and satisfying.
  • Strategy – a clear roadmap so development stays thoughtful and orderly.

I chose a modern stack: Flutter (fast development for iOS and Android), Riverpod (state management) and Firebase (a serverless backend from Google).

A good example of the new architecture is navigation. Instead of chaotic conditions scattered through the code – a central system based on the go_router package. It is the „brain” that makes sure the user always lands in the right place depending on their state: logged in, email verified, onboarding completed:

// Fragment logiki przekierowań w aplikacji
redirect: (BuildContext context, GoRouterState state) {
  final user = _auth.currentUser;
  final isLoggedIn = user != null;
  final isPublicRoute = state.matchedLocation == '/login' || state.matchedLocation == '/register';
  // Niezalogowany -> tylko ścieżki publiczne
  if (!isLoggedIn) {
    return isPublicRoute ? null : '/login';
  }
  final isVerified = user.emailVerified;
  // ... (dalsza logika weryfikacji i onboardingu) ...
  if (isPublicRoute) {
    return '/home';
  }
  return null;
},

The result

Solid foundations enabled rapid progress. In a few weeks I completed 5 major milestones, fixed a dozen UX bugs, shipped complex features (three different views for a key screen, a gamification system) and reached 100% readiness for Test Version 1.1. The app got its „soul” back.

The greatest satisfaction came not from the coding itself, but from the constant synergy between the product vision and the technical expertise. The best apps are not born in a vacuum – they grow through open, iterative work, where every piece of feedback leads to a better, more thoughtful solution.

Back to work

Got a project to talk about?

Just tell me what you need - it does not have to be technical, that is my job. I will get back to you and tell you straight whether and how I can help.