Home /dev/
Lost & Found Web Platform
Full-stack Web App
Graduation Project
Live
May 1, 2024

Lost & Found Web Platform

A full-stack lost-and-found platform built as my college graduation project. Node.js and Express on an MVC architecture, EJS + Bootstrap frontend, and a MySQL database — with user authentication, item reporting with photo uploads, and email notifications. Designed and developed end to end.

Timeline

Nov 2023 — May 2024

Role

Design + Full-stack Development

Deployed on

Railway

Stack

Node.js

Express

EJS

Bootstrap

MySQL

MVC

Architecture

Full-stack

Node · MySQL

Lost & Found Web Platform preview

Preview

project description

Overview

Lost & Found Web Platform was my college graduation project (Nov 2023 – May 2024) and my first full-stack build end to end — I designed the UI/UX and then developed the whole thing. It's a place to report and recover lost belongings: people sign up, post a lost or found item with a photo and a category, and browse what others have reported. The backend follows the MVC pattern on Node.js and Express, with EJS views, a Bootstrap-based responsive frontend, and a MySQL database. Authentication runs on hashed passwords and sessions, image uploads go through Multer, and Nodemailer handles email.

For a long time it only ran locally against a MAMP database — so the most recent chapter of the project was actually getting it online: moving the database to a hosted MySQL, swapping every hardcoded credential for environment variables, and deploying the Node app to the web. It's the project where the full picture — design, backend, database, and deployment — came together for the first time.

What's inside

Features & pages

Auth & accounts

Sign-up and login with hashed passwords and session-based authentication

Report items

Post a lost or found item with details and a category

Photo uploads

Item images handled with Multer and served back in the listings

Email notifications

Account and item emails sent through Nodemailer

Responsive UI

Bootstrap-based interface designed and built end to end across devices

Problems solved

Challenges & solutions

Problem

As a full graduation project it needed a clean structure that separated data, logic, and presentation instead of one tangled codebase.

Solution

Applied the MVC pattern — models for MySQL queries, controllers for logic, routes for endpoints, and EJS views for rendering — so each concern stayed on its own.

Problem

User accounts required secure sign-up and login rather than storing plaintext passwords.

Solution

Hashed passwords with bcryptjs and managed authenticated sessions with express-session and JWT, guarding protected routes behind a login check.

Problem

Users report items with photos, so the app had to accept, store, and serve uploaded images.

Solution

Handled multipart uploads with Multer, saved the files server-side, and rendered them back into the item feed.

Problem

The project originally ran only on my machine against a local MAMP MySQL database, so it couldn't be deployed as-is.

Solution

Moved the database to a hosted MySQL on Railway, replaced every hardcoded localhost credential with environment variables, and deployed the Node app to Railway alongside the database.

Built with

Tech stack

Node.js

Backend runtime

Express

Server framework

EJS

Server-side views

Bootstrap

Frontend styling

MySQL

Database (mysql2)

bcryptjs + JWT

Auth & sessions

Multer

Image uploads

Nodemailer

Email

Railway

App + database hosting

More work

Other dev projects