prole/www
2025-12-01 14:52:18 -08:00
..
images WIP: k3s remote setup and graphical installer 2025-11-16 21:48:31 -08:00
src/main begin shop.prole.org 2025-11-19 20:40:38 -08:00
index.html WIP: k3s remote setup and graphical installer 2025-11-16 21:48:31 -08:00
installer.html prole.installer wip 2025-12-01 14:52:18 -08:00
pom.xml begin shop.prole.org 2025-11-19 20:40:38 -08:00
README.md begin shop.prole.org 2025-11-19 20:40:38 -08:00

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

  1. Ensure the prole-db database service is running and accessible
  2. Build the project:
    cd www
    mvn clean install
    
  3. Run the application:
    mvn spring-boot:run
    
  4. 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.sql on 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