CariKos
A web platform that gathers boarding-house listings near campus in one place, with verified information.
- Node.js
- Express
- MongoDB
- Socket.IO
- JWT
- Cloudinary
The problem
Information about boarding houses (kos) near campus is spread across WhatsApp groups, social media, and banners. It is hard to find a complete, current, trustworthy listing.
What I built
CariKos serves three kinds of users. Seekers search and filter listings, find the nearest ones, save favorites, book rooms, leave reviews, and chat with owners. Owners manage their listings, room availability, photos, and incoming bookings. Admins verify listings before they go public.


The result
- Room booking updates available rooms automatically when an owner approves a request.
- Role-based access control with protection against users promoting themselves to admin.
- A Postman test suite with 33 automated assertions covers the API.
My role
Coordinated a 4-person course team (technical decisions, meetings, task split) and built the admin module: kos verification, role-based access control, and a statistics dashboard. Also worked on booking, reviews, nearby search, image upload, and real-time chat and notifications.
Technical details
Tech stack
- Backend
- Node.js
- Express
- JWT + bcrypt
- Database
- MongoDB
- Real-time
- Socket.IO
- Media
- Cloudinary
- Multer
- Testing
- Postman
Architecture
- Seeker / Owner / AdminThree roles with separate permissions.
- Express APIJWT login and role checks on every request.
- MongoDBListings, bookings, reviews, and users.
- Socket.IOLive chat and notifications.
- CloudinaryStores listing photos.
Key decisions
Nearby search with the Haversine formula
It computes the distance across the earth's surface, so results can be limited to a radius around the user.
Admin verification before publishing
Listings only go public after review, which addresses the trust problem that scattered posts have.
Limitations
- This is a team course project with four members.