## Product Variations System - Add ProductVariation model with quantity-based pricing (1 for £10, 2 for £19, 3 for £25) - Complete CRUD operations for product variations - Enhanced ProductService to include variations in all queries - Updated OrderItem to support ProductVariationId for variation-based orders - Graceful error handling for duplicate quantity constraints - Admin interface with variations management (Create/Edit/Delete) - API endpoints for programmatic variation management ## Enhanced Order Workflow Management - Redesigned OrderStatus enum with clear workflow states (Accept → Packing → Dispatched → Delivered) - Added workflow tracking fields (AcceptedAt, PackingStartedAt, DispatchedAt, ExpectedDeliveryDate) - User tracking for accountability (AcceptedByUser, PackedByUser, DispatchedByUser) - Automatic delivery date calculation (dispatch date + working days, skips weekends) - On Hold workflow for problem resolution with reason tracking - Tab-based orders interface focused on workflow stages - One-click workflow actions from list view ## Mobile-Responsive Design - Responsive orders interface: tables on desktop, cards on mobile - Touch-friendly buttons and spacing for mobile users - Horizontal scrolling tabs with condensed labels on mobile - Color-coded status borders for quick visual recognition - Smart text switching based on screen size ## Product Import/Export System - CSV import with product variations support - Template download with examples - Export existing products to CSV - Detailed import results with success/error reporting - Category name resolution (no need for GUIDs) - Photo URLs import support ## Enhanced Dashboard - Product variations count and metrics - Stock alerts (low stock/out of stock warnings) - Order workflow breakdown (pending, accepted, dispatched counts) - Enhanced layout with more detailed information ## Technical Improvements - Fixed form binding issues across all admin forms - Removed external CDN dependencies for isolated deployment - Bot Wizard form with auto-personality assignment - Proper authentication scheme configuration (Cookie + JWT) - Enhanced debug logging for troubleshooting ## Self-Contained Deployment - All external CDN references replaced with local libraries - Ready for air-gapped/isolated network deployment - No external internet dependencies 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
160 lines
4.5 KiB
Markdown
160 lines
4.5 KiB
Markdown
# LittleShop Hostinger Deployment Guide
|
|
|
|
## Overview
|
|
This guide covers deploying the LittleShop web application to your Hostinger VPS server that already has BTCPay Server running.
|
|
|
|
## Server Information
|
|
- **Host**: srv1002428.hstgr.cloud / thebankofdebbie.giize.com
|
|
- **IP**: 31.97.57.205
|
|
- **SSH Port**: 2255
|
|
- **User**: sysadmin
|
|
- **BTCPay Server**: Already running at https://thebankofdebbie.giize.com
|
|
|
|
## Prerequisites
|
|
1. SSH access to the Hostinger server
|
|
2. Docker and Docker Compose installed (already available)
|
|
3. SSH key for authentication (vps_hardening_key)
|
|
|
|
## Deployment Files Created
|
|
- `hostinger-docker-compose.yml` - Docker Compose configuration for Hostinger
|
|
- `.env.hostinger` - Environment variables template
|
|
- `nginx.conf` - Reverse proxy configuration
|
|
- `deploy-to-hostinger.sh` - Automated deployment script
|
|
- `HOSTINGER_DEPLOYMENT.md` - This documentation
|
|
|
|
## Quick Deployment
|
|
|
|
### Automatic Deployment
|
|
```bash
|
|
# Run the automated deployment script
|
|
./deploy-to-hostinger.sh
|
|
```
|
|
|
|
### Manual Deployment
|
|
If you prefer manual control:
|
|
|
|
```bash
|
|
# 1. Copy files to server
|
|
scp -i ./Hostinger/vps_hardening_key -P 2255 -r LittleShop/ sysadmin@31.97.57.205:/opt/littleshop/
|
|
scp -i ./Hostinger/vps_hardening_key -P 2255 hostinger-docker-compose.yml sysadmin@31.97.57.205:/opt/littleshop/docker-compose.yml
|
|
|
|
# 2. SSH to server
|
|
ssh -i ./Hostinger/vps_hardening_key -p 2255 sysadmin@31.97.57.205
|
|
|
|
# 3. Deploy on server
|
|
cd /opt/littleshop
|
|
docker-compose build
|
|
docker-compose up -d
|
|
```
|
|
|
|
## Configuration
|
|
|
|
### Environment Variables
|
|
Copy `.env.hostinger` to `.env` and update:
|
|
|
|
```bash
|
|
# BTCPay Server integration (already running on same server)
|
|
BTCPAY_SERVER_URL=https://thebankofdebbie.giize.com
|
|
BTCPAY_STORE_ID=your_store_id_from_btcpay
|
|
BTCPAY_API_KEY=your_api_key_from_btcpay
|
|
BTCPAY_WEBHOOK_SECRET=your_webhook_secret
|
|
|
|
# Security
|
|
JWT_SECRET_KEY=generate_a_strong_32_character_secret_key
|
|
```
|
|
|
|
### Port Configuration
|
|
- **Application**: Runs on internal port 5000
|
|
- **External Access**: Port 8081 (to avoid conflict with BTCPay on 80/443)
|
|
- **Nginx Proxy**: Available for custom domain setup
|
|
|
|
## DNS Configuration
|
|
To use a custom domain:
|
|
|
|
1. Point your domain to the server IP: `31.97.57.205`
|
|
2. Update the domain in `nginx.conf` or docker-compose labels
|
|
3. Consider using a subdomain like `shop.thebankofdebbie.giize.com`
|
|
|
|
## SSL/HTTPS Setup
|
|
The configuration is ready for SSL with Let's Encrypt:
|
|
|
|
1. Install Certbot on the server
|
|
2. Generate certificates for your domain
|
|
3. Update nginx.conf with certificate paths
|
|
4. Restart the nginx container
|
|
|
|
## BTCPay Server Integration
|
|
Your LittleShop will integrate with the existing BTCPay Server:
|
|
|
|
1. Log into BTCPay at https://thebankofdebbie.giize.com
|
|
2. Create a store for LittleShop
|
|
3. Generate API keys
|
|
4. Configure webhooks pointing to your LittleShop instance
|
|
5. Update the environment variables
|
|
|
|
## Monitoring and Maintenance
|
|
|
|
### Check Application Status
|
|
```bash
|
|
# SSH to server
|
|
ssh -i ./Hostinger/vps_hardening_key -p 2255 sysadmin@31.97.57.205
|
|
|
|
# Check containers
|
|
docker-compose ps
|
|
|
|
# View logs
|
|
docker-compose logs littleshop
|
|
|
|
# Check application health
|
|
curl http://localhost:8081/api/test
|
|
```
|
|
|
|
### Container Management
|
|
```bash
|
|
# Update application
|
|
docker-compose pull
|
|
docker-compose build
|
|
docker-compose up -d
|
|
|
|
# Restart application
|
|
docker-compose restart littleshop
|
|
|
|
# View resource usage
|
|
docker stats
|
|
```
|
|
|
|
## Security Considerations
|
|
- Application runs in isolated Docker containers
|
|
- Firewall is already configured on the server
|
|
- Use HTTPS for production (configure SSL certificates)
|
|
- Regularly update container images for security patches
|
|
|
|
## Troubleshooting
|
|
|
|
### Common Issues
|
|
1. **Port conflicts**: Ensure port 8081 is available
|
|
2. **DNS issues**: Check domain configuration
|
|
3. **SSL problems**: Verify certificate paths and permissions
|
|
4. **BTCPay connection**: Ensure correct API keys and URLs
|
|
|
|
### Log Locations
|
|
- Application logs: `docker-compose logs littleshop`
|
|
- Nginx logs: `docker-compose logs nginx`
|
|
- Server logs: `/var/log/syslog`
|
|
|
|
## Backup Strategy
|
|
1. **Database**: Backup SQLite database file regularly
|
|
2. **Uploads**: Backup product images and uploads
|
|
3. **Configuration**: Keep copies of .env and docker-compose files
|
|
4. **Docker volumes**: Use docker volume backup tools
|
|
|
|
## Performance Optimization
|
|
- The server has 16GB RAM and should handle LittleShop easily
|
|
- Monitor disk usage as BTCPay Server also uses storage
|
|
- Consider setting up log rotation
|
|
- Use nginx caching for static assets
|
|
|
|
## Support
|
|
- Check the main LittleShop documentation
|
|
- Review Hostinger server status in `Infrastructure.txt`
|
|
- BTCPay Server documentation for payment integration |