mirror of
https://github.com/DRYTRIX/TimeTracker.git
synced 2026-01-03 02:00:55 -06:00
Add enhanced project archiving functionality for better organization of completed projects with metadata tracking and validation. Key Features: - Archive metadata tracking (timestamp, user, reason) - Archive form with quick-select reason templates - Bulk archiving with optional shared reason - Archive information display on project details - Prevent time tracking on archived projects - Activity logging for archive/unarchive actions Database Changes: - Add migration 026_add_project_archiving_metadata.py - New fields: archived_at, archived_by (FK), archived_reason - Index on archived_at for faster filtering - Cascade on user deletion (SET NULL) Model Enhancements (app/models/project.py): - Enhanced archive() method with user_id and reason parameters - Enhanced unarchive() method to clear all metadata - New properties: is_archived, archived_by_user - Updated to_dict() to include archive metadata Route Updates (app/routes/projects.py): - Convert archive route to GET/POST (form-based) - Add archive reason handling - Enhanced bulk operations with reason support - Activity logging for all archive operations UI Improvements: - New archive form template (app/templates/projects/archive.html) - Quick-select buttons for common archive reasons - Archive metadata display on project view page - Bulk archive modal with reason input - Updated project list filtering Validation (app/routes/timer.py): - Prevent timer start on archived projects - Block manual entry creation on archived projects - Block bulk entry creation on archived projects - Clear error messages for users Testing: - 90+ comprehensive test cases - Unit tests (tests/test_project_archiving.py) - Model tests (tests/test_project_archiving_models.py) - Smoke tests for complete workflows - Edge case coverage Documentation: - User guide (docs/PROJECT_ARCHIVING_GUIDE.md) - Implementation summary (PROJECT_ARCHIVING_IMPLEMENTATION_SUMMARY.md) - API reference and examples - Best practices and troubleshooting Migration Notes: - Backward compatible with existing archived projects - Existing archives will have NULL metadata (can be added later) - No data migration required - Run: migrations/manage_migrations.py upgrade head Breaking Changes: None - All changes are additive and backward compatible Related: Feat-Project-Archiving branch
TimeTracker Documentation
Welcome to the comprehensive TimeTracker documentation. Everything you need to install, configure, use, and contribute to TimeTracker.
📖 Quick Links
- 🚀 Getting Started Guide — Complete beginner tutorial (⭐ Start here!)
- Main README — Product overview and quick start
- Installation Guide — Get TimeTracker running
- Feature Guides — Learn what TimeTracker can do
- Troubleshooting — Solve common issues
🚀 Installation & Deployment
Getting Started
- 🚀 Getting Started Guide — Complete beginner tutorial (⭐ Start here!)
- Requirements — System requirements and dependencies
- Docker Public Setup — Production deployment with Docker
- Local Testing with SQLite — Quick test without database setup
Database & Migrations
- Database Migrations — Database schema management with Flask-Migrate
- Migration Guide — Migrate existing databases
- Enhanced Database Startup — Automatic database initialization
- Database Startup Fix — Database connection troubleshooting
Docker & Containers
- Docker Startup Troubleshooting — Fix Docker issues
- Docker Startup Configuration — Container startup behavior
- Docker Connection Troubleshooting — Database connection in Docker
✨ Feature Documentation
Core Features
- Task Management — Complete task tracking system
- Task Management Overview — Task management concepts
- Client Management — Manage clients and relationships
- Client Notes — Add internal notes about clients
- Invoice System — Generate and track invoices
- Enhanced Invoice System — Advanced invoicing features
- Calendar Features — Calendar view and bulk entry
Advanced Features
- Command Palette — Keyboard shortcuts and quick actions
- Bulk Time Entry — Create multiple time entries at once
- Logo Upload System — Brand your invoices
- Toast Notification System — User feedback and notifications
- Translation System — Multi-language support
Additional Documentation
- Mobile Improvements — Mobile-optimized interface
- Invoice Interface Improvements — Invoice UI enhancements
- PDF Generation Troubleshooting — Fix PDF generation issues
🔧 Technical Documentation
Project Structure
- Project Structure — Codebase organization and architecture
- Solution Guide — Technical solutions and patterns
Development
- Contributing Guidelines — How to contribute to TimeTracker
- Code of Conduct — Community standards and expectations
- Version Management — Release process and versioning
CI/CD
- CI/CD Documentation — Continuous integration and deployment
- Documentation — CI/CD overview
- Quick Start — Get started with CI/CD
- Implementation Summary — What was implemented
- GitHub Actions Setup — Configure GitHub Actions
- GitHub Actions Verification — Verify CI/CD setup
Release & Images
- Release Process — How to create releases
- GitHub Workflow Images — Docker images on GitHub Container Registry
🛠️ Troubleshooting
Common Issues
- Docker Startup Troubleshooting — Docker won't start
- Database Connection Issues — Can't connect to database
- PDF Generation Issues — PDFs not generating
- Solution Guide — General problem solving
Quick Fixes
- Port conflicts: Change
PORT=8081in docker-compose command - Database issues: Run
docker-compose down -v && docker-compose up -d - Permission errors: Check file ownership with
chown -R $USER:$USER . - Migration failures: See Database Migrations
📚 Additional Resources
Features & Improvements
Detailed documentation about features and improvements is available in:
- Implementation Notes — Development summaries and changelogs
- Feature Guides — Specific feature documentation
Implementation Notes
Recent improvements and changes:
- Analytics Improvements
- Calendar Improvements
- Command Palette Improvements
- Dashboard & Navbar
- Kanban Improvements
- Notification System
- OIDC Improvements
- Reports Improvements
- Styling Consistency
- Toast Notifications
- Translation Improvements
- Translation Fixes
- UI Improvements
Feature Specific
Feature documentation and quick starts:
- Alembic Migrations
- Project Costs
- Project Costs Quick Start
- Calendar Quick Start
- Badges
- Code Formatting
🔍 Documentation by Topic
For New Users
- Start with Main README for product overview
- Review Requirements to check if your system is compatible
- Follow Docker Public Setup for installation
- Explore Feature Documentation to learn what TimeTracker can do
For Developers
- Read Contributing Guidelines before making changes
- Review Project Structure to understand the codebase
- Check Solution Guide for technical patterns
- Use Local Testing with SQLite for development
For Administrators
- Follow Docker Public Setup for deployment
- Review Version Management for updates
- Set up Database Migrations for schema management
- Configure CI/CD for automated deployments
For Troubleshooting
- Check Docker Startup Troubleshooting
- Review Database Connection Issues
- Consult Solution Guide for common problems
- Check specific feature documentation if issue is feature-related
📝 Documentation Structure
docs/
├── README.md # This file - documentation index
├── REQUIREMENTS.md # System requirements
├── PROJECT_STRUCTURE.md # Codebase architecture
├── CONTRIBUTING.md # Contribution guidelines
├── CODE_OF_CONDUCT.md # Community standards
│
├── cicd/ # CI/CD documentation
│ ├── CI_CD_DOCUMENTATION.md
│ ├── CI_CD_QUICK_START.md
│ └── ...
│
├── features/ # Feature-specific guides
│ ├── ALEMBIC_MIGRATION_README.md
│ ├── PROJECT_COSTS_FEATURE.md
│ └── ...
│
└── implementation-notes/ # Development notes
├── ANALYTICS_IMPROVEMENTS_SUMMARY.md
├── UI_IMPROVEMENTS_SUMMARY.md
└── ...
🤝 Contributing to Documentation
Found an error? Want to improve the docs?
- Check the Contributing Guidelines
- Make your changes to the relevant documentation file
- Test that all links work correctly
- Submit a pull request with a clear description
Good documentation helps everyone! 📚
💡 Tips for Using This Documentation
- Use the search function in your browser (Ctrl/Cmd + F) to find specific topics
- Follow links to related documentation for deeper understanding
- Start with Quick Links at the top if you're in a hurry
- Browse by topic using the categorized sections
- Check Implementation Notes for recent changes and improvements
Need help? Open an issue or check the troubleshooting section
Want to contribute? See our Contributing Guidelines