- New route: GET /reports/tasks
- Lists tasks with status "done" completed within the selected date range
- Filters: project_id, user_id, start_date, end_date (defaults to last 30 days)
- Aggregates hours per task from matching TimeEntry records
- Shows assignee, completion date, total hours, and entry count per task
- UI: new template templates/reports/task_report.html with filters, summary cards, and results table
- Navigation: add “Finished Tasks Report” link under Project Reports on templates/reports/index.html
- Consistent styling and behavior with existing project/user reports
- No schema changes; login required
models/user: add nullable full_name and display_name property (fallback to username)
migrations: add 002_add_user_full_name to introduce users.full_name
auth/profile: show and allow editing full_name; persist on POST
templates:
use display_name across navbar, dashboard greeting, tasks (list/view/edit/my/overdue), projects view, reports (user/project), invoices (creator and generate-from-time), and admin (dashboard/users)
keep username where appropriate (e.g., read-only admin form field)
reports:
aggregate/group by display_name in summaries
CSV export writes display_name instead of username
projects: get_user_totals returns display names when available
main/dashboard: replace inline Jinja in script with data attribute flag to satisfy linter
tasks/view: remove Jinja desc() usage; iterate over pre-ordered time_entries from route and slice to 5
fixes jinja2 UndefinedError: 'desc' is undefined
Add app/utils/backup.py with create_backup/restore_backup
Include DB dump (SQLite file or pg_dump custom), settings.json, uploads/, manifest.json (incl. alembic_revision)
Use local-time timestamps in filenames and metadata
PostgreSQL: call pg_dump/pg_restore with host/port/user/db and PGPASSWORD
Restore runs migrations to head for older data compatibility
Admin
/admin/backup now generates and downloads a .zip archive
New /admin/restore (template: templates/admin/restore.html) for uploading and restoring backups
Refresh admin dashboard visuals (hero header, hover-lift cards, soft buttons), keep color scheme
Remove “System Overview” card from dashboard
CLI
Add flask backup_create and flask backup_restore <archive.zip>
Docker
Install PostgreSQL client tools; switch to PGDG postgresql-client-16 to match server v16
Docs/Config
No schema changes; retains existing settings and migrations
Notes:
Requires pg_dump/pg_restore inside the app image (now included)
Backups saved under project-root/backups and streamed to user on demand
- Update app/templates/tasks/create.html and app/templates/tasks/edit.html
- Render project options as "Project (Client)" for clearer selection
- No backend changes required
Use GET route `timer.start_timer_for_project` instead of POST-only `timer.start_timer`
in task and project templates. This fixes “405 Method Not Allowed” when starting a
timer from /tasks and /tasks/<id>, and from the project view.
- 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
- Improve web interface layout for better user-friendliness and mobile responsiveness
* Update CSS variables for consistent spacing and component sizing
* Enhance card layouts with improved padding, borders, and shadows
* Optimize button and form element dimensions for better touch targets
* Add hover effects and animations for improved user interaction
* Implement responsive grid system with mobile-first approach
- Refactor mobile JavaScript to prevent duplicate initialization
* Consolidate mobile enhancements into dedicated utility classes
* Add initialization guards to prevent double loading
* Implement MobileUtils and MobileNavigation classes
* Remove duplicate event listeners and mobile enhancements
- Fix circular import issue in logo handling
* Replace problematic 'from app import app' with Flask's current_app
* Add error handling for cases where current_app is unavailable
* Improve logo path resolution with fallback mechanisms
* Fix settings model to use proper Flask context
- Clean up template code and remove duplication
* Remove duplicate mobile enhancements from base template
* Clean up dashboard template JavaScript
* Centralize all mobile functionality in mobile.js
* Add proper error handling and debugging
- Update CSS variables and spacing system
* Introduce --section-spacing and --card-spacing variables
* Add mobile-specific spacing variables
* Improve border-radius and shadow consistency
* Enhance typography and visual hierarchy
This commit resolves the double loading issue and logo import errors while
significantly improving the overall user experience and mobile responsiveness
of the web interface.
✨ Major UI/UX Improvements:
- Redesign task management interface with modern card-based layout
- Implement responsive design optimized for all devices
- Add hover effects, smooth transitions, and modern animations
- Integrate Bootstrap 5 with custom CSS variables and styling
🎨 Enhanced Task Templates:
- tasks/list.html: Modern header, quick stats, advanced filtering, card grid
- tasks/view.html: Comprehensive task overview with timeline and quick actions
- tasks/create.html: Enhanced form with helpful sidebar and validation
- tasks/edit.html: Improved editing interface with current task context
- tasks/my_tasks.html: Personalized task view with task type indicators
🔧 Technical Improvements:
- Fix CSRF token errors by removing Flask-WTF dependencies
- Convert templates to use regular HTML forms matching route implementation
- Ensure proper form validation and user experience
- Maintain all existing functionality while improving interface
📱 Mobile-First Design:
- Responsive grid layouts that stack properly on mobile
- Touch-friendly buttons and interactions
- Optimized spacing and typography for all screen sizes
- Consistent design system across all task views
📊 Enhanced Features:
- Quick stats overview showing task distribution by status
- Advanced filtering with search, status, priority, project, and assignee
- Priority-based color coding and visual indicators
- Task timeline visualization for better project tracking
- Improved form layouts with icons and helpful guidance
📚 Documentation Updates:
- Update README.md with comprehensive task management feature descriptions
- Add new screenshot section for enhanced task interface
- Document modern UI/UX improvements and technical features
- Include usage examples and workflow descriptions
�� User Experience:
- Clean, professional appearance suitable for business use
- Intuitive navigation and clear visual hierarchy
- Consistent styling with existing application design
- Improved accessibility and usability across all devices
This commit represents a significant enhancement to the task management system,
transforming it from a basic interface to a modern, professional-grade
solution that matches contemporary web application standards.
- Add Task model with full CRUD operations, status tracking, and priority management
- Integrate tasks with existing projects and time entries via foreign key relationships
- Create new Flask routes (/tasks) with admin and user role-based access control
- Implement task status transitions (pending → in_progress → completed → cancelled)
- Add task filtering by status, priority, assignee, and project
- Create responsive Jinja2 templates for task listing, creation, editing, and viewing
- Integrate task selection in timer and manual time entry forms
- Add task management to project dashboards and navigation menus
- Implement automatic database migration system for seamless deployment
- Create migration scripts to add missing tables and columns
- Update startup script to detect and run migrations automatically
- Add comprehensive error handling and validation
- Include full documentation (TASK_MANAGEMENT_README.md)
- Update project structure and main README with new feature details
Database Changes:
- New 'tasks' table with indexes for performance
- Add 'task_id' column to 'time_entries' table
- Automatic migration detection and execution
Technical Implementation:
- SQLAlchemy relationships with proper backrefs and cascading
- Flask-Login integration for role-based access
- Bootstrap 5 responsive UI components
- Font Awesome icons for visual enhancement
- Comprehensive test coverage and error handling
This feature enables users to break down projects into manageable tasks,
track progress, assign work, and maintain better project organization.
- Change analytics dashboard template from `{% block scripts %}` to `{% block extra_js %}`
- Fixes block name mismatch between base.html and analytics dashboard template
- Resolves issue where AnalyticsDashboard JavaScript class was not loading
- Charts now properly initialize and display data from API endpoints
- Maintains all existing functionality while fixing the rendering issue
- Add mobile-first CSS with responsive breakpoints and touch targets
- Create dedicated mobile.css and mobile.js files for enhanced mobile experience
- Implement card-based table layouts for small screens with data-label attributes
- Add mobile-specific utility classes (mobile-card, touch-target, mobile-stack)
- Enhance navigation with collapsible mobile menu and swipe gestures
- Optimize forms, buttons, and modals for mobile devices
- Add touch feedback and mobile-specific interactions
- Implement responsive grid layouts and mobile typography
- Add mobile meta tags for PWA-like functionality
- Ensure all templates use mobile-friendly classes and responsive design