Let’s connect

Designed by Yours Truly

Campus Lost & Found

[Web-Based Item Recovery Platform for Loyola University Chicago]

 

 

A full-stack web application that helps Loyola students recover lost items by providing a centralized platform to post and browse lost and found items. Built with Flask and SQLAlchemy, the app features image uploads, secure item deletion with unique codes, and a responsive browsing interface that makes it easy for students to connect lost items with their owners.

[The Problem]

Loyola students had no centralized system to report and recover lost items on campus. Items would sit in various lost and found locations across buildings, or students would resort to posting in scattered GroupMe chats and social media groups. This made it nearly impossible to match lost items with their owners, and valuable belongings often went unclaimed.

[My Approach]

I led the development of a straightforward web platform where students can post items they've lost or found, upload photos for easy identification, and browse all listings in one place. The system needed to be simple enough that anyone could use it without creating an account, while still maintaining security through unique deletion codes.

 

Key Features:

    • Image upload system - Students can attach photos to help identify items, with validation for file type and size
    • Secure deletion mechanism - Auto-generated 6-character codes prevent unauthorized removal of posts
    • Responsive browsing - Grid layout displays all items sorted by date, with filtering by category and location
    • Item detail pages - Full descriptions with contact information so finders and owners can connect

[Technical Implementation]

Database Design: I designed a SQLite database schema using SQLAlchemy ORM that captures all essential item information, title, description, category, location, contact details, and timestamps. The deletion code field provides security without requiring user accounts, and the image filename field links to uploaded photos stored in the server's static directory.

 

Secure File Upload: Implemented server-side validation for image uploads using Werkzeug's secure filename sanitization. Files are limited to 16MB and restricted to safe image formats (JPG, PNG, GIF). Each uploaded file gets a unique timestamp-based name to prevent conflicts and ensure we can track which image belongs to which item.

 

Authorization Without Authentication: Rather than building a full login system, I implemented a deletion code mechanism that balances security with ease of use. When someone posts an item, they receive a unique 6-character code shown only once. To delete their post later, they need both the Item ID and this code, simple enough for legitimate users but secure enough to prevent malicious deletions.

 

Team Coordination: As team lead, I handled task delegation, code reviews, and integration of components built by team members. I established our development workflow, managed our GitHub repository, and ensured everyone understood how their pieces fit into the larger application architecture.

[outcomes & Reflections]

The final application handles the complete item posting and recovery workflow with image support, secure deletion, and an intuitive browsing interface, students can post items in under a minute and browse all campus listings in one place. This was my first experience leading a development team, which taught me how to break down features and coordinate work across multiple people. I gained hands-on experience with Flask routing, SQLAlchemy relationships, and secure file upload handling. The deletion code approach was an interesting design constraint, it kept things simple while maintaining basic security without requiring full authentication. If I built this again, I'd add user authentication for editing posts and viewing history, implement pagination for better performance, and create API endpoints to support a mobile app.

Users receive their unique deletion code once after posting, then use both Item ID and code to remove items later

Github