BBS E-Commerce is a highly scalable, fully functional, and production-ready full-stack e-commerce platform. Designed for modern web standards, it seamlessly connects individual customers with corporate sellers, providing a secure, real-time, and ultra-fast shopping experience.
🟢 Live Demo: https://bbs-ecommerce-psi.vercel.app
This project goes beyond a simple CRUD application. It was architected to solve real-world e-commerce challenges using enterprise-level design patterns:
The backend is strictly modularized into distinct business domains (Auth, User, Product, Order, Cart, Payment). This encapsulation ensures that business logic remains highly cohesive and loosely coupled, making the codebase maintainable and microservice-ready.
To ensure high availability and prevent blocking operations during high-traffic events (e.g., flash sales), Apache Kafka is used as a message broker:
- Low Stock Events: When a product's stock reaches critical levels, the
ProductServicepublishes aStockAlertEvent. - Asynchronous Notifications: A dedicated Kafka Consumer listens for these events and dispatches automated warning emails to the corporate seller and notification emails to users who favorited the item, all completely asynchronously.
- JWT (JSON Web Token) with Refresh Token Rotation: Implemented a stateless authentication mechanism. Tokens are securely transmitted.
- Cross-Domain Secure Cookies: Mitigated XSS and CSRF attacks by employing
HttpOnly,Secure=true, andSameSite=Nonecookie policies across decoupled domains (Vercel Frontend <-> Render Backend). - Role-Based Access Control (RBAC): Distinct endpoint protection for
ADMIN,CORPORATE, andCUSTOMERroles at both the API and UI routing levels. - BCrypt Hashing: Passwords are never stored in plain text.
Built with Angular 18, leveraging Standalone Components and the new Angular Signals API alongside RxJS. This provides highly reactive, fine-grained DOM updates without the overhead of heavy state management libraries like NgRx.
- Backend: Deployed via Docker containers on Render.
- Frontend: Deployed on Vercel's Edge Network for lightning-fast global CDN delivery.
- Database: Utilizing Neon.tech for serverless PostgreSQL, offering auto-scaling and zero-downtime database management.
- Messaging: Utilizing Aiven for fully managed Kafka clusters.
- Multi-Role Dashboards:
- Admin: Can oversee all transactions, manage users, and view platform-wide analytics.
- Corporate (Seller): Dedicated inventory management, order fulfillment tracking, and low-stock alerts.
- Customer: Product discovery, wishlists, cart management, and order history.
- Secure Payment Gateway: Fully integrated with Stripe API (Stripe Checkout) to handle credit card processing, webhook validation, and payment intents securely.
- Dynamic Cart & Checkout Workflow: Real-time cart calculation, automated stock reservation during checkout, and post-payment order generation.
- Advanced Search & Filtering: Product filtering by category, price range, and search terms.
- Responsive & Modern UI: Designed with Tailwind CSS for a pixel-perfect, mobile-first shopping experience.
- Core: Java 21, Spring Boot 3.3.1
- Data Persistence: Spring Data JPA, Hibernate, PostgreSQL (Neon)
- Message Broker: Apache Kafka (Aiven)
- Security: Spring Security 6, JWT, BCryptPasswordEncoder
- Payment Processing: Stripe Java SDK
- API Documentation: Swagger UI / Springdoc OpenAPI
- Framework: Angular 18 (Standalone Components, Signals)
- Styling: Tailwind CSS, PostCSS
- State Management & Async: RxJS, Signals, HttpClient
- UI UX: ngx-toastr (Notifications), custom responsive layouts
To run this project locally, follow these steps:
- JDK 21
- Node.js (v18+) and npm
- PostgreSQL (Local or Cloud)
- Apache Kafka (Zookeeper/Kraft)
- Navigate to the backend directory:
cd Back/BBS. - Locate
src/main/resources/application.yml.exampleand rename it toapplication.yml. - Provide your local PostgreSQL credentials, Kafka bootstrap servers, Stripe Secret Key, and JWT Secret.
- Run the application using the Maven wrapper:
./mvnw spring-boot:run
- The API will start on
http://localhost:8080. You can explore the endpoints via Swagger UI athttp://localhost:8080/swagger-ui.html.
- Navigate to the frontend directory:
cd Front. - Install all dependencies:
npm install
- (Optional) Ensure
src/environments/environment.tspoints to your local backend (http://localhost:8080/api). - Start the development server:
npm start
- Access the web interface at
http://localhost:4200.
.gitignore to prevent sensitive files (like application.yml and .env) from being uploaded. Always use the .example files as templates and keep your Stripe API keys, JWT secrets, and database passwords strictly on your local machine or in secure cloud environment variables.