Inspiration

College students accumulate so much stuff — textbooks, lamps, mini fridges, clothes — and when the semester ends, most of it ends up in the trash. We wanted to build something that makes it ridiculously easy for students to pass their items to someone who actually needs them, with zero friction and zero money involved.

What it does

ReuseU is a campus donation platform where students can post items they no longer need, and other students can claim them. Every donation earns the donor a green score, creating a leaderboard that rewards the most generous students on campus. The flow is simple: post a photo, someone claims it, you confirm pickup, and your green score goes up

How we built it

Frontend: React with Vite, organized into pages, components, and services Backend: Java with Spring Boot, REST API with full CRUD Database: PostgreSQL for persistent storage of users and items Image storage: Local file system with Spring serving static files from the uploads directory Auth: Spring Security with BCrypt password hashing

Challenges we ran into

Photo storage and sharing was our biggest challenge. Getting images to upload correctly, save to disk with unique filenames, and then serve back to the frontend through Spring Security took significant debugging — CORS and 403 errors kept blocking the uploads directory even after the API routes were open. Sharing a live database across teammates on the same network also required careful configuration of PostgreSQL and Spring's server address to make sure everyone could develop against the same data without exposing it publicly.

Accomplishments that we're proud of

A fully working donation loop from posting to claiming to confirming pickup A real-time green score and leaderboard that actually updates Two users on different machines interacting with the same live data Getting image upload and display working end to end

What we learned

How Spring Security intercepts every request including static files, and how to configure it properly The difference between CORS configuration at the MVC layer vs the Security layer How FormData works for multipart file uploads in React How JPA handles entity relationships and why EnumType.STRING matters

What's next for ReuseU

Push notifications when someone claims your item University email verification to keep it campus-only Categories and condition filters backed by real data A map view showing where items can be picked up on campus Mobile app so students can post items on the go

Built With

Share this project:

Updates