Welcome to SmartTaskScheduler, the intelligent tool designed to turn your "to-do dump" into an actionable, focused plan.
SmartTaskScheduler is a productivity tool where you can dump all your todos and actually get them done.
- Focus Mode: Features a "Start" button with configurable timers for each task, allowing you to engage in deep work without distractions.
- Intelligent Rescheduling: If you don't complete a task, you don't need to manually move it. Our tool automatically reschedules pending items based on priority, deadlines, and your available time slots.
To run this application, you need to start the frontend and backend services separately.
The backend is managed using uv for fast, reliable dependency management.
-
Navigate to the backend directory:
cd backend -
Install dependencies: This command will create a virtual environment and install all required packages from your
pyproject.toml:uv sync
-
Run the below command and copy the template
.env.exampleto.env.development# Linux / macOS (bash/zsh) export APP_ENV=development # Windows CMD set APP_ENV=development # Windows PowerShell $env:APP_ENV="development"
-
Start the FastAPI server: the below command with *localhost* is important for login to function correctly
uv run uvicorn main:app --reload --host localhost
The API will be live at
http://localhost:8000
The frontend is a Next.js application managed by pnpm.
-
Navigate to the frontend directory:
cd frontend -
Install packages:
pnpm install
-
Copy the template
.env.exampleto.env.local or .env -
Start the development server:
pnpm dev
the app will be live at
http://localhost:3000
| Task | Backend (uv) | Frontend (pnpm) |
|---|---|---|
| Run Tests | uv run pytest |
pnpm test |
| Linting | uv run ruff check . |
pnpm lint |
| Format | uv run ruff format . |
pnpm build (checks types) |
This project uses GitHub Actions. Any push to the main branch or a Pull Request will trigger:
- Frontend linting and testing via
pnpm. - Backend linting (Ruff) and testing (Pytest) via
uv.
The application includes an intelligent background scheduler that runs automatically at midnight to organize the next day's tasks.
To manually trigger the optimization logic (useful for testing or demos) without waiting for midnight, run the following command from the backend directory:
uv run python test.pyThis scans all users in the database, analyzes their "Floating Tasks" (tasks without a start time), checks for the constraints and fits tasks into the user's daily_free_time window. Then it updates Supabase tasks table with newly calculated start_time values.