goalsbreakdown/README.md
Yuyao Huang f3bffa40cd Initial commit: GoalsBreakDown web app
- Flask backend with TinyDB database
- Multi-user auth with bcrypt password hashing
- Goal CRUD with activation/deactivation and per-user limits
- Task CRUD with status tracking (todo/doing/pending/done)
- Focus rule: one doing task per goal
- Time picker-style scroll view with drag-and-drop reordering
- Admin panel for user management
- uv environment management
2026-05-08 12:41:19 +08:00

102 lines
2.3 KiB
Markdown

# 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 <repository-url>
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