Repository files navigation

Lost & Found Community Platform – Lost No More

Welcome to the Lost & Found Community Platform, developed by the Lost No More team for the University of Auckland's SOFTENG 310: Software Evolution and Maintenance course.

What is this project?

The Lost & Found Community Platform (Lost No More) is a web application that helps the University of Auckland community report, search for, and recover lost and found items. Users can register, post item listings with photos and locations, search and filter listings, and communicate with other users to arrange returns.

Why is this project useful?

  • Centralises lost & found reports in a searchable, shareable platform.
  • Speeds up item recovery with location tagging and user communication.
  • Provides a community-driven approach to item recovery.

Prerequisites

  • Node.js 16+ (LTS recommended)
  • npm 8+ (or yarn)
  • Git

🌟 Features

Core Functionality

  • 📸 Item Reporting: Upload photos and details of lost or found items with location tracking
  • 📰 Item Feed: Browse all reported lost and found items on campus
  • 🔍 Search & Filtering: Search listings by type, location, and status
  • 🗺️ Interactive Maps: View and select locations using Leaflet maps with coordinates
  • 🧾 User Profiles: User profiles with lost/found item history and contact information
  • 📢 Campus Announcements: Post and view campus-wide announcements (staff/admin only)
  • 💬 Messaging System: Direct messaging between users for item recovery coordination
  • 🔔 Notification System: Notification bell component for user updates
  • ⚙️ Notification Settings: Notification preferences page for users

🛠️ Tech Stack

Frontend

  • React - Modern React with hooks, routing (React Router DOM 6.30.1), and UI components (Lucide React 0.540.0)
  • Tailwind CSS - Utility-first CSS framework for responsive design
  • Leaflet + React Leaflet - Interactive maps for location services
  • Firebase - Client-side Firebase SDK for authentication and data

Backend

  • Node.js + Express - JavaScript runtime and web framework
  • Firebase Admin - Server-side Firebase SDK for admin operations
  • Cloudinary - Cloud-based image and video management
  • Express Middleware - Multer (file uploads), CORS, UUID generation

Database & Storage

  • Firebase - Firestore (NoSQL database), Authentication, and data
  • Cloudinary - Cloud storage and image transformation service

Development & Testing

  • Jest + React Testing Library - Testing framework
  • Development Tools - ESLint (linting), PostCSS + Autoprefixer (CSS processing), Nodemon (auto-restart)

Code Quality & Analysis

  • SonarQube/SonarCloud - Code quality analysis and technical debt tracking
  • React Quality Tools - PropTypes validation and enhanced test utilities

🚀 Getting Started

  1. Clone this repository
    git clone https://github.com/Softeng310/Lost_Found_App.git

▶️ Running the Application

This project has a separate backend (Node.js/Express) and frontend (React) that must be started individually.

1. Install Dependencies

Open a terminal and run the following commands:

Backend

cd backend
npm install

Frontend

cd frontend
npm install

2. Start the Servers

Start the Backend

cd backend
npm start

The backend will run on http://localhost:5876

Start the Frontend

Open a new terminal window/tab and run:

cd frontend
npm start

The frontend will run on http://localhost:3000

You can now access the Lost & Found Community Platform in your browser at http://localhost:3000.


🧪 Testing

Test Coverage

The project includes test coverage with Jest and React Testing Library:

Frontend Tests

  • Home Page - Hero section, navigation, and feature rendering
  • Feed Page - Item listing, filtering, search, and updates
  • Item Detail - Item display, user interactions, and error handling
  • Report Page - Form submission, validation, and image upload
  • Profile Pages - User profile display and editing functionality
  • Sign Up - User registration and form validation
  • Announcements - CRUD operations and role-based access (Add, Edit, List)
  • Notification System - Bell component and notification settings

Test Features

  • Mock Data Management - Centralized mock data and test utilities
  • Firebase Mocking - Firebase services mocking for isolated testing
  • Router Testing - Navigation and routing behavior validation
  • Accessibility Testing - ARIA compliance and keyboard navigation
  • Error Handling - Error state testing
  • Form Validation - Input validation and submission testing

Running Tests

# Run all testscd frontend
npm test# Run tests in watch mode
npm test -- --watch
# Run tests with coverage
npm test -- --coverage

Test Utilities

  • Enhanced Test Utils - Centralized testing helpers and mock setup
  • Firebase Mocks - Firebase service mocking
  • Router Helpers - Navigation testing utilities
  • Mock Data Generators - Consistent test data creation

📊 Project Status & Development Progress

Current Status: Active Development 🚀

The Lost & Found Community Platform is in active development with a robust foundation and feature set.

Completed Features ✅

  • Core Platform - Lost and found item management system
  • User Authentication - Firebase-based user registration and login
  • Item Management - CRUD operations for lost/found items with image uploads
  • Item Feed - Display of all reported items with Firebase Firestore
  • Interactive Maps - Leaflet-based location selection and display
  • Search & Filtering - Search with filter options by type and location
  • User Profiles - User profile management and item history
  • Messaging System - Direct messaging between users
  • Notification System - Notification bell component and settings page
  • Campus Announcements - Staff/admin announcement system
  • Responsive Design - Mobile-first responsive interface
  • Testing - Test suite across 10 major components
  • Code Quality - SonarQube analysis applied with documented improvements

Development Metrics 📈

  • Test Coverage: Test suite across 10 major components
  • Code Quality: SonarQube analysis applied with documented improvements
  • Code Organization: Enhanced test utilities and centralized mock data
  • Development Standards: PropTypes validation and accessibility improvements

Recent Improvements 🆕

  • Enhanced Test Utilities - Centralized testing helpers and mock data
  • SonarQube Analysis - Code quality issues identified and documented fixes applied
  • PropTypes Validation - Runtime type checking for React components
  • Accessibility Improvements - ARIA compliance and keyboard navigation
  • Error Handling - Error states and user feedback
  • Code Organization - Improved test structure and reduced code duplication

Support & Getting Help

Contributing

See CONTRIBUTING.md for detailed contribution guidelines, code of conduct, and development workflow.

Acknowledgements & Contributors

  • Course / Project: SOFTENG 310 – Lost No More
  • Repo lead: Softeng310
  • Major contributors: Manan Patel(mpat501), Nadia Askari(nask472), Jerry Kim (pkim777), Rudra Patel (rpat943), Soham Kulkarni(skul970), Liam Byrne (lbyr117), Daniel Kim(dkim848), Kieran McKenna(kmck133), Meara Keelty(mkee115), Minseo Kim(mkim719), Muhammad Mohamad Hanafiah(mmoh314), Nathan Turley(ntur101)
  • Tech stack highlight: React, Tailwind CSS, Firebase (Auth, Firestore, Storage), Node.js, Express, Cloudinary, Multer

For a full list of contributors, see the GitHub contributors graph: https://github.com/Softeng310/Lost_Found_App/graphs/contributors

License

This project is licensed under the MIT License — see LICENSE for full text.

In short: you may use, copy, modify, and distribute this software under the MIT terms; it is provided "as is", without warranty.

About

No description, website, or topics provided.

Resources

