07 / 07CLASSIFIEDS · WEB & APPComing soon
Marktgeluk
A second-hand classifieds marketplace for the Netherlands, on the web and as an iOS and Android app: search by category and distance, place an ad in six steps, chat and make offers, and buy with buyer protection.
- What we did
- Product & UX design
- Interactive web prototype
- iOS & Android app
- Three languages
- Technologies
- React 19TypeScriptTailwind CSS 4ViteReact NativeExpoTanStack QueryZustand
- Type
- E-commerce · Our own product
01About the project
The brief
On a second-hand marketplace, buyer and seller don't know each other. Trust comes from clear listings, easy offers and messaging, protected payment and a return and dispute process that works when something goes wrong. Marktgeluk had to offer all of that on the web and on the phone, in a flow that feels familiar to Dutch users.
Our approach
We first designed the whole marketplace as an interactive web prototype: home, categories, listings, placing an ad, messages, checkout, orders, profile and ad management. Order states, the buyer-protection fee and return rules are modelled in code and checked by automated tests, while money, shipping and deadlines are deliberately left to the server. The iOS and Android app shares the same data model and page names and runs on sample data for now, so once a backend is chosen only the service layer changes. The project is in development.
02Key features
- 01
Search and categories
One search bar for text, category, city and distance, from 5 km to the whole country. Twenty main categories built from an extensive product taxonomy, with filters, sorting, saved searches and favourites.
- 02
Place an ad in six steps
Category, photos and video, details, price and sale type (buy now, offers or auction), delivery and location, then a final check. Private or business seller, and the exact address stays private. From My listings, ads can later be edited, reserved, marked as sold or taken offline.
- 03
Listing page
Buy with buyer protection, make an offer from suggested amounts or message the seller. Choose pickup or shipping, and report a listing for misleading information, a prohibited product or a suspicious payment request.
- 04
Messages and offers
Every conversation is tied to a listing. Offers in the chat, photo attachments with type and size checks, archive and read status, and a seller panel that follows the selected conversation.
- 05
Orders, returns and disputes
An order timeline from seller acceptance to delivery. The buyer confirms receipt separately from the carrier's delivery status, pickup works with a temporary code, returns go to the seller first, and problems can be reported with photos or video.
- 06
iOS and Android app
A native tab bar with a glass look on iOS, voice search in the chosen language, recent searches, an inbox with filters and settings for language, light or dark theme, notifications and privacy. It uses the same data model as the website.
03Screens
04Technology
Web
- React 19 & Vinext
- Pages and routing, on Vite
- Tailwind CSS 4 & shadcn/ui
- Design system and components
- TypeScript
- Models for listings, orders and categories
Mobile
- React Native & Expo
- iOS and Android app
- NativeWind
- Shared theme in Tailwind syntax
- TanStack Query & Zustand
- Data layer and local state
- Zod & React Hook Form
- Form and data validation
- i18next
- Three languages: NL, EN, TR
Quality
- Node test runner
- Tests for order, payment and listing rules
- Oxlint & TypeScript
- Lint and type checks
05Status
This project is in development. Thinking of something similar?




