# MerchBay A custom merchandise and apparel design platform built with Laravel 5.0, enabling users to create, customize, and order personalized products. ## 🚀 Tech Stack - **Framework:** Laravel 5.0 - **PHP:** 7.0 with native mcrypt support - **Web Server:** Apache 2.4 - **Database:** MySQL - **Container:** Docker with Apache - **Reverse Proxy:** Traefik (for SSL/TLS and routing) ## 📋 Prerequisites - Docker and Docker Compose - Git - Access to deployment server (for production/dev deployments) ## 🛠️ Local Development ### Building the Docker Image ```bash docker build -t merchbay:dev . ``` ### Running Locally ```bash # Create .env file from example cp .env.example .env # Update .env with your local configuration # Set database credentials, mail settings, etc. # Run with docker-compose (customize docker-compose.yml for local setup) docker-compose up -d ``` ### Environment Variables The following environment variables are required: #### Database Configuration - `DB_HOST` - Database host - `DB_PORT` - Database port (default: 3306) - `DB_DATABASE` - Database name - `DB_USERNAME` - Database username - `DB_PASSWORD` - Database password #### Application URLs - `APP_URL` - Application base URL - `PROD_PRIVATE` - Production private server URL - `IMAGES_URL` - Images server URL - `UPLOAD_URL` - Upload directory URL #### Mail Configuration - `MAIL_DRIVER` - Mail driver (smtp) - `MAIL_HOST` - SMTP host - `MAIL_PORT` - SMTP port - `MAIL_USERNAME` - SMTP username - `MAIL_PASSWORD` - SMTP password - `MAIL_ENCRYPTION` - Encryption type (tls/ssl) #### Third-Party Services - `CAPTCHA_SITE_KEY` - reCAPTCHA site key - `CAPTCHA_SECRET_KEY` - reCAPTCHA secret key - `ANALYTICS_SITE_ID` - Google Analytics site ID - `ANALYTICS_CLIENT_ID` - Google Analytics client ID - `ANALYTICS_SERVICE_EMAIL` - Google Analytics service email ## 🚢 Deployment ### Automated CI/CD with Gitea Actions This project includes automated deployment workflows using Gitea Actions: #### Development Deployment Push to the `dev` branch to automatically deploy to dev environment: ```bash git push origin dev ``` - Deploys to: `https://dev.merchbay.app` #### Production Deployment Push to the `main` or `master` branch to automatically deploy to production: ```bash git push origin main ``` - Deploys to: `https://merchbay.app` #### Docker Registry Create version tags to build and push to Docker registry: ```bash git tag -a v1.0.0 -m "Release v1.0.0" git push origin v1.0.0 ``` ### Workflow Files - `.gitea/workflows/deploy-dev.yml` - Development deployment - `.gitea/workflows/deploy.yml` - Production deployment - `.gitea/workflows/build-push.yml` - Docker image build and push ## 📁 Project Structure ``` merchbay/ ├── app/ # Application core │ ├── Http/ # Controllers, middleware, routes │ ├── Models/ # Database models │ └── Services/ # Business logic services ├── config/ # Configuration files ├── database/ # Migrations and seeds ├── public/ # Public assets (images, CSS, JS) ├── resources/ # Views and frontend assets ├── storage/ # Application storage ├── docker-compose.yml # Docker compose configuration ├── Dockerfile # Docker image definition └── docker-entrypoint.sh # Container startup script ``` ## 🔧 Development Notes ### Storage Permissions The Docker entrypoint automatically creates and sets proper permissions for: - `storage/framework/views` - `storage/framework/cache` - `storage/framework/sessions` - `storage/logs` - `bootstrap/cache` ### PHP Extensions The following PHP extensions are installed: - pdo_mysql - mbstring - exif - pcntl - bcmath - mcrypt (native in PHP 7.0) - tokenizer - zip - gd (with freetype and jpeg support) ## 🐛 Troubleshooting ### 500 Internal Server Error 1. Check container logs: `docker logs merchbay_app` 2. Verify storage permissions are set correctly 3. Ensure all environment variables are configured in `.env` 4. Check database connectivity ### Storage Permission Issues The entrypoint script automatically fixes permissions on container start. If issues persist: ```bash docker exec merchbay_app chown -R www-data:www-data storage bootstrap/cache docker exec merchbay_app chmod -R 775 storage bootstrap/cache ``` ## 📄 License Proprietary - All rights reserved ## 🤝 Support For support and questions, contact the development team.