Repository navigation
Blender AI Tutor
Build a personal website that teaches Blender through each user's own projects. A project collects goals, milestones, progress and preferences in a shared memory. Each chat pairs one project with one persona, a character with its own manner of speech, such as Mr. Tee. The tutor searches the official Blender Reference Manual and cites the sections it uses. The site runs on Vercel. Owner: Axlog.
Version 1 is done when these work on the Vercel URL:
- Invited users sign up with the invite code and their email, and sign in by an emailed link. Every page and API route needs a session (
passphrase-gated-email-sign-in). - Each user's data is private (
private-user-data), and each user has a $5 monthly Claude quota (claude-spend-quota). - Creating a project starts an interview chat that writes the project memory, including goals and milestones.
- Creating a chat means choosing a project and a persona: Hippy, Mr. Tee, Fjord Tines, Span Tines, Argon Sprangler or Roland Dustchain (
persona-spoof-names). An existing chat can be reopened. Every chat receives its project's memory. - Users clone and edit personas as text (
personas-as-text). - The tutor searches the 5.3 manual, and each factual claim links to a real manual section.
- The tutor updates the memory during chats. The user can view, edit and undo memory changes.
- Haiku names each chat, and the user can rename it (
haiku-chat-names). - One command rebuilds the index when a new stable Blender release ships.
- Every use case in
use-cases/has a passing test.
The decision names above are entries on the Decisions page.
-
The repo, this wiki and GitHub issues are the source of truth. This page was the build's working plan until 2026-10-12 (Axlog) and holds only what they don't. It moved here from Axlog's notes on 2026-10-13. Repo:
github.com/axolotl-logic/project-buddy, cloned wherever you keep repos.- Code, test and production rules:
CONTRIBUTING.md.AGENTS.mdpoints agents to it and to Decisions. - Design decisions and what they rejected: Decisions, one page per area.
- How to run the app and the tests:
README.md. - Work and results: GitHub issues on the "version 1" milestone, labelled by stage (
stage: personas,stage: deploy-v1,stage: accounts) andproduct-note.
- Code, test and production rules:
-
The issue pipeline does the work. It takes every open issue from a collaborator and merges without a human; how it works and the rules it follows are on the Issue pipeline page, and running it on Running the issue pipeline. Every merge to
maindeploys to production. - Axlog decides. Design choices, failed gates and rule conflicts go to her with options and a recommendation. Her rulings are recorded as "(Axlog, )", with the options she rejected.
- Production holds Axlog's real account. Never read or write her rows. One Neon database serves Production, Preview and Development.
-
Secrets:
.env(INVITE_CODE,RESEND_API_KEY) and.env.local(the pulled Vercel variables, includingDATABASE_URL) are gitignored. Never print a.env*file; read one variable withnode --env-file. Vercel holdsINVITE_CODE,ANTHROPIC_API_KEY,SESSION_SECRETandRESEND_API_KEY. The Resend key was once pasted into a chat; Axlog chose not to rotate it. -
Operational notes not yet in the repo (to move into the README; see
repo-tooling-notes):- Vercel project
project-buddy.vercel linkwrites its IDs to.vercel/project.json(projectId, andorgIdfor the owning team), which git ignores; tools that need them readVERCEL_PROJECT_IDandVERCEL_ORG_ID. Production:https://project-buddy-rust.vercel.app. Team aliases sit behind Vercel SSO. -
vercel env pullreturns sensitive variables as empty strings. -
vercel logs --followmisses lines written inafter(), such as[tutor-steps]. Query with--deployment <dpl> --since <start> --until <end> --json. - A push to
mainonce got no Vercel deployment (3f6e57f), and GitHub shows no commit status, so only Vercel's API links a deployment to its commit. - Turbopack's build fails when
node_modulesis a symlink (unlink node_modules && npm ci). - If Docker Desktop's credential helper hangs pulling the test database images, pull with a credential-free
DOCKER_CONFIG. -
npm run manual:reindexpeaks at about 450–510 MB and writes about 8,974 sections.
- Vercel project
-
History: stage briefs, reports, diffs and screenshots are in
../project-buddy-worktrees/(<stage>-briefs/,<stage>-*.md). Retrospectives are on Retrospectives. The old orchestration rules ("How the build runs", "Agent roles") are on How the build runs.
- Stages before accounts: infrastructure, the manual index, strict tooling, the tutor core, search and citations, project memory, error surfaces, the interview and chat names, themes and the Radix redesign, persona names, lane splitting, and the chat UI with mobile support.
-
accounts-and-quotas: released in two parts. Rounds 1 and 2 were released on 2026-10-13, deploymentdpl_u4e8YB3UhcwGFFexCAJi34LWb1EL. Rounds 3 and 4 were released asa1f0bd0, deploymentdpl_CvwEAmBvVr8iJRJX6ZYBm68261d6, with migration0006. The sweep and cleanup passed. -
Move to the repo and issues (2026-10-13): the repo's rule and decision docs were written,
INVITE_CODEreplacedSITE_PASSPHRASE, the order markers were set, and production migrates in its build (96149b0,migrate-on-production-build). - Pipeline merges (2026-10-13): #17, #19, #20, #21, #23, #24, #25, #27–#36, #49, #51, #52, #54, #56, #57, #60–#63, and #78–#80, the sub-issues #26 was split into.
-
personas-and-prompts: done. #25 (persona store), #26 (persona editor, as #78–#80), #27 (interview at creation) and #30 merged.
Issues in GitHub are authoritative; this list is as of 2026-10-13 22:50Z.
-
deploy-v1: #32–#36 merged. Next is #37, the deploy and real-Claude smoke test, which needs #74 first. -
Waiting on Axlog's answers on the issue (
agent:needs-info): #48 (memory size cap), #50 (Blender add-on), #53 (splitreply-test-kit.tsonly if needed), #58 (LocalTimeplaceholder width). -
release-workflow(#74 and #148 merged): one GitHub Actions workflow releasesmainwhen a deploy ticket (an issue labelleddeploy) asks: build without going live, migrate, go live, smoke test, report on the ticket. Nothing deploys automatically. Pushing workflow changes needs a token with theworkflowscope (gh auth refresh -h github.com -s workflow). No release has passed yet: the first, on push of 55ac0c1, hit Vercel's daily deployment limit (#147). -
integration-branch(PR #150 merged, 2026-10-14): PRs merge intointegration, whose every push deploys a Vercel preview and smoke-tests it.scripts/deploy.shfast-forwardsmainto a testedintegrationcommit and opens a deploy ticket. -
definition-of-done-in-repo(not started; offered to Axlog): copy the Goal's version 1 list into #37 or a wiki page. #37 still says "the plan's Goal". -
repo-tooling-notes(not started; offered to Axlog): move the operational notes under Constraints & Preferences into the README or a wiki page. -
Triage of the old parked issues (2026-10-13): Axlog removed
agent:skipfrom every issue, and the label is gone. The pipeline rejected #16 (retrospective) and #18 (WebKit flake, not reproduced); #22, #37, #59 and the product notes (#38–#45, #47) are queued for triage. #48 and #50 left the version 1 milestone.
-
production-check-after-merge: Axlog to choose whether production gets a cheap check after each merge, or only the real-Claude smoke test in #37.personas-and-prompts-rulingsexpects each release's smoke test to recordcacheRead/cacheWritefor an edited persona, and per-merge releases have no such test. #74's smoke test covers only signed-out requests.
Every product, design and tooling decision is on Decisions, which is authoritative.
Work moved from this plan to GitHub issues and the repo's docs (Axlog, 2026-10-12), and from the orchestrator's staged lanes to the issue pipeline. This replaces delegated-staged-build.
Production is released by one GitHub Actions workflow, with Vercel's own Git deploys off (Axlog, 2026-10-13; #74). Since 2026-10-14 it runs only from a deploy ticket, never on push (#148). Rejected: migrating inside the Vercel build long term, migrating after the deploy is live, the pipeline migrating at merge (it misses hand merges), and migrating at app start-up. Migrations must work with the live build. The decision is release-workflow.
PRs merge into integration; each push there deploys a Vercel preview and smoke-tests it. Production runs main, which only scripts/deploy.sh moves, to a tested integration commit, before it opens a deploy ticket (Axlog, 2026-10-14; PR #150). The decision is integration-branch.