Inspiration

Common Moon brings together three sources of inspiration: a poem, a hackathon theme, and a growing world.

The first is Su Shi’s line “千里共婵娟,” which expresses the idea of sharing the same Moon even when separated by great distances. That image became the heart of our project: teammates working from different places, contributing to one shared world. Our interface echoes it with the phrase, “Under one moon, wherever we are.”

The second is HackWashU 2026’s theme, Fly Me to the Moon. We interpreted the journey as something a team accomplishes together, with each reviewed contribution helping build its destination.

The third is Before We Leave, whose tile-based worlds and growing settlements inspired our visual direction. We wanted individual contributions to become visible parts of a larger community. We did not use the game’s artwork.

Common Moon applies these ideas to a familiar problem for student teams and remote collaborators: work is scattered across messages and checklists, and individual effort can be hard to connect to shared progress.

What it does

Common Moon turns a team project into an interactive 3D Moon. Each reviewable task becomes a lunar sector with its own building.

During a focus session, a crew member and supply rover travel to the task’s site while construction gradually takes shape. The task owner then submits a description of the work or a deliverable link. Another teammate reviews the submission and either approves it or returns it with feedback.

Construction shows effort in progress; teammate approval confirms completion.

Only after approval does the building become a permanent contribution to the shared Moon. When every task is approved, the crew returns to Earth, concluding the project with a shared journey home.

The interactive sample lets visitors explore this workflow without an account. In one browser, they can switch between Planner and Reviewer roles, submit work, provide feedback, and reveal completed sectors.

The codebase also includes an optional Telegram AI planning assistant. Through /plan or a direct bot mention, a team can request suggestions based on its current project summary. The assistant can propose a next step, suggest a division of work, or offer an approach to a blocker. Humans remain responsible for creating, assigning, submitting, and approving tasks.

Current demo scope: The browser sample runs locally and does not call an AI model, Supabase, or Telegram. The live backend, messaging integration, and model connection require deployment configuration and end-to-end verification.

How we built it

At the center of Common Moon is a shared task state machine implemented in TypeScript. Its applyProjectAction function defines the project’s rules: tasks need acceptance criteria, every task must be assigned before launch, planning choices lock at launch, and a teammate must review the task owner’s work.

The web application and Telegram command handlers use this same logic, keeping their task behavior consistent.

The frontend uses React, TypeScript, TanStack Start, Vite, and Tailwind CSS. Server functions validate requests with Zod and connect the live project workflow to Supabase. Project members authenticate through long random tokens stored in HTTP-only cookies, while privileged database credentials remain on the server.

The Moon is rendered with Three.js and React Three Fiber over a Hexasphere grid of hexagonal and pentagonal tiles. The scene connects task selection, construction progress, and approval to corresponding locations on the globe.

For the interactive sample, we reuse the same task rules and save state in localStorage. Even the initial sample project is created by replaying real actions—adding, assigning, launching, submitting, and approving tasks. The construction preview is accelerated, while the focus accounting and review rules remain unchanged.

The standalone Telegram bot uses Photon Spectrum to receive messages. Its planning assistant sends a project summary and user question to a configurable OpenAI-compatible model endpoint. Model responses are returned as text suggestions and are not executed as project actions. Missing configuration or failed requests produce fallback guidance; that guidance is not a model-generated response.

The repository includes Vitest tests for task transitions, review permissions, command handling, geometry, and construction behavior.

Credits and existing resources

  • Lovable: The project is connected to Lovable for development and publishing.
  • NASA Scientific Visualization Studio: Moon textures from the Moon Kit and Earth imagery from NASA SVS.
  • Kenney: Four CC0 rocket components from the Space Kit, assembled and animated within the application.
  • Before We Leave: Inspiration for the tile-world and settlement-growth direction; no artwork from the game was used.
  • Open-source libraries: The frameworks and libraries listed above provide rendering, application infrastructure, validation, messaging, and testing.

Our contribution is the Common Moon task-to-world experience, its shared workflow rules, the construction and peer-review interaction, the browser simulation, and the optional project messaging assistant.

The repository also contains pre-existing CosLog functionality. Its photo-analysis and transcription features are separate from Common Moon and are not presented as this project’s AI contribution.

Challenges we ran into

Keeping the web interface and bot consistent

A task should follow the same rules whether someone interacts through the website or Telegram. We addressed this by centralizing task validation and transitions in one shared function, with each interface translating user input into the same project actions.

Making visual progress meaningful

A growing building can imply that work is finished before anyone has checked it. We separated focused effort, submitted work, and approved completion so that the visual reward reflects a clear stage in the collaboration process.

Creating an accessible demo without weakening the rules

The live experience depends on several external services. We built a browser-local sample so visitors could explore the core workflow without credentials or setup.

The challenge was preserving the product’s behavior while making it practical to demonstrate. The sample accelerates construction, but it still requires submission and cross-teammate review.

Handling incomplete external integration

Implementing an integration does not prove that it works in deployment. Supabase, Photon, Telegram, and the model endpoint require their own live verification. The local sample demonstrates the interaction design but cannot validate those network paths.

The current implementation also uses polling for project updates and does not send unsolicited Telegram notifications when someone changes a task on the website.

Accomplishments that we're proud of

We are proud of connecting a practical collaboration workflow to a shared world with a clear beginning, progression, and ending.

The Moon makes individual tasks part of a collective result. Focusing starts construction, submitting work invites another person into the process, and approval makes the contribution visible to the whole team.

On the engineering side, the same task rules support the browser experience, local simulation, and Telegram command path. This keeps the product’s central promise—work is reviewed by another teammate—consistent across interfaces.

We are also proud of making the core experience accessible through an account-free interactive sample. Visitors can explore both roles and understand the workflow without first configuring external services.

What we learned

Shared rules make multiple interfaces easier to maintain

Putting project behavior in one state-transition function gives the web application and bot a common foundation. It also makes important rules easier to test, including preventing self-approval and requiring assignments before launch.

Demo data can serve as executable documentation

Creating the sample through real project actions keeps it aligned with the workflow. The example project demonstrates how the system is meant to be used while exercising the same rules as other clients.

External services need graceful failure paths

The AI assistant has a bounded request timeout and fallback messages. This makes its availability understandable to users while keeping the core task workflow independent of a successful model response.

AI context and AI authority are separate design choices

The assistant can receive enough project context to suggest a useful next step without receiving permission to change tasks. Its current context is a compact summary, so it cannot independently inspect or verify submitted work.

A clear demo boundary matters

A local simulation, an implemented integration, and a verified live service demonstrate different things. Being explicit about those boundaries helps reviewers understand what they can experience today and what still needs validation.

What's next for Common Moon

Our first priority is to finish and verify the live deployment: connect real teammates through the backend, confirm Telegram communication through Photon Spectrum, configure the planning model, and record a successful end-to-end AI interaction.

Next, we want to improve the assistant’s context with acceptance criteria and detailed blocker information. That would let it offer more specific suggestions while keeping task changes and approvals under human control.

We also want to add useful notifications for submitted work, requested revisions, and blockers, so teammates know when their attention is needed.

Finally, we want to test Common Moon with student teams and remote collaborators. We want to learn whether the shared Moon helps people understand progress, request support, and provide more useful feedback. Those observations will guide improvements to onboarding, mobile interaction, and the project workflow.

Our goal is for every completed Moon to become a visible record of what a team built together—and how its members helped one another get there.

Built With

Share this project:

Updates

Submission history