MonoMart
MonoMart is a modern, single-vendor e-commerce backend application built with Spring Boot 3, PostgreSQL, and JWT authentication. It provides a complete RESTful API for managing products, categories, shopping carts, orders, and user authentication with role-based access control.

π Features
Core Functionality
- User Management: Registration, authentication, and role-based access (USER/ADMIN)
- Product Catalog: Full CRUD operations for products with category organization
- Category Management: Hierarchical product categorization
- Shopping Cart: Add, update, remove items with persistent cart functionality
- Order Processing: Create orders from cart, track order status
- JWT Authentication: Secure token-based authentication with refresh tokens
Technical Highlights
- Modern Stack: Spring Boot 3.3.2 with Java 17
- Database: PostgreSQL with Liquibase migrations
- Security: Spring Security with JWT tokens
- API Documentation: Swagger/OpenAPI integration
- Data Mapping: MapStruct for efficient DTO mappings
- Validation: Bean validation with custom validators
- CORS: Configurable cross-origin resource sharing
- Containerized: Docker and Docker Compose ready
ποΈ Architecture
βββ controller/ # REST API endpoints
βββ service/ # Business logic layer
βββ repository/ # Data access layer
βββ domain/ # Entity models
βββ dto/ # Data transfer objects
βββ security/ # JWT and authentication
βββ config/ # Application configuration
βββ exception/ # Global exception handling
π API Documentation
Swagger UI
Once the application is running, access the interactive API documentation:
- Swagger UI: http://localhost:8080/swagger-ui.html
- OpenAPI JSON: http://localhost:8080/api-docs
API Endpoints Overview
Authentication
POST /api/v1/auth/signup- User registrationPOST /api/v1/auth/login- User loginPOST /api/v1/auth/admin/login- Admin loginPOST /api/v1/auth/refresh- Refresh JWT token
Products
GET /api/v1/products- List products (paginated)GET /api/v1/products/{id}- Get product detailsPOST /api/v1/products- Create product (Admin only)PUT /api/v1/products/{id}- Update product (Admin only)DELETE /api/v1/products/{id}- Delete product (Admin only)
Categories
GET /api/v1/categories- List all categoriesGET /api/v1/categories/{id}- Get category detailsPOST /api/v1/categories- Create category (Admin only)PUT /api/v1/categories/{id}- Update category (Admin only)DELETE /api/v1/categories/{id}- Delete category (Admin only)
Shopping Cart
GET /api/v1/cart- Get userβs cartPOST /api/v1/cart/items- Add item to cartPUT /api/v1/cart/items/{id}- Update cart itemDELETE /api/v1/cart/items/{id}- Remove cart itemDELETE /api/v1/cart- Clear entire cart
Orders
GET /api/v1/orders- List all orders (Admin) or user ordersGET /api/v1/orders/{id}- Get order detailsPOST /api/v1/orders- Create order from cartPUT /api/v1/orders/{id}/status- Update order status (Admin only)
Sample API Usage
Register a new user
curl -X POST http://localhost:8080/api/v1/auth/signup \
-H "Content-Type: application/json" \
-d '{
"username": "john",
"email": "john@example.com",
"password": "Passw0rd!"
}'
Login and get JWT token
curl -X POST http://localhost:8080/api/v1/auth/login \
-H "Content-Type: application/json" \
-d '{
"usernameOrEmail": "john",
"password": "Passw0rd!"
}'
Access protected endpoints
curl -X GET http://localhost:8080/api/v1/cart \
-H "Authorization: Bearer YOUR_JWT_TOKEN"
MonoMart - Building the future of e-commerce, one API at a time! π