Case Study · Marketplace
Freelance Moldova
How I identified an untapped niche, built Moldova's first freelance marketplace from scratch, and shipped a production-grade platform — solo, with no budget.
The problem
Moldova's freelance market had no dedicated platform. Local IT specialists looking for clients — and businesses looking for local talent — had nowhere to connect without going through expensive international platforms like Upwork, where Moldova barely registers as a market.
The gap was obvious. A free, Moldovan-first freelance marketplace didn't exist. I decided to build it.
My role
I owned every aspect of this product — from initial market research and product definition through technical architecture, implementation, and ongoing growth. No co-founder, no budget, no external team.
Product strategy — defined the value proposition, user personas, feature prioritisation, and go-to-market approach for the Moldovan market
Technical architecture — designed and built the full stack: Next.js 14 with App Router, PostgreSQL, Prisma ORM, Docker, Nginx, Cloudflare
Monetisation design — researched payment providers for the Moldovan market, integrated PayPal Checkout, designed PRO subscription and boost systems
Infrastructure & DevOps — deployed on VPS (Contabo Ubuntu), Docker Compose orchestration, automated backups, deploy pipeline, SSL, CDN
Growth & community — organic user acquisition, bilingual RU/RO interface, SEO — ranked on first page of Google for "фриланс Молдова"
Technical stack
Built on a modern, production-grade stack. Every technology choice was deliberate — optimised for developer velocity, scalability, and running lean on a single VPS.
Next.js 14
TypeScript
PostgreSQL 16
Prisma ORM
NextAuth.js
Tailwind CSS
Docker Compose
Nginx
Cloudflare CDN
PayPal REST API
hCaptcha
VPS (Ubuntu 24)
Architecture decisions
Database schema — designed 12 models covering users, jobs, bids, messages, reviews, boosts, banners, and portfolio items. Added composite indexes on category, status, and boostedUntil for query performance
Authentication — NextAuth.js with custom JWT callbacks supporting session updates without re-login. Email verification with expiring tokens. Spam protection: 50-account limit per IP over 7 days
Boost & prioritisation system — boostedUntil fields on Job and Profile models, automatic priority ordering via Prisma, fair rotation among boosted items for equal top-position exposure
Infrastructure — Docker Compose with persistent volumes, automated PostgreSQL backups (pg_dump, 7-day rotation), Nginx reverse proxy with SSL, Cloudflare for CDN and DDoS protection
Performance — reduced Docker build cache from 84GB to 33GB (freed 51GB) through automated cleanup configuration. 99.9% uptime on single VPS
Monetisation
Designed two revenue streams built into the product from day one. Researched and compared local payment providers — MAIB eCommerce, Victoriabank, PayPal Business, Paddle, Stripe — and selected PayPal for its coverage of the Moldovan market without requiring a business entity.
5€/mo
PRO Subscription
Priority in search, unlimited job posts, image attachments, profile analytics, PRO badge across all cards and profiles. Automatic deactivation via cron on expiry.
2–5€
Boost (Jobs & Profiles)
One-time payment for 7 or 14-day top placement. Fair rotation among boosted items. Automatic expiry. Available for both job posts and freelancer profiles.
Key product features
Job system — creation, moderation, status flow (Open → In Progress → Completed), filtering across 13 categories, budget range, sorting, pagination, full-text search
Bid system — submit with price and message, client acceptance, automatic assignee designation, bilateral status tracking
Real-time messenger — chat between users tied to specific jobs, active job display in chat header
Freelancer profiles — portfolio with images, skills, hourly rate, categories, ratings, profile view counter, PRO analytics dashboard
Review system — bilateral (client ↔ freelancer), only after bid acceptance, protected against manipulation
Bilingual UI — full RU/RO interface with cookie-based switching, instant server component refresh via router.refresh() without page reload
Results
50+ registered users acquired organically — no paid advertising
30+ jobs posted across 13 IT categories
First page on Google for "фриланс Молдова" — through technical SEO: dynamic sitemap.xml, generateMetadata() on all pages, canonical URLs, Open Graph tags
99.9% uptime on self-managed VPS infrastructure with automated monitoring and backups
Live payment system — PayPal integration with webhook handling, supporting Visa/Mastercard without requiring a PayPal account