# Thanasoft Deployment Guide This guide explains how to build and deploy your Thanasoft application. ## Project Structure ``` /var/www/html/New-Thanasoft/ ├── README.md ├── thanasoft-back/ # Laravel Backend │ ├── app/ │ ├── routes/ │ ├── public/ │ │ ├── index.php # Laravel entry point │ │ └── build/ # Vue.js build output (auto-generated) │ └── ... └── thanasoft-front/ # Vue.js Frontend ├── src/ ├── public/ ├── vue.config.js # Build configuration └── package.json ``` ## Development Workflow ### Frontend Development 1. **Start the Vue dev server:** ```bash cd thanasoft-front npm run serve ``` - Frontend runs on: http://localhost:8080 - API calls to `/api/*` are proxied to Laravel backend 2. **Start the Laravel backend (in another terminal):** ```bash cd thanasoft-back php artisan serve ``` - Backend runs on: http://localhost:8000 ### Building for Production The Vue.js frontend is configured to build directly into `thanasoft-back/public/build/`: ```bash cd thanasoft-front npm run build ``` This will: - Build optimized production files - Output to `../thanasoft-back/public/build/` - Create `index.html`, `css/`, `js/`, `img/`, etc. ## Deployment to Server ### Option 1: Automated Deployment (Recommended) Use the deployment script: ```bash cd "/media/creator/6226b912-8ba7-45dc-88a2-4b10d3dd1655/kandra/Thanasoft v2" chmod +x deploy-to-server.sh ./deploy-to-server.sh ``` This script will: 1. Build the Vue.js frontend 2. Upload all files to the server 3. Set correct permissions 4. Clear and cache Laravel routes/config 5. Restart Apache ### Option 2: Manual Deployment #### Step 1: Build Frontend Locally ```bash cd thanasoft-front npm run build ``` #### Step 2: Upload to Server ```bash # Upload backend and frontend build rsync -avz --progress \ --exclude 'node_modules' \ --exclude 'vendor' \ --exclude '.git' \ thanasoft-back/ root@78.138.58.60:/var/www/html/New-Thanasoft/thanasoft-back/ ``` #### Step 3: Server Configuration SSH into your server: ```bash ssh root@78.138.58.60 cd /var/www/html/New-Thanasoft/thanasoft-back ``` Set permissions: ```bash chown -R www-data:www-data storage bootstrap/cache public/build chmod -R 775 storage bootstrap/cache ``` Clear and cache Laravel: ```bash php artisan route:clear php artisan cache:clear php artisan config:clear php artisan route:cache php artisan config:cache ``` Restart Apache: ```bash systemctl restart apache2 ``` ## How It Works ### Vue.js Configuration (`vue.config.js`) ```javascript outputDir: path.resolve(__dirname, '../thanasoft-back/public/build') publicPath: '/build/' ``` - Builds output to Laravel's `public/build/` directory - Assets are served from `/build/` path ### Laravel Configuration (`routes/web.php`) ```php Route::get('/{any}', function () { return file_get_contents(public_path('build/index.html')); })->where('any', '.*'); ``` - Catch-all route serves Vue.js SPA - API routes (`/api/*`) bypass this and go to Laravel controllers ### Apache Configuration ```apache DocumentRoot /var/www/html/New-Thanasoft/thanasoft-back/public ``` - Points to Laravel's `public/` directory - `.htaccess` handles routing ## URLs - **Production**: http://78.138.58.60/ - **API**: http://78.138.58.60/api/ - **API Endpoints**: - POST /api/auth/register - POST /api/auth/login - GET /api/auth/me (requires auth) - POST /api/auth/logout (requires auth) ## Troubleshooting ### Frontend shows 404 1. Check if build files exist: ```bash ls -la /var/www/html/New-Thanasoft/thanasoft-back/public/build/ ``` 2. Verify `routes/web.php` points to correct path: ```php public_path('build/index.html') // Correct ``` 3. Clear route cache: ```bash php artisan route:clear php artisan route:cache ``` ### API returns 404 1. Check Apache mod_rewrite is enabled: ```bash sudo a2enmod rewrite sudo systemctl restart apache2 ``` 2. Verify `.htaccess` exists in `public/` 3. Check Apache virtual host has `AllowOverride All` ### Permission errors ```bash cd /var/www/html/New-Thanasoft/thanasoft-back sudo chown -R www-data:www-data storage bootstrap/cache public/build sudo chmod -R 775 storage bootstrap/cache ``` ## Quick Deploy After making changes, just run: ```bash cd "/media/creator/6226b912-8ba7-45dc-88a2-4b10d3dd1655/kandra/Thanasoft v2" ./deploy-to-server.sh ``` That's it! 🚀