Bluumo: Building a Production-Grade Wellness Marketplace from Scratch

Role: Solo Full-Stack Developer & UX Designer

Timeline: November 2025 - February 2026 (~8 weeks active development)

Year: 2025-2026

Client: Bluumo (Finnish wellness services startup, founding team member)

Status: Live on web, native apps in beta

[GIF of booking flow] Real-time availability checking with instant confirmation - no phone calls needed, fully automated matching.

THE HOOK

Built a 146,000-line, production-grade wellness marketplace from scratch as a solo developer in 8 weeks — 96 screens, 33 serverless functions, 2 active payment providers (with 3 more ready), 7 languages, a corporate B2B portal, an AI concierge, and in-app voice calling — replacing an expensive WordPress marketing site with a platform that actually runs a business.

THE CHALLENGE

Bluumo connects customers with wellness professionals (massage therapists, beauty specialists, physiotherapists) who deliver services directly to customers' homes. The concept worked. The infrastructure didn't.

What existed:

  • An expensive WordPress site that served as a brochure — zero operational capability

  • The CEO manually fielding every phone call, matching providers, scheduling appointments, and creating invoices by hand

  • No mobile experience in a market where 90%+ of bookings happen on phones

  • Every new customer meant more manual work, making growth the enemy of the business

What was needed:

  • A real two-sided marketplace with automated matching, scheduling, and payments

  • Native iOS and Android apps alongside a responsive web platform

  • A corporate B2B portal for companies booking wellness services for employees

  • Admin tools for platform oversight without constant manual intervention

  • Multilingual support for the Finnish market (Finnish, Swedish, English — plus expansion-ready)

  • A platform that could scale without scaling headcount

WHAT I BUILT

Platform Scale

Metric Count Total screens/pages 96 Reusable components 116 Serverless edge functions 33 Service/utility modules 82+ Custom React hooks 8 Lines of TypeScript 146,000+ Translation keys 2,660+ Languages supported 7 Payment integrations 5 (2 active, 3 ready) Automated email types 12 Git commits 2,040

For Customers (11+ screens)

  • Service browsing with category, price, and duration filtering

  • Provider discovery with profiles, reviews, ratings, and comparison tools

  • Location-based search with interactive map view

  • Autocomplete with synonyms, search history, and saved searches

  • Real-time availability checking with instant booking confirmation

  • Multi-method checkout: bank transfers, cards, MobilePay, wellness benefit cards (Edenred), and invoice billing

  • KELA reimbursement support (Finnish national health insurance)

  • Recurring booking management with frequency controls

  • Gift card purchasing with PDF generation and email delivery

  • Referral program with automated reward distribution

  • Bluumo Plus subscription tier with exclusive deals

  • Coupon and promotion system

  • In-app voice calling to providers via Agora

  • "Helmi" — an AI concierge powered by Claude for booking assistance and customer support

For Service Providers (13+ screens)

  • Complete onboarding with document-based verification workflow

  • Profile management with services, pricing, photos, and multilingual descriptions

  • Visual availability calendar with recurring schedule support and Google Calendar sync

  • Dynamic pricing settings (peak hours, last-minute discounts, time-based adjustments)

  • Service package creation and management

  • Service area configuration with travel preferences

  • Real-time booking notifications and appointment management dashboard

  • Earnings tracking with payout history

  • Review management and response tools

  • Language capability listings for multilingual providers

  • Account settings and payout configurationional operational growth.

[GIF of provider screens] Calendar, services managements, bookings view, and more.

For Corporate Clients (Full B2B Portal — 4 screens + 17 components)

  • Corporate registration with approval workflow

  • Employee management with bulk operations and anonymization

  • Wellbeing day booking — single and bulk allocation for team events

  • Cost center tracking and budget management

  • Manager approval queues for booking requests

  • Invoice analytics with usage reporting and pie chart visualizations

  • Quote request system for custom service packages

  • Comparison analytics across service providers

  • Dedicated corporate email notifications and booking confirmations

  • Corporate billing cycles with automated invoice generation

[GIF of corporate dashboard screens] Overview, tab switching, view bookings, invoices, manage employees.

