# 🦝 Raccoon Timekeeper A self-hosted time tracking application with a sleek grayscale design. ![Raccoon Timekeeper](https://img.shields.io/badge/version-1.0.0-gray) ![Python](https://img.shields.io/badge/python-3.10+-blue) ![License](https://img.shields.io/badge/license-MIT-green) ## Features - ⏱️ **Flexible Time Entry** - Log time in multiple formats (1:30, 1.5, 90m, 1h 30m) - 📅 **Weekly Summaries** - View time grouped by task and day (Monday-Sunday weeks) - 🖨️ **Printable Timesheets** - Generate clean printable weekly reports - 📋 **Task Management** - Create, edit, and organize your tasks - 📊 **Data Export** - Export your data as JSON or CSV - 🎨 **Raccoon Theme** - Sleek grayscale design ## Quick Start ### Using Docker (Recommended) ```bash # Clone the repository git clone https://gitea.hideawaygaming.com.au/jessikitty/Raccoon-TimeKeeper.git cd Raccoon-TimeKeeper # Start with Docker Compose docker-compose up -d # Access at http://localhost:5000 ``` ### Manual Installation ```bash # Clone the repository git clone https://gitea.hideawaygaming.com.au/jessikitty/Raccoon-TimeKeeper.git cd Raccoon-TimeKeeper # Create virtual environment python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate # Install dependencies pip install -r requirements.txt # Copy environment file cp .env.example .env # Run the application python app.py # Access at http://localhost:5000 ``` ## Configuration Create a `.env` file based on `.env.example`: ```env SECRET_KEY=your-super-secret-key-change-me DATABASE_URL=sqlite:///data/timekeeper.db DEBUG=false ``` ## Time Entry Formats The time input field accepts multiple formats: | Format | Example | Result | |--------|---------|--------| | Hours:Minutes | `1:30` | 1h 30m | | Decimal Hours | `1.5` | 1h 30m | | Minutes | `90m` | 1h 30m | | Hours | `2h` | 2h 0m | | Combined | `1h 30m` | 1h 30m | ## API Endpoints | Method | Endpoint | Description | |--------|----------|-------------| | GET | `/api/tasks` | Get all tasks | | POST | `/api/tasks` | Create a task | | PUT | `/api/tasks/` | Update a task | | DELETE | `/api/tasks/` | Delete a task | | GET | `/api/entries` | Get all time entries | | POST | `/api/entries` | Create a time entry | | PUT | `/api/entries/` | Update a time entry | | DELETE | `/api/entries/` | Delete a time entry | | GET | `/api/weekly-summary` | Get weekly summary | ## Project Structure ``` raccoon-timekeeper/ ├── app.py # Main Flask application ├── requirements.txt # Python dependencies ├── Dockerfile # Docker build file ├── docker-compose.yml # Docker Compose config ├── .env.example # Example environment file ├── templates/ # HTML templates │ ├── base.html │ ├── index.html │ └── settings.html └── static/ ├── css/ │ └── style.css # Raccoon grayscale theme └── js/ ├── app.js # Shared utilities ├── index.js # Index page logic └── settings.js # Settings page logic ``` ## Development ```bash # Run in debug mode DEBUG=true python app.py ``` ## License MIT License - feel free to use and modify! --- Made with 🦝 by Raccoon Timekeeper