Full-Stack Web Application · Online Marketplace · Live
Building a Search-Friendly Classified Marketplace
Onadeyak.lk

Project overview
Onadeyak.lk is an online classified marketplace where people can browse and publish advertisements across categories such as vehicles, property, electronics, home and living, jobs and pets.
It is a substantial, real-world application: authenticated users, ad creation with images, category browsing, search, and a public-facing catalogue that has to be understood by search engines.
Business problem
A classifieds site only works if people can find it and find individual ads. Listings are created continuously by users, so every ad detail page needs to describe itself correctly to search engines, stay reachable through listings, and remain accessible to people using assistive technology.
My role and contribution
I worked on the application's development and technical improvements: marketplace features, integration with the Supabase database, deployment on Vercel, and a set of search engine optimization improvements.
Technology stack
- Frontend
- Next.js 14 (App Router)ReactTypeScriptTailwind CSS
- Data and backend
- Supabase (PostgreSQL, Auth)PrismaZod validation
- Media and i18n
- Cloudinary image storagenext-intl
- Deployment
- Vercel
Implementation approach
The application is built with the Next.js App Router and TypeScript, backed by Supabase PostgreSQL. Business logic sits in a service layer behind API routes, with request validation handled by Zod and ad images stored on Cloudinary.
Search visibility was treated as an engineering concern rather than an afterthought: each page type exposes its own metadata, canonical URL and structured data, and the sitemap is maintained alongside the content.
Engineering challenges and solutions
01
Dynamic ad detail pages need to be understood by search engines.
Solution: Implemented dynamic advertisement detail pages with page-level metadata and JSON-LD structured data describing each listing.
02
The same content can be reached through several URLs, which risks duplicate or diluted pages.
Solution: Improved page metadata and added canonical URLs so search engines know the preferred address for each page.
03
Listings change constantly, so crawlers need an up-to-date map of the site.
Solution: Managed XML sitemaps so new and changed pages can be discovered.
04
Large sets of ads are slow and awkward to browse on a single page.
Solution: Added pagination to advertisement listings.
05
User-uploaded ad images are invisible to screen readers and image search without descriptions.
Solution: Improved image accessibility with meaningful alternative text.