Files
TimeTracker/docs
Dries Peeters 39cf649f8e feat: Add client portal with password setup email functionality
Implement a complete client portal feature that allows clients to access
their projects, invoices, and time entries through a dedicated portal with
separate authentication. Includes password setup via email with secure
token-based authentication.

Client Portal Features:
- Client-based authentication (separate from user accounts)
- Portal access can be enabled/disabled per client
- Clients can view their projects, invoices, and time entries
- Clean, minimal UI without main app navigation elements
- Login page styled to match main app design

Password Setup Email:
- Admin can send password setup emails to clients
- Secure token-based password setup (24-hour expiration)
- Email template with professional styling
- Password setup page matching app login design
- Token validation and automatic cleanup after use

Email Configuration:
- Email settings from admin menu are now used for sending
- Database email settings persist between restarts and updates
- Automatic reload of email configuration when sending emails
- Database settings take precedence over environment variables
- Improved error messages for email configuration issues

Database Changes:
- Add portal_enabled, portal_username, portal_password_hash to clients
- Add password_setup_token and password_setup_token_expires to clients
- Migration 047: Add client portal fields to users (legacy)
- Migration 048: Add client portal credentials to clients
- Migration 049: Add password setup token fields

New Files:
- app/routes/client_portal.py - Client portal routes and authentication
- app/templates/client_portal/ - Portal templates (base, login, dashboard, etc.)
- app/templates/email/client_portal_password_setup.html - Email template
- migrations/versions/047-049 - Database migrations
- tests/test_client_portal.py - Portal tests
- docs/CLIENT_PORTAL.md - Portal documentation

Modified Files:
- app/models/client.py - Add portal fields and password token methods
- app/routes/clients.py - Add send password email route
- app/routes/client_portal.py - Portal routes with redirect handling
- app/utils/email.py - Use database settings, add password setup email
- app/templates/clients/edit.html - Add send email button
- app/templates/components/ui.html - Support client portal breadcrumbs

Security:
- Secure token generation using secrets.token_urlsafe()
- Password hashing with werkzeug.security
- Token expiration (24 hours default)
- Token cleared after successful password setup
- CSRF protection on all forms
2025-11-14 15:15:38 +01:00
..
2025-10-10 11:37:23 +02:00

TimeTracker Documentation

Welcome to the comprehensive TimeTracker documentation. Everything you need to install, configure, use, and contribute to TimeTracker.



🚀 Installation & Deployment

Getting Started

Database & Migrations

Docker & Containers


Feature Documentation

Complete Features Reference

Core Features

Financial Features

Productivity Features

Advanced Features

Additional Documentation


🔧 Technical Documentation

Project Structure

Development

CI/CD

Release & Images


🛠️ Troubleshooting

Common Issues

Quick Fixes

  • Port conflicts: Change PORT=8081 in 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

Recent improvements and changes:

Feature Specific

Feature documentation and quick starts:


🔍 Documentation by Topic

For New Users

  1. Start with Main README for product overview
  2. Review Requirements to check if your system is compatible
  3. Follow Docker Public Setup for installation
  4. Explore Feature Documentation to learn what TimeTracker can do

For Developers

  1. Read Contributing Guidelines before making changes
  2. Review Project Structure to understand the codebase
  3. Check Solution Guide for technical patterns
  4. Use Local Testing with SQLite for development

For Administrators

  1. Follow Docker Public Setup for deployment
  2. Review Version Management for updates
  3. Set up Database Migrations for schema management
  4. Configure CI/CD for automated deployments

For Troubleshooting

  1. Check Docker Startup Troubleshooting
  2. Review Database Connection Issues
  3. Consult Solution Guide for common problems
  4. 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?

  1. Check the Contributing Guidelines
  2. Make your changes to the relevant documentation file
  3. Test that all links work correctly
  4. 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


⬆ Back to Top