Code of conduct

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

Lost & Found Community Platform – Lost No More

Welcome to the Lost & Found Community Platform, developed by the Lost No More team for the University of Auckland's SOFTENG 310: Software Evolution and Maintenance course.

What is this project?

The Lost & Found Community Platform (Lost No More) is a web application that helps the University of Auckland community report, search for, and recover lost and found items. Users can register, post item listings with photos and locations, search and filter listings, and communicate with other users to arrange returns.

Why is this project useful?

  • Centralises lost & found reports in a searchable, shareable platform.
  • Speeds up item recovery with location tagging and user communication.
  • Provides a community-driven approach to item recovery.

Prerequisites

  • Node.js 16+ (LTS recommended)
  • npm 8+ (or yarn)
  • Git

🌟 Features

Core Functionality

  • 📸 Item Reporting: Upload photos and details of lost or found items with location tracking
  • 📰 Item Feed: Browse all reported lost and found items on campus
  • 🔍 Search & Filtering: Search listings by type, location, and status
  • 🗺️ Interactive Maps: View and select locations using Leaflet maps with coordinates
  • 🧾 User Profiles: User profiles with lost/found item history and contact information
  • 📢 Campus Announcements: Post and view campus-wide announcements (staff/admin only)
  • 💬 Messaging System: Direct messaging between users for item recovery coordination
  • 🔔 Notification System: Notification bell component for user updates
  • ⚙️ Notification Settings: Notification preferences page for users

🛠️ Tech Stack

Frontend

  • React - Modern React with hooks, routing (React Router DOM 6.30.1), and UI components (Lucide React 0.540.0)
  • Tailwind CSS - Utility-first CSS framework for responsive design
  • Leaflet + React Leaflet - Interactive maps for location services
  • Firebase - Client-side Firebase SDK for authentication and data

Backend

  • Node.js + Express - JavaScript runtime and web framework
  • Firebase Admin - Server-side Firebase SDK for admin operations
  • Cloudinary - Cloud-based image and video management
  • Express Middleware - Multer (file uploads), CORS, UUID generation

Database & Storage

  • Firebase - Firestore (NoSQL database), Authentication, and data
  • Cloudinary - Cloud storage and image transformation service

Development & Testing

  • Jest + React Testing Library - Testing framework
  • Development Tools - ESLint (linting), PostCSS + Autoprefixer (CSS processing), Nodemon (auto-restart)

Code Quality & Analysis

  • SonarQube/SonarCloud - Code quality analysis and technical debt tracking
  • React Quality Tools - PropTypes validation and enhanced test utilities

🚀 Getting Started

  1. Clone this repository
    git clone https://github.com/Softeng310/Lost_Found_App.git

▶️ Running the Application

This project has a separate backend (Node.js/Express) and frontend (React) that must be started individually.

1. Install Dependencies

Open a terminal and run the following commands:

Backend

cd backend
npm install

Frontend

cd frontend
npm install

2. Start the Servers

Start the Backend

cd backend
npm start

The backend will run on http://localhost:5876

Start the Frontend

Open a new terminal window/tab and run:

cd frontend
npm start

The frontend will run on http://localhost:3000

You can now access the Lost & Found Community Platform in your browser at http://localhost:3000.


🧪 Testing

Test Coverage

The project includes test coverage with Jest and React Testing Library:

Frontend Tests

  • Home Page - Hero section, navigation, and feature rendering
  • Feed Page - Item listing, filtering, search, and updates
  • Item Detail - Item display, user interactions, and error handling
  • Report Page - Form submission, validation, and image upload
  • Profile Pages - User profile display and editing functionality
  • Sign Up - User registration and form validation
  • Announcements - CRUD operations and role-based access (Add, Edit, List)
  • Notification System - Bell component and notification settings

Test Features

  • Mock Data Management - Centralized mock data and test utilities
  • Firebase Mocking - Firebase services mocking for isolated testing
  • Router Testing - Navigation and routing behavior validation
  • Accessibility Testing - ARIA compliance and keyboard navigation
  • Error Handling - Error state testing
  • Form Validation - Input validation and submission testing

Running Tests

# Run all testscd frontend
npm test# Run tests in watch mode
npm test -- --watch
# Run tests with coverage
npm test -- --coverage

Test Utilities

  • Enhanced Test Utils - Centralized testing helpers and mock setup
  • Firebase Mocks - Firebase service mocking
  • Router Helpers - Navigation testing utilities
  • Mock Data Generators - Consistent test data creation

📊 Project Status & Development Progress

Current Status: Active Development 🚀

The Lost & Found Community Platform is in active development with a robust foundation and feature set.

Completed Features ✅

  • Core Platform - Lost and found item management system
  • User Authentication - Firebase-based user registration and login
  • Item Management - CRUD operations for lost/found items with image uploads
  • Item Feed - Display of all reported items with Firebase Firestore
  • Interactive Maps - Leaflet-based location selection and display
  • Search & Filtering - Search with filter options by type and location
  • User Profiles - User profile management and item history
  • Messaging System - Direct messaging between users
  • Notification System - Notification bell component and settings page
  • Campus Announcements - Staff/admin announcement system
  • Responsive Design - Mobile-first responsive interface
  • Testing - Test suite across 10 major components
  • Code Quality - SonarQube analysis applied with documented improvements

Development Metrics 📈

  • Test Coverage: Test suite across 10 major components
  • Code Quality: SonarQube analysis applied with documented improvements
  • Code Organization: Enhanced test utilities and centralized mock data
  • Development Standards: PropTypes validation and accessibility improvements

Recent Improvements 🆕

  • Enhanced Test Utilities - Centralized testing helpers and mock data
  • SonarQube Analysis - Code quality issues identified and documented fixes applied
  • PropTypes Validation - Runtime type checking for React components
  • Accessibility Improvements - ARIA compliance and keyboard navigation
  • Error Handling - Error states and user feedback
  • Code Organization - Improved test structure and reduced code duplication

Support & Getting Help

Contributing

See CONTRIBUTING.md for detailed contribution guidelines, code of conduct, and development workflow.

Acknowledgements & Contributors

  • Course / Project: SOFTENG 310 – Lost No More
  • Repo lead: Softeng310
  • Major contributors: Manan Patel(mpat501), Nadia Askari(nask472), Jerry Kim (pkim777), Rudra Patel (rpat943), Soham Kulkarni(skul970), Liam Byrne (lbyr117), Daniel Kim(dkim848), Kieran McKenna(kmck133), Meara Keelty(mkee115), Minseo Kim(mkim719), Muhammad Mohamad Hanafiah(mmoh314), Nathan Turley(ntur101)
  • Tech stack highlight: React, Tailwind CSS, Firebase (Auth, Firestore, Storage), Node.js, Express, Cloudinary, Multer

For a full list of contributors, see the GitHub contributors graph: https://github.com/Softeng310/Lost_Found_App/graphs/contributors

License

This project is licensed under the MIT License — see LICENSE for full text.

In short: you may use, copy, modify, and distribute this software under the MIT terms; it is provided "as is", without warranty.

About

No description, website, or topics provided.

Resources

