mirror of
https://github.com/dredx/prole.git
synced 2026-09-23 12:03:59 +00:00
| .. | ||
| images | ||
| src/main | ||
| index.html | ||
| installer.html | ||
| pom.xml | ||
| README.md | ||
Prole Shop - Spring WebMVC Shopping Application
A comprehensive Spring Boot shopping application that supports both product sales and service bookings with calendar scheduling.
Features
- Product Catalog: Browse and purchase physical products
- Service Booking: Book professional services with calendar scheduling
- Shopping Cart: Session-based shopping cart for products and services
- Checkout Process: Complete order processing with customer information
- Shipping Estimation: Automatic shipping cost calculation based on weight and order value
- Calendar Integration: View and book available time slots for services
- Order Management: Track orders with status and payment information
Technology Stack
- Spring Boot 3.1.0: Main framework
- Spring WebMVC: Web layer
- Spring Data JPA: Data access layer
- Thymeleaf: Template engine
- PostgreSQL: Database (prole-db service)
- Bootstrap 5: UI framework
Database Configuration
The application connects to the prole-db PostgreSQL database service defined in cloudnative-pg-prole0-db.yaml.
Connection details:
- Host: prole-db-rw
- Port: 5432
- Database: prole-db
- User: prole
- Password: Fr0b0zzg0bl!n!
Project Structure
www/
├── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── org/prole/shop/
│ │ │ ├── ShopApplication.java
│ │ │ ├── controller/ # MVC Controllers
│ │ │ ├── model/ # JPA Entities
│ │ │ ├── repository/ # Data Repositories
│ │ │ └── service/ # Business Logic
│ │ └── resources/
│ │ ├── application.properties
│ │ ├── schema.sql # Database schema
│ │ ├── data.sql # Sample data
│ │ ├── templates/ # Thymeleaf templates
│ │ └── static/ # Static resources
│ └── test/
└── pom.xml
Running the Application
- Ensure the
prole-dbdatabase service is running and accessible - Build the project:
cd www mvn clean install - Run the application:
mvn spring-boot:run - Access the application at: http://localhost:8080
Application Endpoints
/- Home page with featured products and services/products- List all products/products/{id}- Product detail page/services- List all services/services/{id}- Service detail page with calendar booking/cart- Shopping cart view/checkout- Checkout form/checkout/success- Order confirmation
Database Schema
The application uses the following main entities:
- Product: Physical products for sale
- Service: Professional services available for booking
- ScheduleSlot: Available time slots for services
- CartItem: Items in the shopping cart (session-based)
- Order: Customer orders
- OrderItem: Items within an order
Payment Processing
Payment processing is currently a placeholder. The OrderService.processPayment() method simulates payment processing. Integration with an external payment processor (Stripe, PayPal, etc.) should be implemented in this method.
Shipping Calculation
Shipping costs are calculated based on:
- Base shipping cost: $10.00
- Cost per kg: $2.00
- Free shipping threshold: $100.00
These values can be configured in ShippingService.java.
Sample Data
The application includes sample data for development/testing:
- 6 sample products
- 6 sample services
- Sample schedule slots for services
Development Notes
- The application uses session-based cart management
- Database schema is auto-created on startup (spring.jpa.hibernate.ddl-auto=update)
- Sample data is loaded from
data.sqlon startup - Thymeleaf templates use Bootstrap 5 for styling
Future Enhancements
- User authentication and accounts
- Order history and tracking
- Email notifications
- Payment processor integration (Stripe, PayPal, etc.)
- Advanced calendar features (recurring appointments, availability management)
- Product reviews and ratings
- Inventory management
- Admin dashboard