Project-first viewer + action layer is live; watch the create/archive/remove flows before adding more editing controls.
Brain
Server-rendered viewer for every project's BRAIN.md, mounted at `/brain` and brain.lucaslongo.com.
projects/brain/BRAIN.md · raw
Focus
2**v2 (epic #152)** shipped — to switch deployed edits to durable git commits, provision the GitHub App per docs/brain-github-app-setup.md and set `BRAIN_STORAGE=github`.
Next
2Make project tags clickable to their repo URL
Consider a `/brain/api/projects/:slug` endpoint returning parsed JSON
Blocked
0No blockers.
Recent
8dragging a card between columns now moves it between BRAIN sections (promote/demote/block), with the 3-item Current focus cap enforced (#356)
write endpoints return a clear 502 on storage/credential failure, and GitHub App token errors say which step 404'd (#350)
dragging a card to reorder Focus/Next/Blocked now persists the new order back to BRAIN.md (#159), completing epic #152 Phase A+B
remote BRAIN edits gated behind the Google OAuth admin allowlist, with a GitHub App installation-token source for the durable backend (setup in docs/brain-github-app-setup.md) (#158)
reads/writes now go through a storage layer (filesystem locally, GitHub commit-per-edit when deployed) so remote edits can be durable (#157)
board renames Done to Recent and adds a raw-markdown route/link per project (#156)
each project board now shows its Ideas and Open questions (with a decide tag) instead of hiding them (#155)
viewer landing is now a scannable cross-project overview with root focus pinned and click-through to each board (#154)
Ideas
2- Inline-edit a BRAIN.md from the viewer
- Optional Slack/email digest of yesterday's "Last touched" across all projects
Open questions
1- decideServer-render vs client-side fetch for live updates after quick capture?
eduardolongo.com
Architect/artist site for Eduardo Longo (Casa Bola) — the redesign lives under `/new/`.
projects/eduardolongo.com/BRAIN.md · raw
Focus
2**Amuseum (Casa Bola visitation)** — Calculadora Interativa upgraded to the full venture planner: corporate structure + tax, seven toggleable revenue streams (ticket tiers, membership tiers), payroll/opex/startup budget, 5-year projection with payback, scen...
**Mídia archive** — paginated feed viewer with load-more and better previews for pulled social posts; Phase 2 press feeds + API keys (#208).
Next
3Stand up a dedicated GCP project + OAuth client for eduardolongo.com, then swap the bridge for per-host login
GCS-backed editable storage before handing edit mode to non-technical users on Cloud Run
Polish migrated project copy and images where placeholders remain
Blocked
0No blockers.
Recent
8/new: link Amuseum corrigido no site inteiro (template do navBar no build script + obras/midia à mão — o rótulo compartilhado nav.links.3 rebatizava o Contato de "Amuseum" nas páginas com 4 links); mockup live ganhou fotos reais da categoria Bolas na loja e...
Amuseum: mockup navegável do site live criado em /amuseum/live atrás do login (home, visite com compra de ingressos simulada, eventos com formulário, galeria, loja com sacola, sócios, sobre) — interface apenas, sem backend (refs #417).
Amuseum: site público lançado em /amuseum (visita, eventos, galeria, loja, sócios, patrocínio, digital, história) no lugar do teaser; plano de negócios movido para /amuseum/plano (admin) com assets do planner gateados; fotos públicas servidas host-agnóstica...
Amuseum: planner reorganized (Estrutura societária no topo, DRE + fontes à esquerda, equipe/custos/capital à direita, seção Análise embaixo, cenários no rodapé com Otimista incluído) e relatório reescrito com os números atuais dos três cenários (refs #413).
Amuseum: widened the page container to 1140px so the planner tables read on one line, with report prose capped at 76ch for readability (refs #411).
Amuseum planner: staffing is now stream-aware (roles live inside their revenue segment and leave the payroll when the segment is toggled off), visitation inputs became shared between ingressos and loja, and comped member visits can no longer push ticket rev...
Amuseum: public visitors now get an "Em breve" coming-soon page (blue sphere photo, PDB_27) instead of the login redirect; the business plan stays admin-only behind the same gate (refs #407).
Amuseum: replaced the simple calculator with the full Casa Bola venture planner (structure/tax, stream toggles with ticket and membership tiers, payroll, opex, startup capital, 5-year projection, scenario comparison, share/export) and pt-BR thousands separa...
Ideas
2- test
- tests3
Open questions
0No open questions.
iAi
Archive/museum site for iAi (Instituto de Artes Interativas), São Paulo 2008–2015.
projects/iai.art.br/BRAIN.md · raw
Focus
0No current focus.
Next
0Nothing queued.
Blocked
0No blockers.
Recent
4Blog cards now read in date order — row-ordered grid replaced the column masonry (#192)
removed leftover standalone-deploy artifacts; served only by lucaslongo-site
restored Google Sign-In on the iAi admin
migrated blog + admin from PHP to the Node admin API
Ideas
0No ideas captured.
Open questions
1- decideStandalone domain (`iai.art.br`) or subdomain (`iai.lucaslongo.com`)?
Jaqueline
One-pager (PT-BR) to sell a house in Serra Negra/SP — Jardim Yara, terreno 1.006 m².
projects/jaqueline/BRAIN.md · raw
Focus
0No current focus.
Next
1Add the anunciante's phone/WhatsApp to the Contato CTA (currently Google Maps only)
Blocked
0No blockers.
Recent
1Shipped the Serra Negra sales one-pager: hero, ambientes, 25-photo gallery with lightbox, two YouTube tours, served at `/serra-negra`
Ideas
0No ideas captured.
Open questions
0No open questions.
lucaslongo.com (apex)
My personal apex site + blog — the Node/Express Cloud Run router that also serves the other sites.
projects/lucaslongo.com/BRAIN.md · raw
Focus
1**#78 follow-ups** — admin editor (#108) + SQLite prod strategy (#109).
Next
3Wire a CI smoke test for `/`, `/blog`, `/iai/`, `/admin` before each Cloud Run deploy
#108 — upgrade the blog admin editor (WYSIWYG, image picker, preview)
#109 — blog SQLite persistence strategy for Cloud Run prod
Blocked
0No blockers.
Recent
8housesale v2: wall recovery/financing, winter-sale timing, rental depreciation and verified market defaults folded in from the Excel dashboard (#383)
House Sale Decision Simulator live at `/housesale` — keep-vs-sell strategies with Monte Carlo, break-evens and saved scenarios
housesale, retaining-wall, drilux sources moved under `projects/lucaslongo.com/subsites/`; added explicit mounts + /drilux/ placeholder; URLs/routes unchanged (refs #401)
retaining-wall HTML moved under `projects/lucaslongo.com/retaining-wall/`
Admin Google login page stripped to a bare white sign-in — no site chrome (#194)
Blog cards now read in date order — row-ordered grid replaced the column masonry (#192)
Editable nav dropped the "Log out" button — Edit stays, logout lives in the admin dashboard (#189)
contact section → explicit 2×2 grid; start.command auto-runs npm install (#150)
Ideas
3- Pre-commit hook that runs `brain:clean`
- CI smoke test that boots the Docker image and curls a fixed set of routes
- teste
Open questions
0No open questions.
ocainteriors.com
Interior design studio site — new project, repo scaffolding in place.
projects/ocainteriors.com/BRAIN.md · raw
Focus
1Live at `lucaslongo.com/ocainteriors`: Home, About, Services, Projects, Gallery, Contact, all wired and deployed
Next
4Wire the Contact form to an actual send endpoint (currently UI-only, no backend)
Set up `info@ocainteriors.com` via Cloudflare Email Routing (catch-all → lucaslongo@gmail.com)
Move to own domain + standalone Cloud Run service when ready
Confirm photo usage rights for the Live Oak Residence photography (© Frank Garnica) before any external/production use
Blocked
0No blockers.
Recent
8generalized editor (fieldKey/isHtmlField/editableEls + css for [data-edit-html] bounding boxes) to support mixed data-edit patterns across sites including amuseum (refs #396 #398).
fixed missing Login/Edit buttons in footer: editor init could run before React Footer mounted the [data-edit-auth] slot; now refresh() also calls renderHeaderAuth(), added useEffect + load + multiple setTimeout nudges in Footer/App/index.html, explicit colo...
added Elena's real headshot to the About page, replacing the interior-photo placeholder
fixed two deploy bugs that kept the site 404ing after launch: `projects/ocainteriors.com/**` was missing from the Cloud Run path trigger, and the root Dockerfile never COPYd the directory into the image at all
added a real About/Team page (matching the live production ocainteriors.com content — firm intro + Elena's bio) that the Claude Design export didn't include; nav "About" link now points to it instead of Home
implemented the real site from the Claude Design export (React + in-browser Babel, no build step): Home, Services, Projects, Gallery, Contact pages with real photography and the OCA component library; served as static assets under /ocainteriors
switched to path-mount on lucaslongo-site at /ocainteriors (server.js OCA_ROOT); removed standalone Cloud Run workflow
added Dockerfile, deploy workflow, placeholder index.html; deploy strategy set to standalone Cloud Run service
Ideas
0No ideas captured.
Open questions
0No open questions.
textures.design
Static gallery site for a friend, served from the shared Cloud Run image.
projects/textures.design/BRAIN.md · raw
Focus
0No current focus.
Next
1Move the static deliverable into `public/` (same shape as adrianacarioba.com)
Blocked
0No blockers.
Recent
4tidied the auto-reply Worker setup; repo now ignores local Wrangler output (#61)
email auto-reply Worker live: contact@ replies + forwards to textures.sb@gmail.com (#61)
retired the per-project Dockerfile/workflow; served by lucaslongo-site host routing
live on GCP + Cloudflare catch-all mail; Namecheap hosting retired
Ideas
0No ideas captured.
Open questions
0No open questions.
YNAB
Web-hosted admin dashboard that imports Amazon receipts from Gmail, matches and categorizes them (with AI), and updates YNAB — served at lucaslongo.com/ynab. The product focus is the hosted Gmail → YNAB flow plus unattended MCP automation.
projects/ynab/BRAIN.md · raw
Focus
1Web-hosted YNAB Amazon categorizer at /ynab with simplified review table, rich memos, and MCP-driven automation.
Next
2Audit every endpoint that mutates `transaction_review_state` (zombie rows in review)
Add fixtures when live Gmail emails fail to parse
Blocked
1Official Amazon export is async (1–3 days)
Recent
8Stopped the activity popover from being wiped right after a Gmail scan: the post-scan loadUnifiedRows() called note() (which clears the log), erasing the scan summary; loadUnifiedRows now has a quiet mode and the scan uses it, so the summary stays until the...
Fixed the Gmail scan silently failing on production: the client's NDJSON parser was swallowing server-sent error events (the throw landed in the same try/catch that ignores unparseable lines), so failures like an expired Gmail refresh token showed no feedba...
YNAB: added dedicated resizable "New memo" column to review table (product summary + clickable Gmail deep-link + suggested category) when gmail scan data present; Memo column always renders plain YNAB text (no regression) fulfilling #309 spec (refs #309).
Replaced the pinned bottom scan/status strip with a closable (×) activity popover and made its log human-readable: Gmail query syntax is rewritten into plain language (what's searched, date range, merchant/product keywords) and timing/internal noise is drop...
Expanded Scan Gmail / per-txn Gmail lookup to non-Amazon merchants: top merchants helper, payee-seeded searches, generic receipt amount extraction, relaxed guards, lightweight match records, UI copy updates, frequent merchants surfaced in scan logs (refs #3...
Reconfigured the dashboard command buttons: merged "Scan Gmail (full ~2yr)" + "Check New Emails" into one "Scan Gmail" button with a Recent/Full lookback selector, removed the redundant "Backfill sources" and "Reupload memos" buttons (the full scan already ...
Targeted "Check new emails" scan now auto-pushes the canonical Amazon memo (product + direct-open Gmail link + current category) to YNAB via reuploadMatchedAmazonMemos, matching the full scan — no separate Reupload step needed (refs #315).
Folded the "New memo" column's structured render (products, clickable Gmail link, suggested category) into the regular Memo column and removed the separate "New memo" column; plain memo text retained as fallback for non-scanned rows (refs #313).
Ideas
2- "Freeze" command to snapshot the DB before bulk operations
- Surface all-time stats on fixes pushed back to YNAB
Open questions
0No open questions.