Simple at the till
A scheme staff don’t get on first sight won’t be used. Better one feature less than one step more at the counter.
Loyalty cards in Apple Wallet and Google Wallet.
What I did
Everything, from idea to launch: visual identity, UX/UI, the app, the website and the communication.
Built withTypeScript · Next.js 15 · React 19 · Tailwind CSS 4 · Prisma · PostgreSQL · Zod · Apple Wallet · Google Wallet API · sharp · Resend · Remotion
Context
Almost every café runs a loyalty scheme, and most of them live on a paper card that gets wet, torn or lost. Customers leave it at home and lose their stamps.
The owner doesn’t know how many customers signed up, how many come back or what the scheme costs. Fidora starts from one question: what would a loyalty programme look like if it were made today, for a business with two or three staff and no time for setup?

The idea
The answer was as simple as possible: the customer scans a QR code, the card lands in Apple Wallet or Google Wallet, and staff scan it with their own phone. No app to install, no till integration. At last, the owner sees who comes back and how often.

Visual identity
The symbol is an arrow closing a circle: the path of a customer who returns. It is loyalty drawn in a single gesture, recognisable even at app-icon size. The name is set in rounded lowercase so the brand feels close, not corporate, and the line “Loyalty. Rewarded.” states the promise in two words.
Orange and amber are the colours of warmth: the morning coffee, the bakery, a place you’re glad to return to. The gradient moves from an energetic orange to a warm gold, from visit to reward. The rest of the palette stays quiet, on warm white and warm black, so the merchants’ cards stay in front.
#F67401actions and accents#EFAD02reward, gradient#FAFAF8background#F4EFE4surfaces#141312text#77726Csecondary textEvery programme has its own colour, so you know it at a glance.
Plus Jakarta Sans: geometric but warm, and very legible at small sizes. On a Wallet card everything is read in a glance at the till, so legibility mattered more than any effect.
Plus Jakarta Sans
RegularMediumSemiboldBoldExtrabold
AĂÂBCDEFGHIÎJKLMNOPQRSȘTȚUVWXYZ
aăâbcdefghiîjklmnopqrsștțuvwxyz 0123456789
Loyalty. Rewarded.
The website
The presentation site speaks the merchant’s language: who Fidora is for, how it works in four steps, the seven card types and one clear price with no fee per transaction. The same identity as the app, fast on a phone.





The product
Merchants upload their logo and pick colours and a reward. The card looks like their café, not like Fidora. Try the editor: pick a programme type, change the name and theme, then scan visits.
The app
Everything a merchant sees after signing up. The screenshots come from the real app, with the demo data of a fictional café, “Cafeneaua Verde”. Pick a screen or let the tour run on its own.








Staff need no extra device: they scan the card with their phone, and without a camera they search the customer by name. Customers install nothing: they scan the code on the counter, pick a programme and get the card.




A panel just for me: subscriptions and businesses, vouchers, messages, errors, the action log and the server status.

Principles
A scheme staff don’t get on first sight won’t be used. Better one feature less than one step more at the counter.
Customers and history can be exported at any time. Data is never sold or aggregated.
A monthly plan, no fee per transaction. You know the cost from day one.
No new till, no tablets to buy. A phone is enough.
Communication
For the launch I made the presentation film, in Romanian and English, landscape for the website and vertical for social, plus 47 Instagram stories grouped into seven highlights. All in the brand’s colours, type and rhythm.
Technology
The app is built with Next.js and TypeScript on PostgreSQL, with signed cards for Apple Wallet and Google Wallet, and invoicing and payments built in. Every release passes the automated test suites first.
Integrations
Next project
02
Gods GamesA Minecraft event server, built for my friends.