Lattice
A workspace for your research.
Cortex: a read-only heads-up display for the Second Brain in Google Drive.
ProductivityJavaScript · CSSGitHub @WasteOfADrumBumOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
A heads-up display for the Second Brain in Google Drive. Plain HTML, CSS and JavaScript with no build step, plus two small Vercel functions for the planner. The dashboard only ever asks for read-only Drive access (drive.readonly) and nothing depends on a home PC.
Two views, switched from the top bar: Dashboard (index.html) and Planner (planner.html).Read the full README ↗A personal command center for the Second Brain in Google Drive. Plain HTML, CSS and JavaScript with no build step, plus small Vercel functions for the planner. The browser only ever asks for read-only Drive access (drive.readonly) and nothing depends on a home PC. The plan for version 2 is in docs/cortex-v2-spec.md.
Six tabs in the shared top bar, one clean URL each (vercel.json turns on cleanUrls), so every tab is linkable and the back button works. On screens narrower than 1100px the tabs fold into the menu button.
| Tab | Route | What it does today |
|---|---|---|
| Home | / | Today strip (date, time, weather with today's high and low), today's schedule with the largest open block, Second Brain summary, links to every tab and your quick links |
| Planner | /planner | Tasks, today, this week and this month (see below) |
| Finances | /finances | Placeholder until phase 4 |
| News | /news | Placeholder until phase 5 |
| Vault | /vault | Every note with its title and one-line summary (frontmatter name and description), type tag, filters, search and an in-app reader |
| Ops | /ops | Second Brain checklist (sweep and Muse check from Todoist), notes changed over 30 days (with a table view), Drive storage. Project cards arrive in phase 3 |
Every Home panel has a plain heading and ends with a link to the place that has the detail. Each source fails on its own: a broken weather or calendar feed shows a message in its own panel.
Signed out, Home, Finances, News, Vault and Ops show only a sign-in screen: no panels and no sample data. The Planner keeps its own dashboard key and shows nothing until the key and its routes work.
/demo)/demo is the portfolio version: every tab (/demo, /demo/planner, /demo/finances, /demo/news, /demo/vault, /demo/ops) runs the real pages with made-up sample data, so the layouts are the same as the real app on desktop and phone.
data-write="<what it does>" and the demo handles them.config.js.vercel.json rewrites the demo routes to the real pages and sends X-Robots-Tag: noindex. There is no sitemap. The old /?demo=1 link redirects to /demo.src/demo/. It uses the same TypeScript types as the real data (src/types.d.ts); npm test type-checks the demo data and the /api routes against them, so the two can't drift apart. Finances and News sample data is ready for phases 4 and 5.One screen with your Todoist tasks, today hour by hour (6 AM to 10 PM) with open time blocks, the week Sunday to Saturday on the same hours, and the month with event titles only.
@quick (under 45 minutes)@deep (45 minutes or more)Tasks labeled @system (automated, like "Brain sweep ran") are left out of every bucket, count and Home. Label names live in config/topics.json (size labels and topic labels); task-rules.js holds the shared rules Home and the Planner both use. A label in the config that doesn't exist in Todoist is ignored. Home's Top 3 shows each task's topics as text chips, and tasks with a private topic (@health, @money) show only as "Health task" or "Money task" there; full titles stay in the Planner. Until the API is set up, the planner says what is missing and shows no tasks; sample data is only on /demo/planner.
Set these in Vercel (Project → Settings → Environment Variables); .env.example explains each one:
TODOIST_TOKEN: Todoist → Settings → Integrations → Developer → API tokenGCAL_ICS_URLS: each Google Calendar's "Secret address in iCal format", comma-separated. Anyone with one of these URLs can read that calendar.DASH_KEY: any long random string. The planner asks for it once per device and remembers it there.Google's iCal feed can lag your live calendar by minutes to a few hours.
| File | Purpose |
|---|---|
index.html, home.js | Home tab |
vault.html, vault.js | Vault tab |
ops.html, ops.js | Ops tab |
finances.html, news.html, tab.js | Placeholder tabs |
planner.html, planner.css, planner.js | Planner tab |
header.js | Shared top bar and tab menu |
brain.js | Shared sign-in screen, Drive link, note types, titles and summaries |
src/demo/ | /demo: mode.js (banner, "Demo only" message, demo links and profile) and the sample data |
src/types.d.ts, tsconfig.json, test/ | Shared data types and the checks npm test runs (no build step) |
styles.css | Styling for every tab |
config/topics.json | Todoist size and topic labels, and which topics are private on Home |
task-rules.js | Shared task rules: labels, Critical, Planner buckets, Home title privacy |
config.js | Your settings: Google client ID, folder ID, weather location, quick links, routines |
hud.js | Ring clock and bar chart |
drive.js | Read-only Google Drive access |
weather.js | Weather from Open-Meteo |
api/tasks.js | Todoist tasks, labels, projects and sections for the Planner and Home (needs DASH_KEY) |
api/checks.js | Ops checklist health checks: the newest completion of "Brain sweep ran" and "Muse check ran" in the last 7 days, from Todoist's activity log (needs DASH_KEY) |
api/calendar.js | Google Calendar events from iCal feeds (needs ); also used by Home's schedule |
cortex-brain project to this repository (Settings → Git). No build command or output directory is needed; Vercel installs ical-expander for the calendar function from package.json..../auth/drive.readonly scope.https://cortex-brain-task-forge3.vercel.app)..apps.googleusercontent.com) into googleClientId in config.js. The client secret is not used.Aiming for WCAG 2.2 AA: one h1 per tab, landmarks and headings for every panel, a skip link, visible focus outlines, 44px touch targets, status shown with words and icons rather than colour alone, a table view for the activity chart, and animations switched off when the system asks for reduced motion.
DASH_KEYvercel.json | Clean URLs for the tabs, /demo routes and their noindex header |
.env.example | The three planner settings to set in Vercel |