OfertaSuksesi
OfertaSuksesi — Kosovo's Modern Classifieds Platform
A complete platform rebuild — from legacy codebase to a modern, production-grade microservices architecture serving 37,685 active listings, 3,354 users, and instant search via Meilisearch. All on infrastructure under €55/month.
Overview
OfertaSuksesi is Kosovo's modern classifieds platform — built from scratch as a microservices architecture with four independent services communicating via REST APIs and Redis pub/sub. The platform serves thousands of users and listings in the Albanian language with instant search, spam protection, company profiles, and built-in monetization.
The challenge was clear: Kosovo's online classifieds space was dominated by outdated platforms with poor user experience, no spam protection, slow search, and limited tools for businesses.
Image
Instant Search with Meilisearch
Users search through thousands of listings with sub-50ms results — with typo tolerance, faceted filtering, and relevance ranking, all in the Albanian language.
Platform in Numbers
0
Active Listings
Real listings from users across Kosovo
0
Registered Users
Growing user base
0
Microservices
Independent deploy and scaling
0
Monthly Cost
100% open-source infrastructure
Tech Stack
Four independent microservices behind Nginx with Cloudflare CDN
Web App: Next.js 15, React 19, Tailwind CSS v4, TypeScript
SSR, PWA, SEO — port 3000
REST API: NestJS 10, Prisma ORM, JWT Authentication
Auth, CRUD, business logic — port 3001
Image Service: NestJS + Sharp
Auto resize, WebP conversion, Cloudflare R2 storage — port 4001
Notification Service: NestJS + Redis
Email queue, retry logic, 28 notification types — port 4002
Database: PostgreSQL 16 + Redis 7 + Meilisearch
Instant typo-tolerant search for Albanian language
DevOps: Docker, Turborepo, Nginx, Cloudflare CDN
Challenges Solved
1. Search Performance
Problem: PostgreSQL full-text search was too slow for real-time filtering across thousands of listings.
Solution: Integrated Meilisearch as a dedicated search engine — instant results with typo tolerance, faceted filtering, and relevance ranking. Sub-50ms response times.
2. Spam & Fraud
Problem: Open platforms attract spam, fake listings, and scammers with no automated detection.
Solution: Built a configurable spam detection engine scoring listings on regex patterns, keyword blacklists, and phone analysis. Suspicious listings auto-queue for review.
3. Image Processing
Problem: Users upload large, unoptimized images causing slow page loads and bandwidth waste.
Solution: Dedicated image service processes every upload through Sharp — generating thumbnail, medium, and full-size WebP variants automatically. Served via CDN subdomain.
4. Monorepo Complexity
Problem: Four services sharing types, components, and templates could easily drift out of sync.
Solution: Turborepo with pnpm workspaces keeps everything unified — shared packages, consistent TypeScript config, and coordinated builds across all services.
Image
Full Admin Dashboard
Non-technical staff manages the entire platform — listing moderation, user management, category configuration, ad management, blog CMS, and data exports.
Features Delivered
Complete platform with tools for users, businesses, and admins
Instant search & filtering
Multi-step listing wizard
Verified company profiles
Monetization system (Featured, Urgent, Premium)
Spam detection engine
Blog CMS & ad management
28 email notification types
JWT auth with access/refresh token rotation
Rate limiting, DOMPurify, Helmet, CORS whitelist
CSV exports & site-wide settings panel
Want to Build a Marketplace?
Whether you need a custom marketplace, SaaS platform, or full-stack web application — we deliver production-grade solutions from database design to deployment.
Full-Stack Development | UI/UX | DevOps | Search | Monetization