Code of conduct

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Lost & Found Community Platform – Lost No More

Welcome to the Lost & Found Community Platform, developed by the Lost No More team for the University of Auckland's SOFTENG 310: Software Evolution and Maintenance course.

What is this project?

The Lost & Found Community Platform (Lost No More) is a web application that helps the University of Auckland community report, search for, and recover lost and found items. Users can register, post item listings with photos and locations, search and filter listings, and communicate with other users to arrange returns.

Why is this project useful?

  • Centralises lost & found reports in a searchable, shareable platform.
  • Speeds up item recovery with location tagging and user communication.
  • Provides a community-driven approach to item recovery.

Prerequisites

  • Node.js 16+ (LTS recommended)
  • npm 8+ (or yarn)
  • Git

🌟 Features

Core Functionality

  • 📸 Item Reporting: Upload photos and details of lost or found items with location tracking
  • 📰 Item Feed: Browse all reported lost and found items on campus
  • 🔍 Search & Filtering: Search listings by type, location, and status
  • 🗺️ Interactive Maps: View and select locations using Leaflet maps with coordinates
  • 🧾 User Profiles: User profiles with lost/found item history and contact information
  • 📢 Campus Announcements: Post and view campus-wide announcements (staff/admin only)
  • 💬 Messaging System: Direct messaging between users for item recovery coordination
  • 🔔 Notification System: Notification bell component for user updates
  • ⚙️ Notification Settings: Notification preferences page for users

🛠️ Tech Stack

Frontend

  • React - Modern React with hooks, routing (React Router DOM 6.30.1), and UI components (Lucide React 0.540.0)
  • Tailwind CSS - Utility-first CSS framework for responsive design
  • Leaflet + React Leaflet - Interactive maps for location services
  • Firebase - Client-side Firebase SDK for authentication and data

Backend

  • Node.js + Express - JavaScript runtime and web framework
  • Firebase Admin - Server-side Firebase SDK for admin operations
  • Cloudinary - Cloud-based image and video management
  • Express Middleware - Multer (file uploads), CORS, UUID generation

Database & Storage

  • Firebase - Firestore (NoSQL database), Authentication, and data
  • Cloudinary - Cloud storage and image transformation service

Development & Testing

  • Jest + React Testing Library - Testing framework
  • Development Tools - ESLint (linting), PostCSS + Autoprefixer (CSS processing), Nodemon (auto-restart)

Code Quality & Analysis

  • SonarQube/SonarCloud - Code quality analysis and technical debt tracking
  • React Quality Tools - PropTypes validation and enhanced test utilities

🚀 Getting Started

  1. Clone this repository
    git clone https://github.com/Softeng310/Lost_Found_App.git

▶️ Running the Application

This project has a separate backend (Node.js/Express) and frontend (React) that must be started individually.

1. Install Dependencies

Open a terminal and run the following commands:

Backend

cd backend
npm install

Frontend

cd frontend
npm install

2. Start the Servers

Start the Backend

cd backend
npm start

The backend will run on http://localhost:5876

Start the Frontend

Open a new terminal window/tab and run:

cd frontend
npm start

The frontend will run on http://localhost:3000

You can now access the Lost & Found Community Platform in your browser at http://localhost:3000.


🧪 Testing

Test Coverage

The project includes test coverage with Jest and React Testing Library:

Frontend Tests

  • Home Page - Hero section, navigation, and feature rendering
  • Feed Page - Item listing, filtering, search, and updates
  • Item Detail - Item display, user interactions, and error handling
  • Report Page - Form submission, validation, and image upload
  • Profile Pages - User profile display and editing functionality
  • Sign Up - User registration and form validation
  • Announcements - CRUD operations and role-based access (Add, Edit, List)
  • Notification System - Bell component and notification settings

Test Features

  • Mock Data Management - Centralized mock data and test utilities
  • Firebase Mocking - Firebase services mocking for isolated testing
  • Router Testing - Navigation and routing behavior validation
  • Accessibility Testing - ARIA compliance and keyboard navigation
  • Error Handling - Error state testing
  • Form Validation - Input validation and submission testing

Running Tests

# Run all testscd frontend
npm test# Run tests in watch mode
npm test -- --watch
# Run tests with coverage
npm test -- --coverage

Test Utilities

  • Enhanced Test Utils - Centralized testing helpers and mock setup
  • Firebase Mocks - Firebase service mocking
  • Router Helpers - Navigation testing utilities
  • Mock Data Generators - Consistent test data creation

📊 Project Status & Development Progress

Current Status: Active Development 🚀

The Lost & Found Community Platform is in active development with a robust foundation and feature set.

Completed Features ✅

  • Core Platform - Lost and found item management system
  • User Authentication - Firebase-based user registration and login
  • Item Management - CRUD operations for lost/found items with image uploads
  • Item Feed - Display of all reported items with Firebase Firestore
  • Interactive Maps - Leaflet-based location selection and display
  • Search & Filtering - Search with filter options by type and location
  • User Profiles - User profile management and item history
  • Messaging System - Direct messaging between users
  • Notification System - Notification bell component and settings page
  • Campus Announcements - Staff/admin announcement system
  • Responsive Design - Mobile-first responsive interface
  • Testing - Test suite across 10 major components
  • Code Quality - SonarQube analysis applied with documented improvements

Development Metrics 📈

  • Test Coverage: Test suite across 10 major components
  • Code Quality: SonarQube analysis applied with documented improvements
  • Code Organization: Enhanced test utilities and centralized mock data
  • Development Standards: PropTypes validation and accessibility improvements

Recent Improvements 🆕

  • Enhanced Test Utilities - Centralized testing helpers and mock data
  • SonarQube Analysis - Code quality issues identified and documented fixes applied
  • PropTypes Validation - Runtime type checking for React components
  • Accessibility Improvements - ARIA compliance and keyboard navigation
  • Error Handling - Error states and user feedback
  • Code Organization - Improved test structure and reduced code duplication

Support & Getting Help

Contributing

See CONTRIBUTING.md for detailed contribution guidelines, code of conduct, and development workflow.

Acknowledgements & Contributors

  • Course / Project: SOFTENG 310 – Lost No More
  • Repo lead: Softeng310
  • Major contributors: Manan Patel(mpat501), Nadia Askari(nask472), Jerry Kim (pkim777), Rudra Patel (rpat943), Soham Kulkarni(skul970), Liam Byrne (lbyr117), Daniel Kim(dkim848), Kieran McKenna(kmck133), Meara Keelty(mkee115), Minseo Kim(mkim719), Muhammad Mohamad Hanafiah(mmoh314), Nathan Turley(ntur101)
  • Tech stack highlight: React, Tailwind CSS, Firebase (Auth, Firestore, Storage), Node.js, Express, Cloudinary, Multer

For a full list of contributors, see the GitHub contributors graph: https://github.com/Softeng310/Lost_Found_App/graphs/contributors

License

This project is licensed under the MIT License — see LICENSE for full text.

In short: you may use, copy, modify, and distribute this software under the MIT terms; it is provided "as is", without warranty.

About

No description, website, or topics provided.

Resources

