HomeBot

HomeBot

Overview

HomeBot is a personal full-stack project I built for my household. One .NET process runs a Discord bot and optional REST API against a shared SQLite database, while a React web UI reads and writes the same data. Family members can manage buy lists, a wishlist, shared expenses and payments, household budgeting, calendar events and tasks, and meal planning from either Discord slash commands or the browser—with global undo, JWT-based web auth, optional Google Calendar sync, and PWA support.

Role: Creator

Dates: April 2026 - Current

Platform: Discord, Web (self-hosted API + SPA), PWA

C#.NETReactTypeScriptSQLiteDiscordVite

Duties

HomeBot dashboard with sidebar navigation and at-a-glance widgets

Dashboard home view — meals, buy list, wishlist, budget, money, and calendar at a glance

HomeBot calendar with month view, tasks sidebar, and event controls

Calendar — month/week/day/agenda views, tasks, Google sync, and .ics import/export

HomeBot budget page with income, expenses, trends, and annual snapshot

Budget — household spending by category, income plan, trends, and annual snapshot

Process

The project started from a practical need: keep shopping, scheduling, shared expenses, and household budgeting in one place my family already uses daily (Discord), without maintaining separate spreadsheets or apps.

Architecture. A single .NET 10 host can run Discord-only, API-only, or both. The API exposes OpenAPI-documented routes; the React UI signs in and calls the same endpoints browsers, scripts, and webhooks can use. Large Discord snowflake IDs are handled carefully in JSON to avoid precision loss.

Product surface. Discord slash commands cover every feature area; the web UI adds richer views (dashboard, budget charts, calendar grids, meal plans) plus settings for theme, push notifications, and household config. After many API writes, the bot can post a short line to the Discord channel bound for that feature.

Reliability and safety. Mutations are rate-limited, auth routes have tighter per-IP limits, and refresh tokens are stored server-side. SQLite backups (local and optional Google Drive via rclone) and environment-driven configuration are documented for long-running household deployment. Integration tests exercise full household workflows over real HTTP and SQLite.

Artifacts: GitHub repository · MIT licensed