Project 7 of ~34

🏆 Hobby Hustle — Architecture

Accountability bot via Telegram. Deno + Supabase + Ollama (Mac Mini). Daily check-in cron, humor voice generation, group coordination.

🛠️ Tech Stack

ComponentTechnologyWhy
Telegram BotDeno + Telegram Bot APIPrimary interface. Commands: /declare, /checkin, /excuse, /status
BackendDeno 2Runs on Mac Mini 24/7. Handles all bot logic and scheduling.
DatabaseSupabase (PostgreSQL)User profiles, projects, milestones, check-ins, excuse bunker, badges
SchedulerUpstash QStashMorning check-in triggers (8am local time), evening follow-up (9pm)
AI VoiceOllama (Mac Mini)Check-in message generation in the user's preferred humor tone
Video CallsDaily.co or Jitsi (free)Hustle pod weekly video calls, embedded in web UI
PaymentsStripeSubscriptions, Hustle Pod billing

🗄️ Data Model

users
iduuidPrimary key
telegram_chat_idvarchar(50)For Telegram messages
timezonevarchar(50)For scheduling check-ins at right local time
personalityenum('encouraging','sarcastic','gentle','fierce')Agent's check-in voice
active_projects_limitinteger1 or 3 based on plan
projects
iduuid
user_iduuid (FK)
namevarchar(255)"Finish my novel"
descriptiontext
categoryvarchar(50)writing, art, music, code, business, fitness, other
target_completiondate
statusenum('active','paused','completed','abandoned')
milestones
iduuid
project_iduuid (FK)
titlevarchar(255)"Complete chapter 3"
due_datedate
statusenum('pending','completed','overdue')
check_ins
iduuid
user_iduuid (FK)
project_iduuid (FK)
datedate
morning_sentboolean
morning_responsetextUser's reply
evening_sentboolean
evening_responseenum('yes','partial','no','excuse')
notetextWhat they did
excuses (bunker)
iduuid
user_iduuid (FK)
check_in_iduuid (FK)
excuse_texttextWhat they said
agent_responsetextTroubleshooting advice from AI
hustle_pods
iduuid
namevarchar(255)
categoryvarchar(50)Pod project type affinity
max_membersinteger5–8
meeting_linkvarchar(500)Jitsi/Daily link

Requirements  |  All Projects  |  Presentation →