Code of conduct

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Lost & Found Community Platform – Lost No More

Welcome to the Lost & Found Community Platform, developed by the Lost No More team for the University of Auckland's SOFTENG 310: Software Evolution and Maintenance course.

What is this project?

The Lost & Found Community Platform (Lost No More) is a web application that helps the University of Auckland community report, search for, and recover lost and found items. Users can register, post item listings with photos and locations, search and filter listings, and communicate with other users to arrange returns.

Why is this project useful?

  • Centralises lost & found reports in a searchable, shareable platform.
  • Speeds up item recovery with location tagging and user communication.
  • Provides a community-driven approach to item recovery.

Prerequisites

  • Node.js 16+ (LTS recommended)
  • npm 8+ (or yarn)
  • Git

🌟 Features

Core Functionality

  • 📸 Item Reporting: Upload photos and details of lost or found items with location tracking
  • 📰 Item Feed: Browse all reported lost and found items on campus
  • 🔍 Search & Filtering: Search listings by type, location, and status
  • 🗺️ Interactive Maps: View and select locations using Leaflet maps with coordinates
  • 🧾 User Profiles: User profiles with lost/found item history and contact information
  • 📢 Campus Announcements: Post and view campus-wide announcements (staff/admin only)
  • 💬 Messaging System: Direct messaging between users for item recovery coordination
  • 🔔 Notification System: Notification bell component for user updates
  • ⚙️ Notification Settings: Notification preferences page for users

🛠️ Tech Stack

Frontend

  • React - Modern React with hooks, routing (React Router DOM 6.30.1), and UI components (Lucide React 0.540.0)
  • Tailwind CSS - Utility-first CSS framework for responsive design
  • Leaflet + React Leaflet - Interactive maps for location services
  • Firebase - Client-side Firebase SDK for authentication and data

Backend

  • Node.js + Express - JavaScript runtime and web framework
  • Firebase Admin - Server-side Firebase SDK for admin operations
  • Cloudinary - Cloud-based image and video management
  • Express Middleware - Multer (file uploads), CORS, UUID generation

Database & Storage

  • Firebase - Firestore (NoSQL database), Authentication, and data
  • Cloudinary - Cloud storage and image transformation service

Development & Testing

  • Jest + React Testing Library - Testing framework
  • Development Tools - ESLint (linting), PostCSS + Autoprefixer (CSS processing), Nodemon (auto-restart)

Code Quality & Analysis

  • SonarQube/SonarCloud - Code quality analysis and technical debt tracking
  • React Quality Tools - PropTypes validation and enhanced test utilities

🚀 Getting Started

  1. Clone this repository
    git clone https://github.com/Softeng310/Lost_Found_App.git

▶️ Running the Application

This project has a separate backend (Node.js/Express) and frontend (React) that must be started individually.

1. Install Dependencies

Open a terminal and run the following commands:

Backend

cd backend
npm install

Frontend

cd frontend
npm install

2. Start the Servers

Start the Backend

cd backend
npm start

The backend will run on http://localhost:5876

Start the Frontend

Open a new terminal window/tab and run:

cd frontend
npm start

The frontend will run on http://localhost:3000

You can now access the Lost & Found Community Platform in your browser at http://localhost:3000.


🧪 Testing

Test Coverage

The project includes test coverage with Jest and React Testing Library:

Frontend Tests

  • Home Page - Hero section, navigation, and feature rendering
  • Feed Page - Item listing, filtering, search, and updates
  • Item Detail - Item display, user interactions, and error handling
  • Report Page - Form submission, validation, and image upload
  • Profile Pages - User profile display and editing functionality
  • Sign Up - User registration and form validation
  • Announcements - CRUD operations and role-based access (Add, Edit, List)
  • Notification System - Bell component and notification settings

Test Features

  • Mock Data Management - Centralized mock data and test utilities
  • Firebase Mocking - Firebase services mocking for isolated testing
  • Router Testing - Navigation and routing behavior validation
  • Accessibility Testing - ARIA compliance and keyboard navigation
  • Error Handling - Error state testing
  • Form Validation - Input validation and submission testing

Running Tests

# Run all testscd frontend
npm test# Run tests in watch mode
npm test -- --watch
# Run tests with coverage
npm test -- --coverage

Test Utilities

  • Enhanced Test Utils - Centralized testing helpers and mock setup
  • Firebase Mocks - Firebase service mocking
  • Router Helpers - Navigation testing utilities
  • Mock Data Generators - Consistent test data creation

📊 Project Status & Development Progress

Current Status: Active Development 🚀

The Lost & Found Community Platform is in active development with a robust foundation and feature set.

Completed Features ✅

  • Core Platform - Lost and found item management system
  • User Authentication - Firebase-based user registration and login
  • Item Management - CRUD operations for lost/found items with image uploads
  • Item Feed - Display of all reported items with Firebase Firestore
  • Interactive Maps - Leaflet-based location selection and display
  • Search & Filtering - Search with filter options by type and location
  • User Profiles - User profile management and item history
  • Messaging System - Direct messaging between users
  • Notification System - Notification bell component and settings page
  • Campus Announcements - Staff/admin announcement system
  • Responsive Design - Mobile-first responsive interface
  • Testing - Test suite across 10 major components
  • Code Quality - SonarQube analysis applied with documented improvements

Development Metrics 📈

  • Test Coverage: Test suite across 10 major components
  • Code Quality: SonarQube analysis applied with documented improvements
  • Code Organization: Enhanced test utilities and centralized mock data
  • Development Standards: PropTypes validation and accessibility improvements

Recent Improvements 🆕

  • Enhanced Test Utilities - Centralized testing helpers and mock data
  • SonarQube Analysis - Code quality issues identified and documented fixes applied
  • PropTypes Validation - Runtime type checking for React components
  • Accessibility Improvements - ARIA compliance and keyboard navigation
  • Error Handling - Error states and user feedback
  • Code Organization - Improved test structure and reduced code duplication

Support & Getting Help

Contributing

See CONTRIBUTING.md for detailed contribution guidelines, code of conduct, and development workflow.

Acknowledgements & Contributors

  • Course / Project: SOFTENG 310 – Lost No More
  • Repo lead: Softeng310
  • Major contributors: Manan Patel(mpat501), Nadia Askari(nask472), Jerry Kim (pkim777), Rudra Patel (rpat943), Soham Kulkarni(skul970), Liam Byrne (lbyr117), Daniel Kim(dkim848), Kieran McKenna(kmck133), Meara Keelty(mkee115), Minseo Kim(mkim719), Muhammad Mohamad Hanafiah(mmoh314), Nathan Turley(ntur101)
  • Tech stack highlight: React, Tailwind CSS, Firebase (Auth, Firestore, Storage), Node.js, Express, Cloudinary, Multer

For a full list of contributors, see the GitHub contributors graph: https://github.com/Softeng310/Lost_Found_App/graphs/contributors

License

This project is licensed under the MIT License — see LICENSE for full text.

In short: you may use, copy, modify, and distribute this software under the MIT terms; it is provided "as is", without warranty.

About

No description, website, or topics provided.

Resources

Code of conduct

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

