git clone <repository>
cd caderno
cp .env.example .env
Edit .env with your settings:
DB_HOST=db
DB_NAME=caderno
DB_USER=root
DB_PASS=your_secure_password
APP_ENV=development
APP_DEBUG=true
docker-compose up -d
This will:
/var/www/html# Access the database
docker-compose exec db mysql -u root -p caderno
# Run SQL migrations (if any in database/migrations/)
# or use existing schema
# Check health endpoint
curl http://localhost/health
# Login with test account
# URL: http://localhost/login
# CPF: 123
# Senha: 123
caderno/
├── app/ # Source code
├── config/ # Configuration
├── public/ # Web root
├── resources/views/ # Templates
├── tests/ # Test suite
├── vendor/ # Auto-generated dependencies
├── .env # Environment variables
├── docker-compose.yml
├── Dockerfile
└── README.md
The project follows PSR-12 standards:
# Check code style (if you have phpcs installed)
phpcs --standard=PSR12 app/
# Run all tests
php vendor/bin/phpunit
# Run specific test file
php vendor/bin/phpunit tests/Unit/AuthServiceTest.php
# Run with coverage
php vendor/bin/phpunit --coverage-html coverage/
In .env:
APP_ENV=development
APP_DEBUG=true
# View error logs
docker-compose exec app tail -f /var/log/caderno/app.log
# View Apache logs
docker-compose logs -f app
# Access MySQL directly
docker-compose exec db mysql -u root -p caderno
# View database queries (slow query log)
docker-compose exec db tail -f /var/log/mysql/slow.log
# Copy environment template
cp .env.example .env
# Update with production values
nano .env
APP_ENV=production
APP_DEBUG=false
DB_HOST=production-db-host
DB_NAME=caderno
DB_USER=secure_user
DB_PASS=very_secure_password
LOG_PATH=/var/log/caderno/app.log
TIMEZONE=America/Sao_Paulo
# Build production image
docker build -t caderno:latest .
# Or use docker-compose
docker-compose -f docker-compose.prod.yml up -d
# Run any pending migrations
docker-compose exec app php -r "require 'database/migrations/init.php';"
# Ensure proper permissions
docker-compose exec app chown -R www-data:www-data /var/log/caderno
curl https://yourdomain.com/health
The application uses existing tables:
usuario - System userslocalidade - Locationsmovimentacao - Movement recordsmovimentacao_itens - Movement itemsequipamento - Equipment registry# Export database
docker-compose exec db mysqldump -u root -p caderno > backup.sql
# Import database
docker-compose exec db mysql -u root -p caderno < backup.sql
# Daily backup script
docker-compose exec db mysqldump -u root -p caderno | gzip > db_backup_$(date +%Y%m%d).sql.gz
# Monitor application logs
docker-compose logs -f app
# Check for security updates
docker-compose exec app composer update
# Change port in docker-compose.yml
ports:
- "8080:80" # Use 8080 instead of 80
# Verify database is running
docker-compose exec db mysqladmin ping
# Check connection parameters in .env
# Fix file permissions
docker-compose exec app chown -R www-data:www-data /var/www/html
docker-compose exec app chmod -R 755 /var/www/html
# Clear session files
docker-compose exec app rm -rf /var/lib/php/sessions/*
# Use certbot container
docker-compose exec app certbot certonly --webroot -w /var/www/html -d yourdomain.com
# Update Apache config with SSL
nano /etc/apache2/sites-available/default-ssl.conf
-- Add indexes for better query performance
CREATE INDEX idx_patrimonio ON movimentacao_itens(patrimonio);
CREATE INDEX idx_data_entrada ON movimentacao_itens(data_entrada);
CREATE INDEX idx_usuario ON movimentacao(usuario);
// Can add Redis for session caching
// Implement in future versions
docs/API.mddocs/ARCHITECTURE.mdtests/Unit/# Start services
docker-compose up -d
# Stop services
docker-compose down
# View logs
docker-compose logs -f
# Execute command in container
docker-compose exec app php script.php
# Rebuild container
docker-compose build --no-cache
# Access application
http://localhost/
# Access database
docker-compose exec db mysql -u root -p caderno
When reporting issues, include:
/var/log/caderno/app.log