For Platform Admins (12 screens)

  • Dashboard with platform-wide KPIs and analytics

  • Provider approval/rejection and verification management

  • Booking oversight across all user types

  • Service catalog management

  • Blog publishing system with dynamic routing and SEO

  • Competition/contest creation and management

  • Promotion and campaign management

  • Support ticket system with canned responses

  • Refund processing

  • Invoice management and overdue tracking

  • Corporate client management

TECHNICAL ARCHITECTURE

Frontend: Expo 54 + React Native + React 19 + TypeScript

Single codebase targeting iOS, Android, and web simultaneously. File-based routing via Expo Router. Full responsive design with desktop sidebar navigation, headers, footers, and mobile-optimized layouts across all 96 screens.

Backend: Supabase (PostgreSQL + Auth + Edge Functions)

33 Deno edge functions handling everything from payment webhooks to AI chat to email delivery. Row Level Security policies enforcing data privacy across four user roles (customer, provider, corporate, admin). Service-based architecture with 82+ utility modules.

Payments — 2 active providers + 3 with infrastructure ready:

Active/Primary:

  • Visma Pay — Finnish online banking (all major banks), cards, MobilePay, B2B invoicing, with full webhook handling

  • Edenred — Wellness benefit card integration with balance checking

Infrastructure Built, Not Yet Active:

  • Holvi — Provider payout infrastructure built, automated payouts on 1st and 15th

  • Smartum — Wellness benefit card infrastructure ready

  • ePassi — Wellness benefit card infrastructure ready

Additional Payment Features:

  • Gift card payments with PDF generation

  • KELA reimbursement tracking

  • Coupon/promotion validation

  • Refund processing with webhook handling

  • Corporate invoice generation and billing cycles

Email System: Mailgun (EU)

12 automated email types:

  • Booking confirmations and reminders

  • Booking cancellations and modifications

  • Provider notifications for new bookings

  • Gift card delivery with PDF attachments

  • Referral rewards

  • Support ticket responses

  • Competition results

  • Post-service surveys

  • Corporate-specific notifications (approvals, budget alerts)

  • Provider verification and onboarding emails

AI Integration: Claude API

"Helmi" — the in-app AI concierge handling:

  • Booking assistance and service recommendations

  • Customer support inquiries

  • Natural language booking parameters

  • Multi-language conversations

Additional AI features:

  • Blog SEO tag generation

  • Meta description writing for services

Voice Calling: Agora SDK

  • Token generation for secure calls

  • Incoming call modals with caller information

  • Active call screens with mute/speaker controls

  • Direct customer-provider communication without exposing phone numbers

Internationalization

7 languages with 2,660+ translation keys:

  • English, Finnish, Swedish, Danish, Estonian, Icelandic, Norwegian

  • 11 namespaces per language for performance

  • Namespace-based locale splitting to keep bundle sizes manageable

  • DeepL API integration for translation assistance

[GIF of contact us screen] Demonstrating the working internationalization.

Performance Optimizations

  • StyleSheet memoization across all 96 screens

  • INP optimization: reduced from 1,280ms to under 200ms

  • Deferred heavy operations (confirmation dialogs, validation)

  • Loading state management for immediate visual feedback

  • Dynamic imports for heavy components

Deployment

  • Web: Vercel (auto-deploy on push to main)

  • Production API: UpCloud with Caddy reverse proxy

  • Native builds: EAS (Expo Application Services) for iOS/Android

  • CI/CD: GitHub Actions

  • Edge Functions: Supabase edge runtime (Deno)

TECHNICAL CHALLENGES SOLVED

Challenge 1: Enterprise-grade platform as a solo developer in 8 weeks

Solution: Chose Expo for true cross-platform output from a single codebase, Supabase for managed backend infrastructure eliminating DevOps overhead, and a service-based architecture that kept 82+ modules maintainable.

Result: 2,040 commits across 8 weeks — averaging 255 commits per week during peak development in January alone. 146,000+ lines of TypeScript across 387 files, all written and maintained solo.

Challenge 2: Multiple payment providers in one checkout flow across a multi-sided marketplace

