Stacked Deck API is the robust and secure backend for the Stacked Deck e-commerce platform, specialized in Pokémon TCG sales.
Built with Spring Boot, this API manages the entire sales lifecycle: from precise inventory management (card condition, rarity) to secure payments via Stripe, including a complete support ticket system for users.
- Advanced Product Management: Support for variants (Condition: Mint, Played, Language, Rarity).
- Public Navigation: Dedicated controllers for public catalog display (
PublicController). - Inventory Tracking: Precise tracking of stock entries/exits via
InventoryMovement.
- Complete Purchase Flow: Cart management (
Cart), order validation (Checkout), and shipping (Shipping). - Secure Payment: Full integration with Stripe, including Webhook handling for real-time status updates.
- Promotions Engine: Promo code system and dynamic pricing logic.
- Strong Authentication: System based on JWT (JSON Web Tokens) with Refresh Token management.
- Account Management: Registration, email verification, password reset, and profile management.
- Role-Based Access: Strict separation between Client and Administrator access.
- Ticketing System: Integrated support ticket system (
Support/Ticket) to handle user inquiries. - Admin Dashboard: Sales statistics and activity overview via
AdminDashboardController.
The project follows a clear package-by-feature architecture:
com.stackeddeck
├── admin/ # Administration (Dashboard, Orders & Catalog Management)
├── auth/ # Authentication (Login, Register, Refresh Token)
├── catalog/ # Product Logic (Categories, Inventory, Enums: Rarity/Condition)
├── checkout/ # Purchase Flow (Cart, Order, Shipping)
├── common/ # Global Utilities (Global Exception Handler)
├── config/ # Configuration (CORS, Swagger, Jackson)
├── notifications/ # Notification System
├── payment/ # Stripe Integration & Webhooks
├── pricing/ # Pricing Logic & Promotions
├── security/ # Spring Security Config & JWT Filters
├── support/ # Customer Service (Tickets)
└── user/ # User Profile Management
- Core: Java 17+, Spring Boot 3.x
- Data: Spring Data JPA, Hibernate, MySQL/PostgreSQL
- Security: Spring Security 6, JJWT (Java JWT)
- Payment: Stripe API
- Documentation: Swagger / OpenAPI (via
SwaggerConfig) - Build: Maven
-
Clone the repository:
git clone [https://github.com/0xAdafang/Stacked_Deck_Api.git](https://github.com/0xAdafang/Stacked_Deck_Api.git)
-
Configuration: Update
src/main/resources/application.propertieswith your environment variables (Database, Stripe Keys, JWT Secret). -
Run the application:
./mvnw spring-boot:run
Once the application is running, the interactive Swagger UI documentation is available at:
http://localhost:8080/swagger-ui.html
| Module | Base Endpoint | Description |
|---|---|---|
| Auth | /api/auth |
Login, Register, Refresh Token |
| Public | /api/public |
Read-only access to catalog |
| Cart | /api/cart |
Current cart management |
| Checkout | /api/checkout |
Order validation |
| Payment | /api/payment |
Stripe payment initialization |
| Admin | /api/admin |
Restricted operations (Product CRUD, Stats) |
| Support | /api/support |
Ticket creation and tracking |
Ensure you define the following properties for the application to run correctly (especially for Stripe and JWT):
# Database
spring.datasource.url=...
spring.datasource.username=...
# JWT Configuration
application.security.jwt.secret-key=...
application.security.jwt.expiration=...
# Stripe
stripe.api.key=...
stripe.webhook.secret=...
Developed by 0xAdafang