Lost & Found Community Platform – Lost No More

Welcome to the Lost & Found Community Platform, developed by the Lost No More team for the University of Auckland's SOFTENG 310: Software Evolution and Maintenance course.

What is this project?

The Lost & Found Community Platform (Lost No More) is a web application that helps the University of Auckland community report, search for, and recover lost and found items. Users can register, post item listings with photos and locations, search and filter listings, and communicate with other users to arrange returns.

Why is this project useful?

  • Centralises lost & found reports in a searchable, shareable platform.
  • Speeds up item recovery with location tagging and user communication.
  • Provides a community-driven approach to item recovery.

Prerequisites

  • Node.js 16+ (LTS recommended)
  • npm 8+ (or yarn)
  • Git

🌟 Features

Core Functionality

  • 📸 Item Reporting: Upload photos and details of lost or found items with location tracking
  • 📰 Item Feed: Browse all reported lost and found items on campus
  • 🔍 Search & Filtering: Search listings by type, location, and status
  • 🗺️ Interactive Maps: View and select locations using Leaflet maps with coordinates
  • 🧾 User Profiles: User profiles with lost/found item history and contact information
  • 📢 Campus Announcements: Post and view campus-wide announcements (staff/admin only)
  • 💬 Messaging System: Direct messaging between users for item recovery coordination
  • 🔔 Notification System: Notification bell component for user updates
  • ⚙️ Notification Settings: Notification preferences page for users

🛠️ Tech Stack

Frontend

  • React - Modern React with hooks, routing (React Router DOM 6.30.1), and UI components (Lucide React 0.540.0)
  • Tailwind CSS - Utility-first CSS framework for responsive design
  • Leaflet + React Leaflet - Interactive maps for location services
  • Firebase - Client-side Firebase SDK for authentication and data

Backend

  • Node.js + Express - JavaScript runtime and web framework
  • Firebase Admin - Server-side Firebase SDK for admin operations
  • Cloudinary - Cloud-based image and video management
  • Express Middleware - Multer (file uploads), CORS, UUID generation

Database & Storage

  • Firebase - Firestore (NoSQL database), Authentication, and data
  • Cloudinary - Cloud storage and image transformation service

Development & Testing

  • Jest + React Testing Library - Testing framework
  • Development Tools - ESLint (linting), PostCSS + Autoprefixer (CSS processing), Nodemon (auto-restart)

Code Quality & Analysis

  • SonarQube/SonarCloud - Code quality analysis and technical debt tracking
  • React Quality Tools - PropTypes validation and enhanced test utilities

🚀 Getting Started

  1. Clone this repository
    git clone https://github.com/Softeng310/Lost_Found_App.git

▶️ Running the Application

This project has a separate backend (Node.js/Express) and frontend (React) that must be started individually.

1. Install Dependencies

Open a terminal and run the following commands:

Backend

cd backend
npm install

Frontend

cd frontend
npm install

2. Start the Servers

Start the Backend

cd backend
npm start

The backend will run on http://localhost:5876

Start the Frontend

Open a new terminal window/tab and run:

cd frontend
npm start

The frontend will run on http://localhost:3000

You can now access the Lost & Found Community Platform in your browser at http://localhost:3000.


🧪 Testing

Test Coverage

The project includes test coverage with Jest and React Testing Library:

Frontend Tests

  • Home Page - Hero section, navigation, and feature rendering
  • Feed Page - Item listing, filtering, search, and updates
  • Item Detail - Item display, user interactions, and error handling
  • Report Page - Form submission, validation, and image upload
  • Profile Pages - User profile display and editing functionality
  • Sign Up - User registration and form validation
  • Announcements - CRUD operations and role-based access (Add, Edit, List)
  • Notification System - Bell component and notification settings

Test Features

  • Mock Data Management - Centralized mock data and test utilities
  • Firebase Mocking - Firebase services mocking for isolated testing
  • Router Testing - Navigation and routing behavior validation
  • Accessibility Testing - ARIA compliance and keyboard navigation
  • Error Handling - Error state testing
  • Form Validation - Input validation and submission testing

Running Tests

# Run all testscd frontend
npm test# Run tests in watch mode
npm test -- --watch
# Run tests with coverage
npm test -- --coverage

Test Utilities

  • Enhanced Test Utils - Centralized testing helpers and mock setup
  • Firebase Mocks - Firebase service mocking
  • Router Helpers - Navigation testing utilities
  • Mock Data Generators - Consistent test data creation

📊 Project Status & Development Progress

Current Status: Active Development 🚀

The Lost & Found Community Platform is in active development with a robust foundation and feature set.

Completed Features ✅

  • Core Platform - Lost and found item management system
  • User Authentication - Firebase-based user registration and login
  • Item Management - CRUD operations for lost/found items with image uploads
  • Item Feed - Display of all reported items with Firebase Firestore
  • Interactive Maps - Leaflet-based location selection and display
  • Search & Filtering - Search with filter options by type and location
  • User Profiles - User profile management and item history
  • Messaging System - Direct messaging between users
  • Notification System - Notification bell component and settings page
  • Campus Announcements - Staff/admin announcement system
  • Responsive Design - Mobile-first responsive interface
  • Testing - Test suite across 10 major components
  • Code Quality - SonarQube analysis applied with documented improvements

Development Metrics 📈

  • Test Coverage: Test suite across 10 major components
  • Code Quality: SonarQube analysis applied with documented improvements
  • Code Organization: Enhanced test utilities and centralized mock data
  • Development Standards: PropTypes validation and accessibility improvements

Recent Improvements 🆕

  • Enhanced Test Utilities - Centralized testing helpers and mock data
  • SonarQube Analysis - Code quality issues identified and documented fixes applied
  • PropTypes Validation - Runtime type checking for React components
  • Accessibility Improvements - ARIA compliance and keyboard navigation
  • Error Handling - Error states and user feedback
  • Code Organization - Improved test structure and reduced code duplication

Support & Getting Help

Contributing

See CONTRIBUTING.md for detailed contribution guidelines, code of conduct, and development workflow.

Acknowledgements & Contributors

  • Course / Project: SOFTENG 310 – Lost No More
  • Repo lead: Softeng310
  • Major contributors: Manan Patel(mpat501), Nadia Askari(nask472), Jerry Kim (pkim777), Rudra Patel (rpat943), Soham Kulkarni(skul970), Liam Byrne (lbyr117), Daniel Kim(dkim848), Kieran McKenna(kmck133), Meara Keelty(mkee115), Minseo Kim(mkim719), Muhammad Mohamad Hanafiah(mmoh314), Nathan Turley(ntur101)
  • Tech stack highlight: React, Tailwind CSS, Firebase (Auth, Firestore, Storage), Node.js, Express, Cloudinary, Multer

For a full list of contributors, see the GitHub contributors graph: https://github.com/Softeng310/Lost_Found_App/graphs/contributors

License

This project is licensed under the MIT License — see LICENSE for full text.

In short: you may use, copy, modify, and distribute this software under the MIT terms; it is provided "as is", without warranty.

About

No description, website, or topics provided.

Resources

