Skip to content

greenlonk/household_assistant

Repository files navigation

Household Assistant (MVP)

Automate your ADHD chores with cron syntax, ntfy.sh and a Raspberry Pi that politely tells you to clean your fridge.

This repository provides a minimal proof‑of‑concept for a household assistant that uses cron schedules to send notifications via an ntfy server. The app is split into three small services:

Service Description
🖥️ Frontend A FastAPI + Jinja app that lets you view, add, and edit tasks and ntfy channels via a simple web UI.
⚙️ Backend A CRUD API built with SQLModel that stores tasks, channels, and runtime logs in a SQLite database.
Scheduler An APScheduler-based service that runs tasks on schedule and sends out ntfy notifications.

All three services can run locally via Docker Compose.

Folder structure

household_assistant/
├── backend/             # API and database models
├── frontend/            # Jinja templates and HTMX routes
├── scheduler/           # APScheduler runner
├── utils/               # Shared helpers (ntfy, db)
├── alembic/             # Migrations
└── docker-compose.yml

Getting started

1. Clone the repo

git clone https://github.com/greenlonk/household_assistant.git
cd household_assistant

2. Start the stack

docker compose up --build

This will start:

3. Create a channel

Before adding tasks, you need to create a channel so the scheduler knows which ntfy server + topic to use.

  1. Open the web UI -> Channels
  2. Enter:
    • the ntfy server URL (e.g. https://ntfy.sh or your own self-hosted URL)
    • the topic (e.g. household_assistant_test)

If your topic is password-protected, you can also add authentication details. Please note the encryption details are stored as plain text in the database, so don't use sensitive accounts!

4. Add a task

After creating a channel, you can now add a task:

  • Name: something like "Vacuum living room"
  • Cron schedule: e.g. 0 18 * * 5 (Fridays at 6 PM)
  • Message: the text shown in the ntfy notification
  • Priority: 1 (low) - 5 (high)
  • Tags: optional ntfy tags
  • Extra args: optional key/value pairs for the ntfy POST request
  • Channel: A dropdown menu of all the channels you've added in the previous step. Select the one that should be used for the task

Once saved, your new task will appear in the list below. Congrats, you've just automated a chore!

⚠️ Disclaimer

This is not production-ready and not secure for public deployment. It’s designed to run on your local network or home server (e.g. Raspberry Pi).

Known limitations:

  • No authentication or CSRF protection
  • Plaintext credentials in the database
  • No HTTPS or rate limiting
  • No user sandboxing
  • No guarantees that you’ll actually fold your laundry

If you want to deploy this publicly, you’ll need to:

  • Add auth (FastAPI Users or OAuth2)
  • Secure communication (HTTPS, reverse proxy)
  • Encrypt stored credentials
  • Harden the scheduler (retry, backoff, health checks)

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors