Project Info
Inspiration
Studies have shown gamification has psychological benefits in one's ability to complete tasks. Your to-do's can feel daunting, and the "reward" feels too far away, especially for people with ADHD or chronic procrastination. We conducted research on spatial memory, discovering visualizing and attaching progress tracking to object formation helps users develop engagement and desire to complete tasks, decreasing the chance of dropping out and giving up tasks. Breaking tasks into smaller steps decreases the mental barrier of starting tasks and bringing in rewards with gamification drives it further.
What it does
Roominate gamifies and offers incentives for completing your tasks by rewarding completion with the ability to decorate a cozy home. Place Your Task: Instead of "adding a task" to an endless list, you are provided with a personal space and "place a task" in a room. This turns an abstract chore ("Write Essay") into a concrete "ghosted" object (like a Bookshelf or a plant) in a specific spot where you could categorize and recall it based on spatial memory. AI Task Breakdown: Have trouble breaking down your complex task into steps? Our AI assistant breaks that intimidating task into small, non-threatening, actionable subtasks (e.g., "Research topic," "Write outline," "Write first draft"). The "blank page" problem is gone. Create Your Space: Completing a task solidifies the “Bookshelf” as a permanent, beautiful object. As you complete tasks, you unlock new rooms and more opportunities for different furniture, building a home you’re genuinely attached to. Get Motivated: The friendly cat inside your home gives you advice and motivation to complete your tasks. psst Crater... there may be a secret cow as well, but I wouldn't follow its advice!
How we built it
We built Roominate in Godot 4.5 focusing on seamless UI/UX design. The global logic is managed through signals to synchronize updates across all scenes. Each major system; task creation, to-do management, room layout, all communicate through these signals to ensure smooth, event-driven updates without manual dependencies. Our AI system, powered by ASI:One implemented in cat.gd and cow.gd as well as OpenRouter with Claude shown in our task step generator. In terms of the assistants, they receive updates about the latest edited task, sent through HTTP requests, and respond with a short and personality-driven feedback. The dialog appears dynamically in-game and an automatic timer, creating natural conversational flow without blocking gameplay. The room system ties task progress directly to world building. Completed tasks instantiate corresponding furniture objects within room_layout.gd, while furniture.gd manages placement. Tasks are tracked globally enabling players to unlock rooms and better interactions with the cow and cat assistants.
Challenges we ran into
One of the biggest challenges we faced was standing out in a space where productivity tools and gamified tasks have already been explored. We didn’t want to make something that simply looked different, we wanted it to feel different, with real emotional engagement and long-term growth potential. Finding that balance between familiar and innovate required a lot of iteration and design restraint. Integrating AI added another layer of complexity. We wanted the AI assistants (like our cat and cow personalities) to feel dynamic and responsive, but not intrusive or repetitive. Tuning their tone, behavior, and timing so they were motivating (well, at least the cat is) rather than distracting was a careful balancing act. We also faced the usual hackathon time pressure, merging design, code, and polish under tight deadlines while keeping our vision cohesive. The biggest challenge wasn’t just technical; it was staying focused on our core idea: making productivity something players would want to return to, again and again.
What's next
We believe Roominate is an innovative new tool for productivity. Our roadmap for continuation includes: Multiplayer & Social Rooms: We did some user interviews and concept testing, and found that social aspects are also incentives for many people to accomplish tasks. Imagine visiting a friend's "Sweet Home" to see the objects they've built, or even tackling a "group project" that builds a shared object in a community space. Deeper Customization: Select from an option of themes such as pirate, farm, and sci-fi to make every space truly unique and personalized. Application Integration: Launch the programs or open the web pages needed for your task directly from Roominate.
Roominate - Gamified Task Tracker
enter same stuff from devpost here (like the elevator pitch)
This repo houses the Godot game plus Python services that:
- expose the quest-planning REST API (
uv run uvicorn app.main:app --reload) - expose the same capabilities over MCP (
uv run python backends/app/mcp_server.py --transport stdio) - add a lightweight agent-relay server that routes prompts to Fetch.ai, JanitorAI, Wordware, or Letta (
uv run uvicorn app.agent_server:app --port 8300 --reload)
All details live in backends/README.md, docs/API.md, and docs/MCPGuide.md.
Analysis
View
Metric
- 32
- 22
- 14
- 2
- 2
Figures cover GitHub contributors during the hackathon window. A co-authored commit counts in full for each author, so per-member totals add up to more than the whole-team figures.
Technology
- FastAPIIn code
- OpenAIIn code
- PythonIn code
3 of 3 appear in the indexed code.
AI coding agents
No AI coding agent signals were found in this repository.
Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.
Codebase size
Source size
111 KB
Source files
42
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
XitoAliferis/calhacks12
1,168 files · 4.8 MB · @ 6e343fc
Structure
Interface
14 files · 1%Screens, components and styles rendered to the user.
API & routing
4 files · 0%Request entry points: routes, handlers and controllers.
Application logic
34 files · 3%Domain rules, services and shared utilities.
+2 moreData & schema
2 files · 0%Schema definitions, migrations and data access.
Supporting
Layers are inferred from where files sit in the tree, not from reading the code. A project that names its directories unconventionally will read oddly here — open the file browser to check anything the diagram implies.
Languages
- Python53%
- Markdown44%
- Shell2%
- YAML1%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
backends/pyproject.toml
pypi · 16- chromadb
- fastapi
- fastmcp
- httpx
- openai
- pydantic-settings
- python-dotenv
- sentence-transformers
- sqlmodel
- tenacity
- uvicorn
- +5 more
Declared in the repository’s manifests at the indexed commit. A declared package is not proof it is used, and runtime dependencies are listed first.
Feature verification
Agent-relay server routing to Fetch.ai, JanitorAI, Wordware, LettaVerified
Lightweight agent-relay server routes prompts to Fetch.ai, JanitorAI, Wordware, or Letta via `uv run uvicorn app.agent_server:app --port 8300`
Claimed on readmehigh confidencebackends/app/agent_server.py:40— POST /agents/run endpoint validates provider against fetchai|janitorai|wordware|letta and delegates to agent_routerbackends/app/services/agent_router.py:100— AgentRouter registers HTTPAgentProvider instances for all four named providers with a local fallback path
AI assistants powered by ASI:OneVerified
AI system powered by ASI:One implemented in cat.gd and cow.gd
Claimed on readmehigh confidencescripts/cat.gd:8— ASI_URL points to https://api.asi1.ai/v1/chat/completions and requests use model 'asi1-mini'scripts/cow.gd:8— Same ASI:One endpoint and model used for the cow assistant
AI task breakdown into subtasksVerified
An AI assistant breaks a complex task description into small actionable subtasks
Claimed on Devposthigh confidencescripts/task_creation.gd:130— _on_ai_pressed sends description_text to OpenRouter (anthropic/claude-3.5-haiku) and requests a numbered step formatscripts/task_creation.gd:162— _on_request_completed parses 'step N: ...' lines from the AI response into LineEdit/CheckBox subtask rows
Completing a task instantiates permanent furnitureVerified
Completing a task solidifies the object (e.g. bookshelf) as a permanent furniture piece in the room
Claimed on Devposthigh confidencescripts/blank_area.gd:52— finish_task() hides the task marker, instantiates the selected furniture scene as a child, and increments global.finished_tasks
Friendly cat gives motivational feedbackVerified
A friendly cat inside the home gives advice and motivation on tasks
Claimed on Devposthigh confidencescripts/cat.gd:17— cat listens to global.saved_tasks_changed and sends the latest task to the ASI:One API with a warm/supportive system prompt, displaying the reply in a textboxscenes/main.tscn:10— cat.tscn is instanced in the main scene
Global signal-driven synchronization across scenesVerified
Global logic managed through signals to synchronize updates across all scenes without manual dependencies
Claimed on readmemedium confidencescripts/global.gd:3— global.gd (autoload) defines finished_task and saved_tasks_changed signalsscripts/cat.gd:16— cat.gd subscribes to global.saved_tasks_changed to react to task editsscripts/locked_room.gd:10— locked_room.gd subscribes to global.finished_task to trigger room unlocking
MCP server exposing backend capabilitiesVerified
Same capabilities exposed over MCP via `uv run python backends/app/mcp_server.py --transport stdio`
Claimed on readmehigh confidencebackends/app/mcp_server.py:41— FastMCP server registers todo CRUD, ai_generate, and memory_search tools, with a stdio/http/sse transport CLI matching the README command
Place task on furniture in roomVerified
Users place a task in a room, turning it into a 'ghosted' furniture object in a specific spot tied to spatial memory
Claimed on Devposthigh confidencescripts/blank_area.gd:21— setup_task() opens furniture picker and shows a task marker at a specific area instance, giving each blank_area a persistent id based on positionscripts/blank_area.gd:8— id = furniture_x_y is a persistent, position-based key used to store the task in global.saved_tasks
REST quest-planning APIVerified
Repo exposes a quest-planning REST API via `uv run uvicorn app.main:app --reload`
Claimed on readmehigh confidencebackends/app/main.py:25— FastAPI app titled 'AI Task Backend' wires up routes_todos, routes_ai, routes_memory routers plus health/ready endpoints
Secret sarcastic cow assistantVerified
A secret cow gives advice too, but its advice shouldn't be followed
Claimed on Devposthigh confidencescripts/cow.gd:61— cow.gd uses a snarky/rude system prompt ('Meow, an internet-famous cow AI...never be wholesome') fed the latest task via the ASI:One APIscenes/main.tscn:11— cow.tscn is also instanced alongside the cat in the main scene, confirming it is present in-game
Task step generator powered by OpenRouter/ClaudeVerified
Task step generator uses OpenRouter with Claude
Claimed on readmehigh confidencescripts/task_creation.gd:15— OPENROUTER_URL is https://openrouter.ai/api/v1/chat/completionsscripts/task_creation.gd:143— request body uses model 'anthropic/claude-3.5-haiku'
Unlocking new rooms by completing tasksVerified
As you complete tasks you unlock new rooms and more furniture opportunities
Claimed on Devposthigh confidencescripts/locked_room.gd:33— unlock() enables the room's unlock button once global.finished_tasks >= required_tasks, and _on_button_pressed loads the next room_layout scenescripts/global.gd:5— global.finished_tasks is incremented on task completion and referenced by locked_room.gd's unlock condition
Semantic/spatial task memory via ChromaDBCode-supported
Research on spatial memory attaching progress tracking to object formation; semantic recall for contextual suggestions
Claimed on Devpostmedium confidencebackends/app/services/chroma_service.py:119— search_memory embeds and queries a ChromaDB collection of todos for semantic recall, but this backend service is not called from the actual Godot game scripts (no HTTP calls to the backend found in scripts/)
Godot game integrates live with the Python backend (REST/MCP/agent-relay)Claimed only
Implied by README framing that the Godot game plus Python services work together (docs/GodotIntegration.md describes HTTPRequest calls from Godot to the FastAPI backend)
Claimed on readmehigh confidenceroom_layout.gd ties task progress to world building / furniture.gd manages placementClaimed only
Completed tasks instantiate corresponding furniture objects within room_layout.gd, while furniture.gd manages placement
Claimed on readmehigh confidence
An AI agent derived these features from the project’s Devpost page and readme, then searched the code for each one. Verified features are backed by cited code; claimed-only features had no supporting code, which is not by itself proof a feature is missing.
Export this project's context (description, README, evidence, key source files) to chat with an AI agent elsewhere.