Code of conduct

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Lost & Found Community Platform – Lost No More

Welcome to the Lost & Found Community Platform, developed by the Lost No More team for the University of Auckland's SOFTENG 310: Software Evolution and Maintenance course.

What is this project?

The Lost & Found Community Platform (Lost No More) is a web application that helps the University of Auckland community report, search for, and recover lost and found items. Users can register, post item listings with photos and locations, search and filter listings, and communicate with other users to arrange returns.

Why is this project useful?

  • Centralises lost & found reports in a searchable, shareable platform.
  • Speeds up item recovery with location tagging and user communication.
  • Provides a community-driven approach to item recovery.

Prerequisites

  • Node.js 16+ (LTS recommended)
  • npm 8+ (or yarn)
  • Git

🌟 Features

Core Functionality

  • 📸 Item Reporting: Upload photos and details of lost or found items with location tracking
  • 📰 Item Feed: Browse all reported lost and found items on campus
  • 🔍 Search & Filtering: Search listings by type, location, and status
  • 🗺️ Interactive Maps: View and select locations using Leaflet maps with coordinates
  • 🧾 User Profiles: User profiles with lost/found item history and contact information
  • 📢 Campus Announcements: Post and view campus-wide announcements (staff/admin only)
  • 💬 Messaging System: Direct messaging between users for item recovery coordination
  • 🔔 Notification System: Notification bell component for user updates
  • ⚙️ Notification Settings: Notification preferences page for users

🛠️ Tech Stack

Frontend

  • React - Modern React with hooks, routing (React Router DOM 6.30.1), and UI components (Lucide React 0.540.0)
  • Tailwind CSS - Utility-first CSS framework for responsive design
  • Leaflet + React Leaflet - Interactive maps for location services
  • Firebase - Client-side Firebase SDK for authentication and data

Backend

  • Node.js + Express - JavaScript runtime and web framework
  • Firebase Admin - Server-side Firebase SDK for admin operations
  • Cloudinary - Cloud-based image and video management
  • Express Middleware - Multer (file uploads), CORS, UUID generation

Database & Storage

  • Firebase - Firestore (NoSQL database), Authentication, and data
  • Cloudinary - Cloud storage and image transformation service

Development & Testing

  • Jest + React Testing Library - Testing framework
  • Development Tools - ESLint (linting), PostCSS + Autoprefixer (CSS processing), Nodemon (auto-restart)

Code Quality & Analysis

  • SonarQube/SonarCloud - Code quality analysis and technical debt tracking
  • React Quality Tools - PropTypes validation and enhanced test utilities

🚀 Getting Started

  1. Clone this repository
    git clone https://github.com/Softeng310/Lost_Found_App.git

▶️ Running the Application

This project has a separate backend (Node.js/Express) and frontend (React) that must be started individually.

1. Install Dependencies

Open a terminal and run the following commands:

Backend

cd backend
npm install

Frontend

cd frontend
npm install

2. Start the Servers

Start the Backend

cd backend
npm start

The backend will run on http://localhost:5876

Start the Frontend

Open a new terminal window/tab and run:

cd frontend
npm start

The frontend will run on http://localhost:3000

You can now access the Lost & Found Community Platform in your browser at http://localhost:3000.


🧪 Testing

Test Coverage

The project includes test coverage with Jest and React Testing Library:

Frontend Tests

  • Home Page - Hero section, navigation, and feature rendering
  • Feed Page - Item listing, filtering, search, and updates
  • Item Detail - Item display, user interactions, and error handling
  • Report Page - Form submission, validation, and image upload
  • Profile Pages - User profile display and editing functionality
  • Sign Up - User registration and form validation
  • Announcements - CRUD operations and role-based access (Add, Edit, List)
  • Notification System - Bell component and notification settings

Test Features

  • Mock Data Management - Centralized mock data and test utilities
  • Firebase Mocking - Firebase services mocking for isolated testing
  • Router Testing - Navigation and routing behavior validation
  • Accessibility Testing - ARIA compliance and keyboard navigation
  • Error Handling - Error state testing
  • Form Validation - Input validation and submission testing

Running Tests

# Run all testscd frontend
npm test# Run tests in watch mode
npm test -- --watch
# Run tests with coverage
npm test -- --coverage

Test Utilities

  • Enhanced Test Utils - Centralized testing helpers and mock setup
  • Firebase Mocks - Firebase service mocking
  • Router Helpers - Navigation testing utilities
  • Mock Data Generators - Consistent test data creation

📊 Project Status & Development Progress

Current Status: Active Development 🚀

The Lost & Found Community Platform is in active development with a robust foundation and feature set.

Completed Features ✅

  • Core Platform - Lost and found item management system
  • User Authentication - Firebase-based user registration and login
  • Item Management - CRUD operations for lost/found items with image uploads
  • Item Feed - Display of all reported items with Firebase Firestore
  • Interactive Maps - Leaflet-based location selection and display
  • Search & Filtering - Search with filter options by type and location
  • User Profiles - User profile management and item history
  • Messaging System - Direct messaging between users
  • Notification System - Notification bell component and settings page
  • Campus Announcements - Staff/admin announcement system
  • Responsive Design - Mobile-first responsive interface
  • Testing - Test suite across 10 major components
  • Code Quality - SonarQube analysis applied with documented improvements

Development Metrics 📈

  • Test Coverage: Test suite across 10 major components
  • Code Quality: SonarQube analysis applied with documented improvements
  • Code Organization: Enhanced test utilities and centralized mock data
  • Development Standards: PropTypes validation and accessibility improvements

Recent Improvements 🆕

  • Enhanced Test Utilities - Centralized testing helpers and mock data
  • SonarQube Analysis - Code quality issues identified and documented fixes applied
  • PropTypes Validation - Runtime type checking for React components
  • Accessibility Improvements - ARIA compliance and keyboard navigation
  • Error Handling - Error states and user feedback
  • Code Organization - Improved test structure and reduced code duplication

Support & Getting Help

Contributing

See CONTRIBUTING.md for detailed contribution guidelines, code of conduct, and development workflow.

Acknowledgements & Contributors

  • Course / Project: SOFTENG 310 – Lost No More
  • Repo lead: Softeng310
  • Major contributors: Manan Patel(mpat501), Nadia Askari(nask472), Jerry Kim (pkim777), Rudra Patel (rpat943), Soham Kulkarni(skul970), Liam Byrne (lbyr117), Daniel Kim(dkim848), Kieran McKenna(kmck133), Meara Keelty(mkee115), Minseo Kim(mkim719), Muhammad Mohamad Hanafiah(mmoh314), Nathan Turley(ntur101)
  • Tech stack highlight: React, Tailwind CSS, Firebase (Auth, Firestore, Storage), Node.js, Express, Cloudinary, Multer

For a full list of contributors, see the GitHub contributors graph: https://github.com/Softeng310/Lost_Found_App/graphs/contributors

License

This project is licensed under the MIT License — see LICENSE for full text.

In short: you may use, copy, modify, and distribute this software under the MIT terms; it is provided "as is", without warranty.

About

No description, website, or topics provided.

Resources