Solution: Built payment abstraction layer routing through Visma Pay (Finnish banks/cards/MobilePay) and Edenred (wellness benefit cards) as primary methods, with infrastructure already in place for Holvi payouts, Smartum, and ePassi — ready to activate as the business scales.

Implementation:

  • Webhook handling from multiple providers

  • Invoice generation for corporate clients

  • Refund processing with proper error handling

  • KELA reimbursement tracking

  • Rate limiting and retry logic

  • Transaction reconciliation across providers

Result: Single checkout flow handling 5 different payment contexts with proper fallbacks and error recovery.

Challenge 3: Corporate B2B portal bolted onto a consumer marketplace

Solution: Designed a separate corporate user type with its own registration flow, approval queues, employee management, cost center tracking, and invoice-based billing — without duplicating the core booking and provider infrastructure.

Architecture:

  • Shared provider network between B2C and B2B

  • Different payment flows (invoice vs. direct payment)

  • Manager approval workflows before booking confirmation

  • Bulk booking operations for team wellness days

  • Corporate-specific analytics and reporting

  • Cost center allocation and budget tracking

Result: Corporate clients use the same provider network but with completely different business logic, billing, and administrative controls. A separate SaaS product built inside the consumer marketplace.

Challenge 4: Seven languages with 2,660+ keys across a 96-screen app

Solution: Implemented namespace-based locale splitting (11 namespaces per language) to keep bundle sizes manageable. Built custom useLanguage hook with runtime guards against object returns from nested keys. Added DeepL API integration for translation assistance during development.

Implementation:

// Namespace structure for performance
namespaces = [
  'common', 'auth', 'booking', 'provider', 
  'corporate', 'admin', 'payments', 'emails',
  'notifications', 'settings', 'validation'
]

// Only load needed namespaces per screen
const { t } = useTranslation(['common', 'booking']);

Result: Each screen only loads the translation keys it needs. 7 languages supported without impacting load times.

Challenge 5: Sub-200ms interaction responsiveness on a complex React Native app

Problem: Initial INP (Interaction to Next Paint) was 1,280ms, causing noticeable lag on button presses and form submissions.

Investigation: Profiled and identified StyleSheet.create recreation as the primary bottleneck. Every render was recreating style objects.

Solution:

// Before: Recreated every render (1,280ms INP)
const styles = StyleSheet.create({
  container: { padding: 20 }
});

// After: Memoized styles (sub-200ms INP)
const styles = useMemo(() => StyleSheet.create({
  container: { padding: 20 }
}), []);

Additional optimizations:

  • Deferred blocking operations to next frame

  • Immediate loading state feedback before validation

  • Moved heavy computations to background threads

  • Optimized re-render triggers with React.memo

Result: INP dropped from 1,280ms to under 200ms. App feels instant even with complex validation and API calls.

Challenge 6: Real-time booking updates across four user types

Solution: Supabase real-time subscriptions with Row Level Security policies ensuring each user type only sees their authorized data.

Implementation:

// Each user type gets real-time updates for only their data
const subscription = supabase
  .channel('booking_updates')
  .on('postgres_changes', {
    event: '*',
    schema: 'public',
    table: 'bookings',
    filter: `customer_id=eq.${userId}` // RLS handles auth
  }, handleBookingUpdate)
  .subscribe();

Result: Customers see instant booking confirmations, providers get real-time booking requests, corporate managers see approval queues update live, admins monitor platform activity in real-time — all with database-level security.

THE RESULTS

Platform Delivery

  • From zero to production in 8 weeks — a platform that would typically require a 4-6 person team working for 6+ months

  • 146,000+ lines of TypeScript across 387 source files, all written and maintained solo

  • 2,040 git commits — averaging 255 commits/week during peak development

  • 96 screens serving four distinct user types (customer, provider, corporate, admin)

  • 33 serverless edge functions handling webhooks, emails, AI, and business logic

  • Live and deployed — web platform serving real traffic, native apps in beta testing

Business Impact

  • Complete business automation — eliminated manual booking, matching, scheduling, invoicing, and payment processing

  • Three platforms in one — consumer marketplace, provider management portal, and corporate B2B platform built on shared infrastructure

  • Revenue-ready — Visma Pay and Edenred covering the Finnish market (banks, cards, MobilePay, wellness benefit cards, invoicing) with Holvi, Smartum, and ePassi infrastructure pre-built for activation

  • Scalable architecture — can support thousands of providers and bookings without infrastructure changes

  • Multi-market ready — 7 languages and modular architecture support expansion without architectural changes

