Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
139 changes: 113 additions & 26 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,13 @@ Welcome to the **Lost & Found Community Platform**, developed by the **Lost No M

## 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 message other users to arrange returns.
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 notifications and location tagging.
- Provides moderation controls and privacy-conscious features to reduce misuse.
- Speeds up item recovery with location tagging and user communication.
- Provides a community-driven approach to item recovery.

## Prerequisites

Expand All @@ -20,26 +20,46 @@ The Lost & Found Community Platform (Lost No More) is a web application that hel

---

## 🌟 Features (Assignment 1 - A1)
## 🌟 Features

- πŸ“Έ **Item Reporting**: Upload photos and details of lost or found items.
- πŸ“° **Lost Items Feed**: Browse a real-time feed of all reported lost items on campus.
- πŸ” **Search & Filtering**: Search listings by type, date, or location quickly.
- 🧾 **User Profiles**: Track your lost/found and claimed item history.
- πŸ“’ **Campus Notices**: Post alerts and policy updates.
### 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

Copilot AI Oct 19, 2025

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Redundant phrasing ('User Profiles: User profiles ...'). Consider tightening to avoid repetition, e.g., '- 🧾 User Profiles: Manage lost/found item history and contact information'.

Suggested change
- 🧾 **User Profiles**: User profiles with lost/found item history and contact information
- 🧾 **User Profiles**: Manage lost/found item history and contact information

Copilot uses AI. Check for mistakes.
- πŸ“’ **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 + Tailwind CSS
- **Auth / Database / Storage**: Firebase β€” the app uses Firebase Authentication for user sign-in, Cloud Firestore for application data, and Firebase Storage for item images.
- **Backend**: Node.js + Express β€” a lightweight API server is included (health endpoints). The frontend currently communicates directly with Firebase; the backend contains minimal Express code and `firebase-admin` is available in package.json for optional server-side admin tasks.
- **Image Uploads**: Cloudinary β€” used for efficient image storage, transformation, and delivery. Item images are uploaded to Cloudinary before being referenced in the app.
- **Image Upload API**: The backend uses Cloudinary and Multer to handle secure image uploads. Images are uploaded from the frontend to the backend API, which processes them with Multer and stores them in Cloudinary. The resulting Cloudinary URLs are saved in Firestore and referenced in item listings.
- **CI/CD / Analysis / Security**: GitHub Actions, SonarLint/SonarCloud, and Snyk are listed as tooling that can be used for CI and quality checks.
### 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

> Note: PostgreSQL + PostGIS, Elasticsearch, AWS S3, and a JWT-based authentication backend are mentioned in earlier planning notes but are not implemented in this repository's current codebase β€” the project presently relies on Firebase for auth, data, and storage. These components remain possible future alternatives.
### 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

Copilot AI Oct 19, 2025

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

'UUID generation' (via the uuid package) is not middleware; grouping it under 'Express Middleware' is misleading. Consider rewording to separate middleware from utilities, e.g., '- Middleware: Multer, CORS; Utilities: uuid (ID generation)'.

Suggested change
- **Express Middleware** - Multer (file uploads), CORS, UUID generation
- **Express Middleware** - Multer (file uploads), CORS
- **Utilities** - uuid (ID generation)

Copilot uses AI. Check for mistakes.

### Database & Storage
- **Firebase** - Firestore (NoSQL database), Authentication, and data

Copilot AI Oct 19, 2025

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Grammatical/clarity issue: 'and data' is incomplete and ambiguous. Recommend rephrasing to clearly state what Firebase provides.

Suggested change
- **Firebase** - Firestore (NoSQL database), Authentication, and data
- **Firebase** - Firestore (NoSQL database), Authentication, and Cloud Storage

Copilot uses AI. Check for mistakes.
- **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

---

Expand Down Expand Up @@ -91,18 +111,85 @@ You can now access the Lost & Found Community Platform in your browser at [http:

---

## Testing / Smoke tests

This repository does not include an automated test suite yet. Manual smoke test steps:
## πŸ§ͺ 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
```bash
# Run all tests
cd frontend
npm test

1. Start backend and frontend.
2. Open http://localhost:3000
3. Sign up a user, create a lost/found listing with an image, search for it, and view details.
# Run tests in watch mode
npm test -- --watch

# Run tests with coverage
npm test -- --coverage
```

## Versions / Releases
#### 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

Copilot AI Oct 19, 2025

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[nitpick] This statement appears duplicated in both 'Completed Features' and 'Development Metrics'. Consider removing one or rephrasing to avoid repetition.

Suggested change
- **Testing** - Test suite across 10 major components
- **Testing** - Comprehensive test suite implemented

Copilot uses AI. Check for mistakes.
- **Code Quality** - SonarQube analysis applied with documented improvements

### Development Metrics πŸ“ˆ
- **Test Coverage**: Test suite across 10 major components

Copilot AI Oct 19, 2025

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[nitpick] This statement appears duplicated in both 'Completed Features' and 'Development Metrics'. Consider removing one or rephrasing to avoid repetition.

Suggested change
- **Test Coverage**: Test suite across 10 major components
- **Test Coverage**: High coverage across all major components

Copilot uses AI. Check for mistakes.
- **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

This project uses Git for versioning. There is only 1 release with A1 features present.
---

## Support & Getting Help

Expand All @@ -111,13 +198,13 @@ This project uses Git for versioning. There is only 1 release with A1 features p

## Contributing

[CONTRIBUTING.md](CONTRIBUTING.md) for contribution guidelines, the code of conduct, and development workflow.
See [CONTRIBUTING.md](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)
- 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:
Expand Down