Code of conduct

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Lost & Found Community Platform – Lost No More

Welcome to the Lost & Found Community Platform, developed by the Lost No More team for the University of Auckland's SOFTENG 310: Software Evolution and Maintenance course.

What is this project?

The Lost & Found Community Platform (Lost No More) is a web application that helps the University of Auckland community report, search for, and recover lost and found items. Users can register, post item listings with photos and locations, search and filter listings, and communicate with other users to arrange returns.

Why is this project useful?

  • Centralises lost & found reports in a searchable, shareable platform.
  • Speeds up item recovery with location tagging and user communication.
  • Provides a community-driven approach to item recovery.

Prerequisites

  • Node.js 16+ (LTS recommended)
  • npm 8+ (or yarn)
  • Git

🌟 Features

Core Functionality

  • 📸 Item Reporting: Upload photos and details of lost or found items with location tracking
  • 📰 Item Feed: Browse all reported lost and found items on campus
  • 🔍 Search & Filtering: Search listings by type, location, and status
  • 🗺️ Interactive Maps: View and select locations using Leaflet maps with coordinates
  • 🧾 User Profiles: User profiles with lost/found item history and contact information
  • 📢 Campus Announcements: Post and view campus-wide announcements (staff/admin only)
  • 💬 Messaging System: Direct messaging between users for item recovery coordination
  • 🔔 Notification System: Notification bell component for user updates
  • ⚙️ Notification Settings: Notification preferences page for users

🛠️ Tech Stack

Frontend

  • React - Modern React with hooks, routing (React Router DOM 6.30.1), and UI components (Lucide React 0.540.0)
  • Tailwind CSS - Utility-first CSS framework for responsive design
  • Leaflet + React Leaflet - Interactive maps for location services
  • Firebase - Client-side Firebase SDK for authentication and data

Backend

  • Node.js + Express - JavaScript runtime and web framework
  • Firebase Admin - Server-side Firebase SDK for admin operations
  • Cloudinary - Cloud-based image and video management
  • Express Middleware - Multer (file uploads), CORS, UUID generation

Database & Storage

  • Firebase - Firestore (NoSQL database), Authentication, and data
  • Cloudinary - Cloud storage and image transformation service

Development & Testing

  • Jest + React Testing Library - Testing framework
  • Development Tools - ESLint (linting), PostCSS + Autoprefixer (CSS processing), Nodemon (auto-restart)

Code Quality & Analysis

  • SonarQube/SonarCloud - Code quality analysis and technical debt tracking
  • React Quality Tools - PropTypes validation and enhanced test utilities

🚀 Getting Started

  1. Clone this repository
    git clone https://github.com/Softeng310/Lost_Found_App.git

▶️ Running the Application

This project has a separate backend (Node.js/Express) and frontend (React) that must be started individually.

1. Install Dependencies

Open a terminal and run the following commands:

Backend

cd backend
npm install

Frontend

cd frontend
npm install

2. Start the Servers

Start the Backend

cd backend
npm start

The backend will run on http://localhost:5876

Start the Frontend

Open a new terminal window/tab and run:

cd frontend
npm start

The frontend will run on http://localhost:3000

You can now access the Lost & Found Community Platform in your browser at http://localhost:3000.


🧪 Testing

Test Coverage

The project includes test coverage with Jest and React Testing Library:

Frontend Tests

  • Home Page - Hero section, navigation, and feature rendering
  • Feed Page - Item listing, filtering, search, and updates
  • Item Detail - Item display, user interactions, and error handling
  • Report Page - Form submission, validation, and image upload
  • Profile Pages - User profile display and editing functionality
  • Sign Up - User registration and form validation
  • Announcements - CRUD operations and role-based access (Add, Edit, List)
  • Notification System - Bell component and notification settings

Test Features

  • Mock Data Management - Centralized mock data and test utilities
  • Firebase Mocking - Firebase services mocking for isolated testing
  • Router Testing - Navigation and routing behavior validation
  • Accessibility Testing - ARIA compliance and keyboard navigation
  • Error Handling - Error state testing
  • Form Validation - Input validation and submission testing

Running Tests

# Run all testscd frontend
npm test# Run tests in watch mode
npm test -- --watch
# Run tests with coverage
npm test -- --coverage

Test Utilities

  • Enhanced Test Utils - Centralized testing helpers and mock setup
  • Firebase Mocks - Firebase service mocking
  • Router Helpers - Navigation testing utilities
  • Mock Data Generators - Consistent test data creation

📊 Project Status & Development Progress

Current Status: Active Development 🚀

The Lost & Found Community Platform is in active development with a robust foundation and feature set.

Completed Features ✅

  • Core Platform - Lost and found item management system
  • User Authentication - Firebase-based user registration and login
  • Item Management - CRUD operations for lost/found items with image uploads
  • Item Feed - Display of all reported items with Firebase Firestore
  • Interactive Maps - Leaflet-based location selection and display
  • Search & Filtering - Search with filter options by type and location
  • User Profiles - User profile management and item history
  • Messaging System - Direct messaging between users
  • Notification System - Notification bell component and settings page
  • Campus Announcements - Staff/admin announcement system
  • Responsive Design - Mobile-first responsive interface
  • Testing - Test suite across 10 major components
  • Code Quality - SonarQube analysis applied with documented improvements

Development Metrics 📈

  • Test Coverage: Test suite across 10 major components
  • Code Quality: SonarQube analysis applied with documented improvements
  • Code Organization: Enhanced test utilities and centralized mock data
  • Development Standards: PropTypes validation and accessibility improvements

Recent Improvements 🆕

  • Enhanced Test Utilities - Centralized testing helpers and mock data
  • SonarQube Analysis - Code quality issues identified and documented fixes applied
  • PropTypes Validation - Runtime type checking for React components
  • Accessibility Improvements - ARIA compliance and keyboard navigation
  • Error Handling - Error states and user feedback
  • Code Organization - Improved test structure and reduced code duplication

Support & Getting Help

Contributing

See CONTRIBUTING.md for detailed contribution guidelines, code of conduct, and development workflow.

Acknowledgements & Contributors

  • Course / Project: SOFTENG 310 – Lost No More
  • Repo lead: Softeng310
  • Major contributors: Manan Patel(mpat501), Nadia Askari(nask472), Jerry Kim (pkim777), Rudra Patel (rpat943), Soham Kulkarni(skul970), Liam Byrne (lbyr117), Daniel Kim(dkim848), Kieran McKenna(kmck133), Meara Keelty(mkee115), Minseo Kim(mkim719), Muhammad Mohamad Hanafiah(mmoh314), Nathan Turley(ntur101)
  • Tech stack highlight: React, Tailwind CSS, Firebase (Auth, Firestore, Storage), Node.js, Express, Cloudinary, Multer

For a full list of contributors, see the GitHub contributors graph: https://github.com/Softeng310/Lost_Found_App/graphs/contributors

License

This project is licensed under the MIT License — see LICENSE for full text.

In short: you may use, copy, modify, and distribute this software under the MIT terms; it is provided "as is", without warranty.

About

No description, website, or topics provided.

Resources

Code of conduct

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

