Commit Graph

12 Commits

Author SHA1 Message Date
Dries Peeters 4cd8acbbf1 chore: Update Docker entrypoint scripts for local testing
- Improve entrypoint scripts for local test environments
- Fix entrypoint script issues and enhance reliability
- Update test environment setup and configuration
2026-01-09 11:44:26 +01:00
Dries Peeters e8bf79b325 build: precompile translations at Docker build time
- Add pybabel compile step in Dockerfile for faster startup
- Prevents runtime translation compilation overhead
- Gracefully handles missing Babel during build
2026-01-03 20:27:44 +01:00
Dries Peeters 753b98d272 feat: add Peppol e-invoicing and stock lot valuation
Add Peppol BIS Billing 3.0 (UBL) invoice sending via a configurable access point, including admin-configurable settings, per-invoice send history, and documentation/README updates.

Also introduce stock lots/allocations (valuation layers) with supporting inventory route/report/UI updates and hardened startup migration handling.
2026-01-03 07:00:30 +01:00
Dries Peeters 86f7946120 fix: resolve SQLAlchemy reserved word conflict in ClientNotification model
- Rename 'metadata' column to 'extra_data' in ClientNotification model
  to avoid SQLAlchemy Declarative API reserved word conflict
- Update ClientNotificationService to use 'extra_data' instead of 'metadata'
- Maintain API compatibility by returning 'metadata' key in to_dict() method
- Update migration to create 'extra_data' column instead of 'metadata'
- Improve migration idempotency and SQLite compatibility with proper checks
- Enhance backup directory handling with configurable BACKUP_FOLDER support
- Update admin routes to use centralized backup directory function

This fixes the application startup error:
  sqlalchemy.exc.InvalidRequestError: Attribute name 'metadata' is reserved
  when using the Declarative API.

The migration is now idempotent and handles both PostgreSQL and SQLite
databases safely.
2026-01-02 07:50:04 +01:00
Dries Peeters 427074398c Improve migration robustness and add missing schema columns
- Refactor migrations with idempotency checks and better error handling
  * Add SQLAlchemy inspector checks for table/column existence
  * Improve error messages and handling for schema operations
  * Make migrations safe to run multiple times
  * Update 27 migration files with enhanced error handling patterns

- Add missing schema columns via new migrations
  * Migration 095: Add ui_show_issues column to users table
  * Migration 096: Add portal_issues_enabled column to clients table

- Enhance Settings model error handling
  * Improve detection of schema errors (table/column missing)
  * Better handling of SQLAlchemy exceptions during migrations
  * More comprehensive error checking for OperationalErrors

- Fix database auto-switching logic in app initialization
  * Respect explicit DATABASE_URL setting to prevent unwanted switches
  * Only auto-switch to PostgreSQL when not explicitly configured

- Update docker entrypoint script with migration improvements
2026-01-01 09:15:31 +01:00
Dries Peeters 3e75d59349 Fixed Entrypoint 2025-12-31 11:51:57 +01:00
Dries Peeters 7f60d8db1e Update entrypoint_fixed.sh 2025-12-31 07:03:53 +01:00
Dries Peeters c07aaa77fc Fix data directory permission errors in Docker container
- Change CONFIG_DIR from relative 'data' to absolute '/data' path in installation.py
  This fixes PermissionError when trying to create /app/data instead of using
  the mounted volume at /data

- Update telemetry marker file paths to use absolute /data path for consistency

- Add ensure_data_directory() function to entrypoint_fixed.sh to:
  - Create /data directory if it doesn't exist
  - Set proper permissions (755) on /data
  - Attempt to set ownership to current user
  - Create /data/uploads subdirectory

This resolves the 'Permission denied: data' errors when accessing /admin/settings
and ensures the data volume is properly initialized at container startup.
2025-11-28 22:47:55 +01:00
Dries Peeters a90e587fc9 Update entrypoint_fixed.sh 2025-11-01 11:28:01 +01:00
Dries Peeters 69f9f1140d feat(i18n): add translations, locale switcher, and user language preference
- Integrate Flask-Babel and i18n utilities; initialize in app factory
- Add `preferred_language` to `User` with Alembic migration (011_add_user_preferred_language)
- Add `babel.cfg` and `scripts/extract_translations.py`
- Add `translations/` for en, de, fr, it, nl, fi
- Update templates to use `_()` and add language picker in navbar/profile
- Respect locale in routes and context processors; persist user preference
- Update requirements and Docker/Docker entrypoint for Babel/gettext support
- Minor copy and style adjustments across pages

Migration: run `alembic upgrade head`
2025-09-11 23:08:41 +02:00
Dries Peeters 3894b3be94 Migration 2025-09-02 15:42:32 +02:00
Dries Peeters d9dab3a49c feat: enhance README with comprehensive screenshot showcase
- Add organized screenshot sections for better visual presentation
- Include all 12 available screenshots from assets/screenshots/
- Group screenshots into logical categories:
  * Core Application Views (Dashboard, Projects, Tasks, Clients)
  * Management & Analytics (Reports, Visual Analytics, Task Management, Admin)
  * Data Entry & Creation (Log Time, New Task, New Client, New Project)
- Improve visual layout with proper spacing and responsive design
- Enhance user experience by showcasing full application capabilities
2025-09-02 14:42:54 +02:00