Home /work/
Lost & Found Web Platform
DESIGNED · BUILTJun 2024

Lost & Found Web Platform

A community platform for reporting and recovering lost items — browse by category, post what you lost or found, and reach owners directly. My final-year graduation project, designed in Figma and built end-to-end as a full-stack web app.

Scope
DESIGNED · BUILT
Timeline
Nov 2023 — May 2024
Role
Solo — UI/UX design + full-stack build
Platforms
Web — Desktop
Tools
Figma
Stack
Node.jsExpressEJSBootstrapMySQL
Deployed on
Railway

13

Screens designed

6

Item categories

MVC

Architecture

Full-stack

Node · MySQL

Lost & Found Web Platform

Overview

The project

This was my final-year graduation project for a BSc in Computer Science at the University of Baghdad, graded A+. The goal was a single place where people who have lost something and people who have found something can meet — so I designed the full interface in Figma and then built it end-to-end as a working full-stack web app. The design had to make two opposite intentions ("I lost this" / "I found this") live in one simple posting flow, keep a growing catalogue of items easy to browse, and make stranger-to-stranger contact feel safe.

It was my first full-stack build end to end. 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.

How it was made

Design process

01

Discover

Studied the lost-and-found problem: what info a post actually needs to reunite an item with its owner

02

Define

IA & core flows: browse by category, post an item, view & claim via contact, manage a profile

03

Wireframe

Low-fi layouts for home, category browse, post detail, and the post/auth forms

04

Visual design

Calm navy palette, clear type scale, and one consistent card system to signal trust

05

Build

Implemented the full design as a working Node/Express + MySQL platform — not a mockup

06

Defend

Final screens + the live app presented and graded as the graduation project

What I learned

Research insights

Two intents, one flow

'I lost this' and 'I found this' are opposite actions that share one posting flow; the UI had to make the distinction obvious at a glance — solved with an explicit Lost/Found tag and toggle.

Enough detail to reunite

A post is useless without description, location, and contact; the post form and detail page were structured around exactly what someone needs to claim an item.

Findability at scale

Items spread across many categories, so browse-by-category, search, and per-category views keep a growing catalogue scannable.

Trust between strangers

People share a phone or email with strangers, so privacy toggles (hide phone / hide email) and a calm, credible visual tone were designed to lower that friction.

Why it looks like this

Key design decisions

Browse-by-category IA

Six clear item categories as the primary way into the catalogue

Lost / Found tagging

Every post explicitly typed so intent reads instantly

Reusable card system

One post-card pattern reused across home, category, and profile

Progressive detail

Short card copy on lists → full description + contact on the post page

Privacy-first contact

Hide phone / email toggles for safer stranger-to-stranger reach-out

Calm, trustworthy tone

Navy palette and clear typography to make sharing feel safe

The screens

Gallery

What I used

Tools

Figma

UI design + prototyping

…then I built it

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

What was hard

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

What came out of it

Results

13

Screens designed & built

6

Item categories

A+

Graduation project grade

7

Core user flows

Full-stack

Working platform, not a mockup

Other work