A self-hosted task manager for neurodiverse and neurospicy brains. Most to-do lists are built around deadlines and priority, but for some folks it’s not about time, it’s about energy. Tag tasks by energy cost instead of urgency, then filter your list to match your actual battery: Low battery? Clear a low-energy task for a quick win. Hyperfocused? Settle into a deep work task.
| Light mode | Dark mode |
|---|---|
![]() |
![]() |
Tip
Now with themes support: Nord, Everforest, Gruvbox, Solarized, Catppuccin, and more!
I'm Mike, a healthcare provider, researcher, and educator who’s learning to code as a hobby. I built this after struggling to find a minimal, self-hosted task manager that worked with the way my brain organizes energy and attention.
Executive Function as Code articulated exactly what I felt I had been missing, and Blake Watson’s article inspired me to follow through and actualy build it myself.
- Fast & Lightweight – ~8 MB RAM use. Fast task entry and instant sync across devices
- Energy-based task categorization — Assign low, medium, or high energy costs to your tasks
- Tagging — Easily create additional tags
- Filter & search — Filter by energy to match your battery, or search by words or tags
- Inline editing — Easily edit a task right from the list. Reorder, add tags, and toggle energy costs.
- Swipes - Swipe right to complete, left to delete.
- Themes with light & dark modes — A minimal default theme, with Nord, Everforest, Gruvbox, Catppuccin, and more
- Keyboard accessibility — Navigate and manage tasks without a mouse
- Self-hosted — Run it yourself, your data is yours
- Docker support — Get it running quickly
- Progressive Web App — Install it on your home screen like a native app on any device
- Accessibility-first design — Built to be readable, keyboard-friendly, and reduce cognitive overload (WCAG 2.2 AA–aligned, Atkinson Hyperlegible font).
Prerequisites: Docker and Docker Compose
-
create a
docker-compose.yamlfile:services: energy-todo: container_name: energy-todo image: ghcr.io/mgrimace/energy-todo:latest ports: - "3000:3000" volumes: - ./energy-data:/app/data:rw restart: unless-stopped
-
(Optional) Set up your environment:
cp .env.example .env- Create the data directory (this matches the
./energy-data:/app/datavolume):
mkdir -p energy-data
# If you get permission errors writing to this folder, run:
sudo chown -R 1000:1000 energy-dataTip
If you changed the container user: in docker-compose.yaml, update the 1000:1000 above to match the UID/GID you set (via LOCAL_UID/LOCAL_GID).
- Start the app:
docker compose up -d- Open your browser and go to
http://localhost:3000
Your tasks are saved in the energy-data/ directory on your machine, so they persist between restarts.
Install as a PWA: Once the app is running, look for the install icon in your browser's address bar (or menu) and select "Install app". It will appear on your home screen and work offline.
Prerequisites: Node.js, Rust, and Cargo
Frontend:
cd frontend
npm install
npm run devBackend:
cd backend
cargo runThe frontend dev server runs on http://localhost:5173 and the backend on http://localhost:8000.
- Frontend: React + Vite
- Backend: Rust + Actix Web
- Database: SQLite
- Containerization: Docker & Docker Compose
The project is intentionally simple, and it is not designed for enterprise use.
If you've found this project helpful and would like to support further development, please consider donating. Thank you:

