Stella is a full-featured, RESTful e-commerce backend built with Spring Boot 3. It provides a complete platform for buyers and sellers: user registration with email verification, JWT-based stateless authentication, product management with multi-image file uploads, a multi-cart shopping system, Razorpay-integrated order and payment processing, seller dashboards with order status management, and a product review and rating system.
| Layer | Technology |
|---|---|
| Language | Java 17 |
| Framework | Spring Boot 3.3.1 |
| Security | Spring Security 6 + JWT (jjwt 0.12.5) |
| ORM | Spring Data JPA (Hibernate) |
| Database | MariaDB |
| Payments | Razorpay Java SDK 1.4.6 |
| Spring Mail (SMTP / Gmail) | |
| File I/O | Apache Commons IO 2.16.1 |
| Build | Maven (spring-boot-maven-plugin) |
| Utilities | Lombok, Spring Boot Actuator, Spring Boot DevTools |
- Java 17 or higher
- Maven 3.8+
- MariaDB (or compatible MySQL) running locally on port
3306 - A Gmail account with an App Password configured for outbound email
- A Razorpay test account for payment processing
git clone https://github.com/kumawat-aditya/stella.git
cd stellaCREATE DATABASE ecommerce;
CREATE USER 'ecommerce'@'localhost' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON ecommerce.* TO 'ecommerce'@'localhost';
FLUSH PRIVILEGES;Edit src/main/resources/application.properties with your credentials. See the Environment Variables table below for all required keys.
./mvnw spring-boot:runThe API will be available at http://localhost:8080.
All configuration lives in src/main/resources/application.properties. Never commit real credentials.
| Key | Description |
|---|---|
spring.datasource.url |
JDBC URL for MariaDB (e.g., jdbc:mariadb://localhost:3306/ecommerce) |
spring.datasource.username |
Database user |
spring.datasource.password |
Database password |
spring.mail.host |
SMTP host (e.g., smtp.gmail.com) |
spring.mail.port |
SMTP port (e.g., 587) |
spring.mail.username |
Sender Gmail address |
spring.mail.password |
Gmail App Password (16 characters) |
spring.mail.properties.mail.smtp.auth |
Enable SMTP auth (true) |
spring.mail.properties.mail.smtp.starttls.enable |
Enable TLS (true) |
spring.servlet.multipart.max-file-size |
Max single file upload size (e.g., 10MB) |
spring.servlet.multipart.max-request-size |
Max total multipart request size (e.g., 10MB) |
razorpay.key.id |
Razorpay API Key ID |
razorpay.secret.key |
Razorpay API Secret Key |
Stella/
├── pom.xml
├── README.md
├── docs/
│ ├── ARCHITECTURE.md # System design, ERD, and data flow
│ ├── API_REFERENCE.md # All REST endpoints with payloads
│ └── BACKEND_FLOW.md # Request lifecycle and internal execution paths
└── src/
└── main/
├── java/com/nothing/stella/
│ ├── StellaApplication.java # Spring Boot entry point
│ ├── controller/ # REST controllers (request routing)
│ ├── entity/ # JPA entities (database tables)
│ ├── model/ # DTOs (request/response payloads)
│ ├── repository/ # Spring Data JPA repositories
│ ├── services/ # Business logic (interfaces + impls)
│ ├── security/ # JWT filter, entry point, UserDetailsService
│ ├── exception/ # Custom exception classes
│ ├── exceptionHandler/ # Global @ControllerAdvice handler
│ ├── errorResponse/ # Structured error response models
│ └── miscellaneous/ # Input validators, email templates
└── resources/
├── application.properties
└── static/
├── products/ # Uploaded product images ({userId}/{name}/)
└── storeLogos/ # Uploaded seller logos ({userId}/)
| Document | Description |
|---|---|
| docs/ARCHITECTURE.md | System design, architecture diagrams, ERD, and key design patterns |
| docs/API_REFERENCE.md | Full REST API reference with all endpoints and request/response payloads |
| docs/BACKEND_FLOW.md | Internal request lifecycle, execution flow diagrams, error handling strategy |
Aditya Kumawat Email: kumawataditya105@gmail.com LinkedIn: Aditya Kumawat GitHub: kumawat-aditya