Major Features: - Add project costs feature with full CRUD operations - Implement toast notification system for better user feedback - Enhance analytics dashboard with improved visualizations - Add OIDC authentication improvements and debug tools Improvements: - Enhance reports with new filtering and export capabilities - Update command palette with additional shortcuts - Improve mobile responsiveness across all pages - Refactor UI components for consistency Removals: - Remove license server integration and related dependencies - Clean up unused license-related templates and utilities Technical Changes: - Add new migration 018 for project_costs table - Update models: Project, Settings, User with new relationships - Refactor routes: admin, analytics, auth, invoices, projects, reports - Update static assets: CSS improvements, new JS modules - Enhance templates: analytics, admin, projects, reports Documentation: - Add comprehensive documentation for project costs feature - Document toast notification system with visual guides - Update README with new feature descriptions - Add migration instructions and quick start guides - Document OIDC improvements and Kanban enhancements Files Changed: - Modified: 56 files (core app, models, routes, templates, static assets) - Deleted: 6 files (license server integration) - Added: 28 files (new features, documentation, migrations)
5.2 KiB
Local Testing with SQLite
This document explains how to run TimeTracker locally for testing using SQLite instead of PostgreSQL.
Overview
The local test environment uses:
- SQLite database instead of PostgreSQL (no separate database container needed)
- Development mode with debug logging enabled
- Local data persistence through Docker volumes
- Simplified setup for quick testing and development
Quick Start
Option 1: Using Scripts (Recommended)
Windows:
scripts\start-local-test.bat
Linux/macOS:
./scripts/start-local-test.sh
PowerShell:
.\scripts\start-local-test.ps1
Option 2: Manual Docker Compose
docker-compose -f docker-compose.local-test.yml up --build
Configuration
The local test environment uses these key settings:
- Database: SQLite at
/data/timetracker.db(persisted in Docker volume) - Port: 8080 (same as production)
- Environment: Development mode with debug enabled
- Security: Secure cookies disabled for local testing
- Logs: Available in
./logs/directory
Environment Variables
You can override default settings using environment variables:
# Timezone
export TZ=Europe/Brussels
# Currency
export CURRENCY=EUR
# Admin users (comma-separated)
export ADMIN_USERNAMES=admin,testuser
# Secret key (change for security)
export SECRET_KEY=your-local-test-secret-key
# Start with custom settings
docker-compose -f docker-compose.local-test.yml up --build
Data Persistence
- SQLite database: Stored in Docker volume
app_data_local_test - Uploads: Stored in
/data/uploads(persisted in Docker volume) - Logs: Stored in
./logs/directory (mounted from host)
Stopping the Environment
# Stop containers
docker-compose -f docker-compose.local-test.yml down
# Stop and remove volumes (WARNING: This will delete all data)
docker-compose -f docker-compose.local-test.yml down -v
Accessing the Application
Once started, the application will be available at:
- URL: http://localhost:8080
- Health Check: http://localhost:8080/_health
Database Management
Viewing SQLite Database
You can access the SQLite database directly:
# Copy database from container to host
docker cp timetracker-app-local-test:/data/timetracker.db ./local-db.sqlite
# Use sqlite3 command line tool
sqlite3 local-db.sqlite
# Or use any SQLite browser tool
Resetting Database
To start with a fresh database:
# Stop and remove volumes
docker-compose -f docker-compose.local-test.yml down -v
# Start again
docker-compose -f docker-compose.local-test.yml up --build
Troubleshooting
Container Won't Start
-
Check Docker is running:
docker info -
Check port 8080 is available:
netstat -an | grep 8080 -
View container logs:
docker-compose -f docker-compose.local-test.yml logs app
Database Issues
-
Check database file exists:
docker exec timetracker-app-local-test ls -la /data/ -
Reset database:
docker-compose -f docker-compose.local-test.yml down -v docker-compose -f docker-compose.local-test.yml up --build
Permission Issues
The local test setup includes a custom entrypoint that automatically handles permissions. If you still encounter issues:
# Check container logs for permission errors
docker-compose -f docker-compose.local-test.yml logs app
# If needed, fix permissions manually
docker exec timetracker-app-local-test chown -R timetracker:timetracker /data
Entrypoint Issues
If you encounter issues with the entrypoint script (like su-exec: not found), you can use the simplified entrypoint:
-
Edit docker-compose.local-test.yml and change the entrypoint line:
# Change this line: entrypoint: ["/app/docker/entrypoint-local-test.sh"] # To this: entrypoint: ["/app/docker/entrypoint-local-test-simple.sh"] -
Restart the container:
docker-compose -f docker-compose.local-test.yml down docker-compose -f docker-compose.local-test.yml up --build
The simplified entrypoint runs everything as root, which avoids user switching issues but is less secure (fine for local testing).
Differences from Production
| Feature | Local Test | Production |
|---|---|---|
| Database | SQLite | PostgreSQL |
| Debug Mode | Enabled | Disabled |
| Secure Cookies | Disabled | Enabled |
| Data Volume | app_data_local_test |
app_data |
| Container Name | timetracker-app-local-test |
timetracker-app |
Development Tips
- Hot Reload: The development environment supports hot reloading for Python changes
- Logs: Check
./logs/timetracker.logfor detailed application logs - Database: Use SQLite browser tools for easier database inspection
- Testing: This environment is perfect for testing new features before production deployment
Security Note
⚠️ Important: This local test environment is configured for development only:
- Secure cookies are disabled
- Debug mode is enabled
- Uses a default secret key
Never use these settings in production!