Product 01 / 04 · Local commerce platform
Portia
Your whole city, one app.
One place to order food, book a haircut, reserve a table, rent a car or request a quote from the businesses around you. Each merchant gets its own storefront on the web, couriers get their own app, and customers keep every order and booking in one account.


- For
- Local businesses and the people in their town
- Markets
- Romania (Satu Mare) · Luxembourg
- Platforms
- Web · iOS + Android · courier app · merchant dashboard
- Languages
- RO · EN · FR
The problem
A dozen widgets, apps and phone calls.
Small businesses are spread across a dozen booking widgets, delivery apps and phone calls. Customers juggle accounts and apps; merchants lose margin and data to big platforms.
What Portia does
Portia puts ordering, booking and delivery for a whole town on one platform. Every merchant keeps a branded storefront and the relationship with their customers; every customer keeps every order and booking in one account.
Features
What it does
01Branded storefronts
Every business gets its own fast, SEO-friendly storefront on Portia: menu, services, rooms or cars, ready to order or book.
02Ordering with live tracking
Order for delivery or pickup and follow the courier on a live map, from the kitchen to your door.
03One booking engine
Services, tables, hotels, rentals and transport share one engine with real availability, time slots and seats.
04AI search
Type “haircut tomorrow at 3pm” or “margherita pizza for tonight” and get matching offers from businesses nearby.
05Photo assistants
Photograph a document to fill in a form, or photograph your car to get a quote from a real garage.
06Everything in one account
Orders and bookings from every business in one history, with a live chat between customer, merchant and courier.
Also inside
- Merchant dashboard (PWA) with roles, digital contracts and invoicing
- Stripe payments
- Courier app with fleet management and automatic order assignment
- Table QR ordering for restaurants
Platforms
Where it runs
- Web storefrontNext.js · one app, every merchant subdomainLiveportia.ro (opens in a new tab)portia.lu (opens in a new tab)
- Customer app · iOS + AndroidFlutterComing soon
- Courier appReact Native · ExpoFor couriers
- Merchant dashboardReact PWA · ViteFor merchants
Store links appear here once the apps are public.
Tech stack
- Web
- Next.js 16ReactTailwind
- Mobile
- FlutterReact NativeExpo SDK 54
- Backend
- Hono REST APIGoogle Cloud RunPostgreSQLDrizzle ORMSupabase RealtimeFirebase
- Edge + payments
- Cloudflare WorkersStripeMapbox
- AI
- Google GeminiFunction calling
How we built it
Under the hood
Designed, built and run by DevFIRE WEB, end to end. The engineering choices that matter most:
Real-time everywhere
Orders and chat live in Postgres and are pushed through Supabase Realtime with row-level security; courier GPS streams through Firestore listeners.
Thousands of storefronts, one app
A Cloudflare Worker routes every merchant subdomain to one Next.js app. Pages are statically regenerated and invalidated on demand when a merchant edits a menu.
One token set, two platforms
A single design-token set is generated for the Next.js storefront and the Flutter app, enforced by a custom design linter: thousands of hard-coded colours removed, WCAG AA contrast repaid.
AI with guardrails
A staged vision pipeline (ingest, perception, resolution, proposal, execution) only proposes actions the platform can actually perform, and never gives diagnoses or cost guesses.
Two countries, one codebase
Separate Romanian and Luxembourg deployments run from the same code.
Screens
Gallery

portia.ro on a phone 
A restaurant storefront, ready to order 
A garage storefront: book a service 
Transport bookings 
App: live courier tracking 
App: document scan 
App: orders and bookings 
A restaurant storefront, desktop 
Everything you book, in one place 
portia.ro home with AI search
Build yours
Want something like this?
We built Portia end to end: design, mobile, web, AI and the backend behind it. Tell us what you want to make and who it is for. Otto reads every message personally.