E-commerce
Cranvas
A multi-role marketplace where admins, sellers, customers and delivery agents each get their own view of the same storefront.

Year
2023
Role
Full-stack Developer
Client
School project
Stack
React, Spring Boot, MySQL
Coursework project, no public deployment.
01
The problem
Most shop demos pretend there's only one seller and one buyer. Real marketplaces aren't like that. I wanted to build something closer to how it actually works: many sellers, many roles, one storefront.
02
What I built
A web app with four logins, each with its own dashboard and rules. Sellers list products and track orders, customers shop and review, admins keep the place clean, and delivery agents close the loop. One app, four perspectives.
What four roles needed
Four roles, one schema
A single user table with a role column drives every dashboard, so adding a permission never means forking the data model.
Order state as the source of truth
One order record moves through fixed stages, placed, packed, out for delivery, received, and every role's dashboard just reads a different slice of that same state.
Role checks on the backend, not just the UI
Spring Boot checks role on every request, so a customer can't reach the seller dashboard just by guessing a URL.
React runs the frontend, Spring Boot handles the backend and role logic, and MySQL stores products, orders and reviews.
03
What I learned
The fun part wasn't the buttons or the forms. It was deciding where each role's world ends and the next begins. I'd handle images differently next time. And honestly, the small setup work (ports, configs, logins) ate more hours than the actual features. Nobody warns you about that.