Lost & Found Community Platform – Lost No More

Welcome to the Lost & Found Community Platform, developed by the Lost No More team for the University of Auckland's SOFTENG 310: Software Evolution and Maintenance course.

What is this project?

The Lost & Found Community Platform (Lost No More) is a web application that helps the University of Auckland community report, search for, and recover lost and found items. Users can register, post item listings with photos and locations, search and filter listings, and communicate with other users to arrange returns.

Why is this project useful?

  • Centralises lost & found reports in a searchable, shareable platform.
  • Speeds up item recovery with location tagging and user communication.
  • Provides a community-driven approach to item recovery.

Prerequisites

  • Node.js 16+ (LTS recommended)
  • npm 8+ (or yarn)
  • Git

🌟 Features

Core Functionality

  • 📸 Item Reporting: Upload photos and details of lost or found items with location tracking
  • 📰 Item Feed: Browse all reported lost and found items on campus
  • 🔍 Search & Filtering: Search listings by type, location, and status
  • 🗺️ Interactive Maps: View and select locations using Leaflet maps with coordinates
  • 🧾 User Profiles: User profiles with lost/found item history and contact information
  • 📢 Campus Announcements: Post and view campus-wide announcements (staff/admin only)
  • 💬 Messaging System: Direct messaging between users for item recovery coordination
  • 🔔 Notification System: Notification bell component for user updates
  • ⚙️ Notification Settings: Notification preferences page for users

🛠️ Tech Stack

Frontend

  • React - Modern React with hooks, routing (React Router DOM 6.30.1), and UI components (Lucide React 0.540.0)
  • Tailwind CSS - Utility-first CSS framework for responsive design
  • Leaflet + React Leaflet - Interactive maps for location services
  • Firebase - Client-side Firebase SDK for authentication and data

Backend

  • Node.js + Express - JavaScript runtime and web framework
  • Firebase Admin - Server-side Firebase SDK for admin operations
  • Cloudinary - Cloud-based image and video management
  • Express Middleware - Multer (file uploads), CORS, UUID generation

Database & Storage

  • Firebase - Firestore (NoSQL database), Authentication, and data
  • Cloudinary - Cloud storage and image transformation service

Development & Testing

  • Jest + React Testing Library - Testing framework
  • Development Tools - ESLint (linting), PostCSS + Autoprefixer (CSS processing), Nodemon (auto-restart)

Code Quality & Analysis

  • SonarQube/SonarCloud - Code quality analysis and technical debt tracking
  • React Quality Tools - PropTypes validation and enhanced test utilities

🚀 Getting Started

  1. Clone this repository
    git clone https://github.com/Softeng310/Lost_Found_App.git

▶️ Running the Application

This project has a separate backend (Node.js/Express) and frontend (React) that must be started individually.

1. Install Dependencies

Open a terminal and run the following commands:

Backend

cd backend
npm install

Frontend

cd frontend
npm install

2. Start the Servers

Start the Backend

cd backend
npm start

The backend will run on http://localhost:5876

Start the Frontend

Open a new terminal window/tab and run:

cd frontend
npm start

The frontend will run on http://localhost:3000

You can now access the Lost & Found Community Platform in your browser at http://localhost:3000.


🧪 Testing

Test Coverage

The project includes test coverage with Jest and React Testing Library:

Frontend Tests

  • Home Page - Hero section, navigation, and feature rendering
  • Feed Page - Item listing, filtering, search, and updates
  • Item Detail - Item display, user interactions, and error handling
  • Report Page - Form submission, validation, and image upload
  • Profile Pages - User profile display and editing functionality
  • Sign Up - User registration and form validation
  • Announcements - CRUD operations and role-based access (Add, Edit, List)
  • Notification System - Bell component and notification settings

Test Features

  • Mock Data Management - Centralized mock data and test utilities
  • Firebase Mocking - Firebase services mocking for isolated testing
  • Router Testing - Navigation and routing behavior validation
  • Accessibility Testing - ARIA compliance and keyboard navigation
  • Error Handling - Error state testing
  • Form Validation - Input validation and submission testing

Running Tests

# Run all testscd frontend
npm test# Run tests in watch mode
npm test -- --watch
# Run tests with coverage
npm test -- --coverage

Test Utilities

  • Enhanced Test Utils - Centralized testing helpers and mock setup
  • Firebase Mocks - Firebase service mocking
  • Router Helpers - Navigation testing utilities
  • Mock Data Generators - Consistent test data creation

📊 Project Status & Development Progress

Current Status: Active Development 🚀

The Lost & Found Community Platform is in active development with a robust foundation and feature set.

Completed Features ✅

  • Core Platform - Lost and found item management system
  • User Authentication - Firebase-based user registration and login
  • Item Management - CRUD operations for lost/found items with image uploads
  • Item Feed - Display of all reported items with Firebase Firestore
  • Interactive Maps - Leaflet-based location selection and display
  • Search & Filtering - Search with filter options by type and location
  • User Profiles - User profile management and item history
  • Messaging System - Direct messaging between users
  • Notification System - Notification bell component and settings page
  • Campus Announcements - Staff/admin announcement system
  • Responsive Design - Mobile-first responsive interface
  • Testing - Test suite across 10 major components
  • Code Quality - SonarQube analysis applied with documented improvements

Development Metrics 📈

  • Test Coverage: Test suite across 10 major components
  • Code Quality: SonarQube analysis applied with documented improvements
  • Code Organization: Enhanced test utilities and centralized mock data
  • Development Standards: PropTypes validation and accessibility improvements

Recent Improvements 🆕

  • Enhanced Test Utilities - Centralized testing helpers and mock data
  • SonarQube Analysis - Code quality issues identified and documented fixes applied
  • PropTypes Validation - Runtime type checking for React components
  • Accessibility Improvements - ARIA compliance and keyboard navigation
  • Error Handling - Error states and user feedback
  • Code Organization - Improved test structure and reduced code duplication

Support & Getting Help

Contributing

See CONTRIBUTING.md for detailed contribution guidelines, code of conduct, and development workflow.

Acknowledgements & Contributors

  • Course / Project: SOFTENG 310 – Lost No More
  • Repo lead: Softeng310
  • Major contributors: Manan Patel(mpat501), Nadia Askari(nask472), Jerry Kim (pkim777), Rudra Patel (rpat943), Soham Kulkarni(skul970), Liam Byrne (lbyr117), Daniel Kim(dkim848), Kieran McKenna(kmck133), Meara Keelty(mkee115), Minseo Kim(mkim719), Muhammad Mohamad Hanafiah(mmoh314), Nathan Turley(ntur101)
  • Tech stack highlight: React, Tailwind CSS, Firebase (Auth, Firestore, Storage), Node.js, Express, Cloudinary, Multer

For a full list of contributors, see the GitHub contributors graph: https://github.com/Softeng310/Lost_Found_App/graphs/contributors

License

This project is licensed under the MIT License — see LICENSE for full text.

In short: you may use, copy, modify, and distribute this software under the MIT terms; it is provided "as is", without warranty.

About

No description, website, or topics provided.

Resources

Code of conduct

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages