METU CENG Senior Project · Group 16 · 2026

The METU-only marketplace that lives where you do.

Items, housing, services, and the chat to close every deal — all behind a verified @metu.edu.tr sign-in. One Kotlin codebase. Android and iOS. No more 400-message Telegram threads.

2
platforms · 1 codebase
3
listing kinds
ML
hybrid search + recommender

The problem

A senior's kettle shouldn't take 400 messages.

Today the trade is everywhere and nowhere: a Telegram group for textbooks, a Google Form for roommates, scattered DMs for tutors. Threads lose context. Offers vanish. Newcomers can't find anything.

Hocamdan puts the whole student economy behind one verified-METU sign-in: items, housing, and services. Per-listing chat threads keep negotiations tidy. A hybrid search + ML recommender surfaces the right post for the right person.

  • Verified @metu.edu.tr identity end-to-end
  • One thread per listing — no DM crosstalk
  • Recommendations cold-start with popular-N, then personalise
Hocamdan
Bosch kettle, used 1 semester ₺220 · 3 offers · 1 thread Accepted ✓

Features

Six pillars. One app.

Mobile-first. Compose Multiplatform shares 95% of UI code across Android and iOS. The backend does the heavy lifting on a single CENG VM.

METU-only auth & moderation

Sign-in is gated on an @metu.edu.tr address. Reports are reviewed and moderated to keep the community trustworthy.

Marketplace · Housing · Services

Three listing types with their own posting flows, status pills, and category filters. Items, sublets, tutoring — one feed.

Hybrid search + ML recommendations

Sentence-transformer embeddings for semantic similarity. LightFM with user-feature and item-feature matrices, a deterministic re-ranker, and popular-N cold-start for new users.

Real-time chat

WebSocket-powered. One thread per (buyer, seller, item). Live ✓✓ read receipts, typing indicators, online-presence dots, mutual rating in the header.

Structured offers

Make / counter / accept / decline as first-class message types. Price-history sparkline on every negotiation. Accepted offers auto-generate a sale-confirmation card.

One codebase, two platforms

Compose Multiplatform shared UI ships natively to Android and iOS. ~95% of UI code is shared; only the thin platform shims diverge.

Architecture

Three layers. Honest infrastructure.

A shared Kotlin client speaks REST + WebSocket to a FastAPI service. That service fans out to MongoDB, ElasticSearch, and a LightFM model file living next to it on the CENG VM.

Layer 1 · Client

Mobile

Compose Multiplatform shared UI

AndroidiOS
Layer 2 · API

FastAPI

  • Auth (JWT) · email verification
  • Chat WebSocket
  • Listings & search
  • Offers & recommender
  • Moderation & reports
UbuntuNginx
Layer 3 · Data

Storage & ML

  • MongoDB — users, listings, chat, offers
  • ElasticSearch — hybrid keyword + vector
  • LightFM — recommender model file

Tech stack

Tools we actually use.

  • KotlinKotlin
  • Compose MultiplatformCompose MP
  • KtorKtor
  • KoinKoin
  • FastAPIFastAPI
  • PydanticPydantic
  • MongoDBMongoDB
  • ElasticSearchElasticSearch
  • LightFMLightFM
  • sentence-transformerssentence-transformers
  • NginxNginx
  • GitLabGitLab

Screen tour

See it move.

One feature-length loop and three short ones. Scroll the rail below for the rest of the surfaces.

Featured Feed + recommendations Personalised rail surfaces as you scroll. LightFM + sentence-transformer similarity, popular-N cold-start for new users.
Offer flow in chatStructured make / counter / accept.
Housing listingPhotos, filters, roommate prefs.
Post an itemCamera roll, category, price.

More screens

Item detail screen with photos, price, and seller card
Item detail
Chat list grouped by item with unread counts
Chat list
Offer history view with price sparkline
Offer history
Services category with tutor listings
Services
User profile with ratings and active listings
Profile

Team

Group 16, METU CENG.

  • Portrait of Bora Aslan

    Bora Aslan

  • Portrait of Emre Burak Bakdemir

    Emre Burak Bakdemir

  • Portrait of Yakup Mert Karasululu

    Yakup Mert Karasululu

  • Portrait of Mehmet Can Şensoy

    Mehmet Can Şensoy

  • Portrait of Mehmet Yayvan

    Mehmet Yayvan

Portrait of Prof. Dr. Halit Oğuztüzün

Project advisor

Prof. Dr. Halit Oğuztüzün

Department of Computer Engineering · METU

Project video

Two minutes, end-to-end.

A short walkthrough covering items, housing, services, the chat-and-offer flow, and the recommender.