Skip to content
Sourav ChandhokAll projects →

JAVA / CLOUD & SECURITY

YU Bazaar

A modernized Java campus marketplace for York University students featuring Spring Security, OTP verification, RabbitMQ asynchronous messaging, and Kubernetes containerization.

Java 17Spring SecurityPostgreSQLKubernetes

Live demos may take a moment to wake up. Case studies and screenshots remain available here.

YU Bazaar application screenshot
YU Bazaar · Campus marketplace

The problem

A campus marketplace needs more than listings. People need to understand who is selling, recover access to their accounts, upload photographs, and contact sellers without exposing internal credentials or giving other users control over their listings.

Team origins, individual contribution

The original application was a four-person York University course project. My original contributions included registration and recovery email notifications, password recovery, York email OTP verification, item search and live suggestions, and listing/homepage workflow fixes.

I then maintained an independent portfolio edition, adding production infrastructure, security improvements, cloud media storage, verification tiers, a protected demo, automated tests, and deployment work. The original team repository and contributor credit remain distinct from these later improvements.

A complete marketplace journey

Visitors can browse public listings. Sellers register and verify an email address; York email verification adds a York Verified Student badge. Listing ownership determines who can change or delete an item.

Reviewers can choose the read-only demo from the sign-in screen. Buyers use controlled email inquiries to contact sellers; payments and exchanges happen outside the application.

Architecture

  • Java 17 + Spring Boot + Thymeleaf: service for server-rendered pages and application workflows.
  • Spring Security: sessions, route protection, BCrypt password hashing, OTP verification, ownership policies, and demo restrictions.
  • RabbitMQ: asynchronous message queue for email verification, password resets, and user notifications.
  • Kubernetes & Docker: containerized deployment orchestrating marketplace services with high reliability.
  • PostgreSQL + Flyway: persistent accounts/listings and versioned database migrations.
  • Cloudflare R2 & AWS SDK: photograph storage with delivery through application-controlled routes.
  • GitHub Actions CI/CD: automated Maven build and test suite running on every commit.

Making the course project durable

Moving beyond local development meant addressing data and image persistence, expiring verification and recovery credentials, owner-only mutations, and safe reviewer access.

The verification model also needed precise language: a Public Seller is not necessarily a York student, while the York badge indicates verified institutional email ownership.

Result and scope

The portfolio edition is a deployed marketplace with public browsing, persistent listings and photographs, account recovery, verification tiers, and a read-only reviewer path. The repository includes automated coverage of authentication, ownership, recovery, and media behavior.

This is a portfolio MVP. Payments, escrow, delivery, and real-time chat are outside its scope. The hosted application may take time to wake after inactivity.

What the project taught me

Production readiness often lives in the less visible paths: recovery, retries, persistence, ownership, and test coverage. Improving an existing team project also requires clear attribution and careful preservation of its original work.

LET'S CONNECT

Have an opportunity in mind?

I'm seeking full-time Java backend, full-stack, and AI application development opportunities across Canada.