# GoalsBreakDown A web-based task management application focused on goal-oriented task tracking with a scroll-view interface. ## Features - Multi-user support with registration and authentication - Goal management with activation/deactivation - Task management with status tracking (todo/doing/pending/done) - Focus rule: Only one "doing" task per goal - Scroll-view task selector with drag-and-drop reordering - Admin panel for user management - Per-user goal limits ## Quick Start ### Prerequisites - Python 3.10+ - [uv](https://github.com/astral-sh/uv) package manager ### Installation ```bash # Clone the repository git clone cd GoalsBreakDown # Install dependencies with uv uv sync # Run the application uv run python app.py ``` The application will start at **http://127.0.0.1:5000** ### Default Admin Account - **Username:** `admin` - **Password:** `admin123` **Important:** Change the default admin password after first login. ## Configuration Edit `config.py` to customize settings: ```python # Database path DB_PATH = "data/db.json" # Default admin credentials (change these!) DEFAULT_ADMIN_USERNAME = "admin" DEFAULT_ADMIN_PASSWORD = "admin123" # Default max goals for new users DEFAULT_MAX_GOALS = 5 # Flask settings SECRET_KEY = "your-secret-key-here" # Change in production DEBUG = True HOST = "0.0.0.0" PORT = 5000 ``` ### Production Deployment 1. Change `SECRET_KEY` to a random secure string 2. Set `DEBUG = False` 3. Change default admin credentials 4. Use a production WSGI server (e.g., gunicorn): ```bash uv add gunicorn uv run gunicorn -w 4 -b 0.0.0.0:5000 app:app ``` ## Project Structure ``` GoalsBreakDown/ ├── app.py # Flask application ├── config.py # Configuration ├── database.py # TinyDB operations ├── auth.py # Authentication helpers ├── templates/ # HTML templates ├── static/ │ ├── css/ # Stylesheets │ └── js/ # JavaScript files └── data/ # Database (auto-created, not tracked in git) ``` ## Tech Stack - **Backend:** Python + Flask - **Database:** TinyDB - **Frontend:** Vanilla JS + HTML/CSS - **Drag-and-Drop:** SortableJS - **Authentication:** bcrypt + Flask sessions - **Environment:** uv