A simple desktop task manager for researchers.
Backed by Google Sheets (or runs fully offline) — track projects, deadlines, notes, and collaborators from a clean local web UI.
- Projects — each Google Sheet tab is a project; works fully offline without one
- Tasks — track deadline, hours, status (Not Started / In Progress / Pending / Completed), and assignee
- Upcoming view — tasks grouped by deadline urgency: Overdue → This Week → This Month → Later
- Stats — overall progress, hours logged, status breakdown, and per-project completion bars
- Notes — colorful cards with importance/purpose tags, sorted newest-first
- Collaborators — per-project team members with role labels; assignable to tasks
- Flower progress — each project gets a unique SVG flower; petals fill as tasks complete
- Search — filter tasks across all projects instantly
- Bulk status change — select multiple tasks and mark them all at once
- Export CSV — download any project's tasks as a spreadsheet
- Themes — five pastel color themes (Classic, Ocean, Sage, Sunset, Lavender)
- GarDone — a botanical specimen view of all completed tasks; each project rendered as a pressed flower with its task list, parchment-style
- Procrastinate tab — snake game with a timer and deep quotes for earned breaks
- Sync on demand — data cached locally; click ↻ Sync to pull latest from Sheets
Double-click start.command.
First run — Gatekeeper warning
macOS will block the script with "Apple could not verify start.command is free of malware…"
This happens because the file was downloaded from the internet.
- Try to open
start.command(it will be blocked)- Open System Settings → Privacy & Security
- Scroll down to the Security section — you'll see a message about
start.command- Click Open Anyway
- From then on you can double-click normally
Alternatively, run this once in the project folder and double-click works immediately:
xattr -d com.apple.quarantine start.command
Double-click start.bat.
Both launchers automatically create a virtual environment, install dependencies, and open the app at http://localhost:8080. No Google Sheets configuration required — the app runs in local mode out of the box.
Skip this section if you want to use local storage only.
- Go to sheets.google.com and create a new spreadsheet.
- Add one tab per project (e.g. "NeurIPS Paper", "Grant Application").
- Copy the Sheet ID from the URL:
https://docs.google.com/spreadsheets/d/YOUR_SHEET_ID_HERE/edit
- Go to console.cloud.google.com.
- Click Select a project → New Project.
- Go to APIs & Services → Library.
- Search for Google Sheets API and click Enable.
- Go to APIs & Services → Credentials → Create Credentials → Service Account.
- Give it a name and click Create and Continue. Skip optional steps, click Done.
- Click the service account → Keys tab → Add Key → Create new key → JSON.
- Save the file as
service_account.jsonin this project directory.
- Copy the
client_emailfrom the JSON file (looks like[email protected]). - Open your Google Sheet → Share → paste the email → set role to Editor → Send.
cp config.example.py config.pyEdit config.py:
SHEET_ID = "your_sheet_id_here"
CREDS_FILE = "service_account.json"Each project tab uses columns A–F:
| A | B | C | D | E | F |
|---|---|---|---|---|---|
| Deadline | Task | Hours | Status | Completed Date | Assignee |
Two hidden meta-tabs are created automatically:
_notes— stores all notes across projects_collabs— stores collaborators per project
Do not delete or rename these tabs.
| Action | Behaviour |
|---|---|
| Navigate between projects | Instant — uses in-memory cache |
| Add / edit / delete a task | Writes to Sheets immediately |
| Add / edit / delete a note | Writes to Sheets + re-reads notes |
| Click ↻ Sync | Forces a full re-read from Google Sheets |
- Offline / local mode: If no
config.pyis present, all data is saved tolocal_data.jsonlocally. - Multiple collaborators: Enter comma-separated names in the Add Collaborator dialog.
- Status shortcut: Click any status badge to cycle through statuses inline.
- Bulk actions: Check the boxes next to tasks, then use the bulk bar to change status on all at once.
- Themes: Click the colored dots in the sidebar to switch themes. Your choice is saved in the browser.
- Resizable sidebar: Drag the sidebar edge to resize it.
MIT





