A Web-Based Dormitory and Boarding House Listing and Reservation Platform for Metro Manila
CCSFEN1L – Introduction to Software Engineering · Section COM243 · Group SOCIA
Finding an available dormitory or boarding house in Metro Manila is time-consuming because listings are scattered across social media, word of mouth, and physical signs, and details like price, amenities, and availability are often incomplete or outdated. Property owners, in turn, juggle vacancies, inquiries, and reservation requests across different channels.
FINDorm centralizes dormitory and boarding house listings for Metro Manila. Seekers can search and filter listings, view property details and available slots, send inquiries, and submit reservation requests. Owners can create and manage listings, update availability, and accept or reject requests. An administrator manages users and listings.
The system does not process online payments or deposits, generate lease contracts, verify property ownership or user identity, or connect to external property databases. An accepted reservation only means the owner approved the request inside FINDorm — payment and final rental arrangements happen outside the system.
- Develop a centralized web-based platform for dormitory and boarding house listings within Metro Manila.
- Provide role-based accounts for accommodation seekers, property owners/landlords, and system administrators.
- Allow owners to create, edit, delete, and update listings, including rental details and available room or bed slots.
- Allow seekers to search and filter listings by location, price range, property type, gender category, and availability, and to view complete listing details.
- Provide a simple reservation-request and inquiry process where seekers contact owners and owners accept or reject requests.
- Verify that the main system functions operate according to the defined requirements.
| Role | Name |
|---|---|
| Project Leader | Tala, Edrian B. |
| Member | David, Marc Lawrence T. |
| Member | De Castro, Karl Gab C. |
| Member | Sigue, Cedric Kristoff R. |
| Member | Verdeflor, Harry C. |
- Accommodation seekers — students, young professionals, workers, and other renters searching for available dorms or boarding houses.
- Property owners / landlords — owners who create and manage listings, update availability, and respond to inquiries and reservation requests.
- System administrator — manages user accounts and property listings to maintain the platform.
| Layer | Choice |
|---|---|
| Language | JavaScript |
| Front end | React, React Router, Tailwind CSS, Axios |
| Back end | Node.js, Express.js |
| Database | MongoDB with Mongoose |
| Auth | bcrypt, JSON Web Token (JWT) |
| Image uploads | Multer with Cloudinary |
| Tooling | Visual Studio Code, Git + GitHub, Postman |
findorm/
├── client/ # React front end
├── server/ # Node.js + Express API
├── docs/ # Requirements, proposal, and planning documents
└── README.md
The separation of front end, back end, and database layers is a stated non-functional requirement (NFR-06).
You need Node.js 20 or newer and a MongoDB database — either MongoDB Atlas (free tier, nothing to install) or a local mongod.
git clone https://github.com/keyyum/findorm.git
cd findormBack end (terminal 1):
cd server
npm install
cp .env.example .env # then fill in MONGO_URI and JWT_SECRET
npm run dev # http://localhost:5000Front end (terminal 2):
cd client
npm install
npm run dev # http://localhost:5173Open http://localhost:5173. The page reports whether it can reach the API — if it says connected, your setup works.
Requests to /api/... from the front end are proxied to port 5000 by Vite, so there is no CORS setup to do in development.
Admin account: admins can't sign up through the app (D-09). Create one from server/:
ADMIN_EMAIL=admin@findorm.test ADMIN_PASSWORD='at-least-8-chars' npm run create-adminNever commit a real .env file — only .env.example with placeholder values.
Scaffolding only. Both halves build and run, and the front end can talk to the API, but no functional requirement is implemented yet. Each FR is an open GitHub issue — pick one up, branch from main, and open a pull request.
Where things go:
server/
├── config/ database connection
├── models/ Mongoose schemas
├── routes/ URL → controller mapping
├── controllers/ request handlers
└── middleware/ auth, validation, error handling
client/src/
├── pages/ one component per screen
├── components/ shared UI pieces
└── lib/ api.js — the shared axios client
Agile with Scrum. Modules are built in stages: account and role management → property listings → search and filtering → reservation requests and availability → inquiries. Completed features are checked against the functional requirements before moving to the next set.
- Functional and non-functional requirements
- Design decisions — answers to questions the requirements leave open
- Data model — collections, fields, and validation rules
- API specification — every endpoint, who can call it, and what it returns
- Acceptance criteria — how to check each requirement is done
- Project proposal
- Contributing guide