Technical Achievements

  • Native + web from single codebase — iOS, Android, and responsive web all shipping from one repository

  • Sub-200ms interactions — INP optimized from 1,280ms through systematic performance profiling

  • Database-level security — Row Level Security policies enforcing multi-tenant isolation

  • Real-time synchronization — instant updates across all user types without polling

  • AI-powered support — Helmi handles booking assistance in 7 languages

  • Enterprise features — corporate portal with approval workflows, cost centers, and invoice analytics

KEY LEARNINGS

Stack selection is the highest-leverage decision. Expo + Supabase + TypeScript enabled one person to build what normally requires a team. The right abstractions multiplied my output by an order of magnitude.

Service architecture pays for itself immediately. 82+ focused service modules meant I could add corporate features, gift cards, or voice calling without touching existing booking or payment logic. Modularity enabled velocity.

Internationalization must be day-one infrastructure. Adding 7 languages after the fact would have been a months-long refactoring project. Building it in from the start made each new language a translation task, not an engineering task.

Performance optimization requires measurement. INP went from 1,280ms to under 200ms — but only because I profiled first and found the actual bottleneck (StyleSheet recreation), not the assumed one. Profile, don't guess.

AI tooling changes what's possible solo. Claude Code handled boilerplate, translations, edge function scaffolding, and repetitive refactoring — freeing me to focus on architecture, UX decisions, and business logic that required human judgment.

Corporate B2B is a different product. The B2B portal (employee management, approval workflows, cost centers, invoice analytics) is essentially a separate SaaS built on top of the consumer marketplace. Treating it as a distinct product with shared infrastructure was the right architecture.

Real-time expectations are now standard. Users expect instant updates. Building with Supabase real-time from day one meant the platform feels modern and responsive without complex polling or refresh logic.

Payment provider abstraction is non-negotiable. Building infrastructure for 5 payment providers (2 active, 3 ready) upfront means activating new payment methods is a configuration change, not a code change. The abstraction layer paid off immediately.

WHAT'S NEXT

Pre-Launch (Q1 2026)

  • Complete iOS App Store and Google Play Store submissions

  • Finalize provider onboarding documentation

  • Beta testing with initial customer and provider cohorts

  • Launch marketing website and promotional materials

  • Final performance optimization and security audit

Launch Phase

  • Public release on web and app stores

  • Initial marketing campaign in Helsinki region

  • Provider recruitment and verification at scale

  • Customer acquisition and retention tracking

  • Analytics implementation for platform metrics

  • Activate additional payment providers (Holvi, Smartum, ePassi)

Post-Launch Enhancements

  • Provider ratings and review system refinement

  • Advanced scheduling (recurring appointments, service packages)

  • Loyalty and referral program optimization

  • A/B testing framework for conversion optimization

  • Expansion to additional Finnish cities

  • Additional language support based on demand

Platform Scaling

  • Payment processing optimization based on real transaction data

  • Provider matching algorithm improvements using usage patterns

  • Admin dashboard analytics expansion

  • Customer support automation via Helmi enhancements

  • Corporate pilot programs with Finnish companies

  • API for third-party integrations

Prototype: https://www.bluumo-test.work/

Tech Stack: Expo, React Native, React 19, TypeScript, Supabase, PostgreSQL, Deno, Visma Pay, Edenred, Holvi, Smartum, ePassi, Agora, Mailgun, Claude AI API, Vercel, UpCloud + Caddy

Key Achievement: Built a complete enterprise-grade wellness marketplace platform as a solo developer in 8 weeks—146,000 lines of code across 96 screens, serving four user types (consumer, provider, corporate, admin), with 2 active payment providers (3 more ready), 7 languages, AI concierge, voice calling, and a full corporate B2B portal—replacing a non-functional WordPress site and enabling true business scalability without proportional operational growth.

Next
Next

CarmaClouds: Multi-Platform VTT Character Sync Suite