# Upload pe server nou

## Curățare locală (înainte de copiere)

```bash
./scripts/clean-for-server-upload.sh
```

## Ce **nu** trebuie încărcat pe server

| Element | Motiv |
|---------|--------|
| `.env` (local) | Creați `.env` nou pe server cu datele producției |
| `node_modules/` | Nu e necesar dacă CSS/JS sunt deja în `public/` |
| `tests/`, `phpunit.xml` | Doar dezvoltare |
| `.git/`, `.cursor/`, `.vscode/` | Doar dezvoltare |
| `deploy/keys/`, `deploy/deploy.conf` | Chei SSH locale |
| `deploy/backups/` | Backup-uri locale |
| `storage/logs/*.log` | Se regenerează |
| `storage/framework/views/*` | Cache compilat Blade |
| `scripts/archive/` | Scripturi one-off de migrare |

Folosiți `./deploy.sh` — exclude automat acestea (`deploy/rsync-excludes.txt`).

## Ce **trebuie** pe server

- Cod: `app/`, `bootstrap/`, `config/`, `database/`, `lang/`, `Modules/`, `public/`, `resources/`, `routes/`, `stubs/`, `artisan`, `composer.json`, `composer.lock`
- `vendor/` — fie încărcat după `composer install --no-dev`, fie generat pe server
- `public/uploads/` — fișiere utilizatori (imagini anunțuri etc.)
- `.env` — configurat pe server (nu copiați din dev)
- `storage/` — structura de foldere (goale la cache/logs e OK)

## Pași pe server nou

1. PHP 8.1+ cu extensii Laravel (mbstring, openssl, pdo_mysql, tokenizer, xml, ctype, json, bcmath, fileinfo, gd sau imagick)
2. Copiere fișiere (FTP, rsync sau `./deploy.sh`)
3. `composer install --no-dev --optimize-autoloader --no-interaction`
4. `cp .env.example .env` → editați DB, APP_URL, APP_KEY (`php artisan key:generate`)
5. `php artisan migrate --force`
6. `php artisan storage:link`
7. `chmod -R ug+rwx storage bootstrap/cache`
8. `php artisan config:cache && php artisan route:cache && php artisan view:cache`
9. Cron: `* * * * * php /cale/catre/artisan schedule:run`

## Dimensiune tipică

După curățare, fără `node_modules` și fără loguri: ~150–200 MB (în mare parte `vendor/` + `public/uploads/`).
