- Replace TinyDB (JSON file) with sqlite3 for data persistence - Add schema.py: table creation + data migration from db.json - Rewrite database.py: all CRUD operations use sqlite3 directly - All data retains original IDs via migration script - Remove tinydb dependency from pyproject.toml
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 package manager
Installation
# 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:
# 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
- Change
SECRET_KEYto a random secure string - Set
DEBUG = False - Change default admin credentials
- Use a production WSGI server (e.g., gunicorn):
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
Description
Languages
JavaScript
32.6%
Python
30%
CSS
19.9%
HTML
17.5%