Akasha is a private visual-reference library. Capture images and showcase videos from the browser extension, organize them into nested folders, and browse the same Google Drive-backed collection on the web.
apps/web— TanStack Start web application and server routesextension— WXT Manifest V3 browser extensionpackages/contracts— shared Zod schemas and folder utilitiesdesign-system/stillroom— product design-system guidancedesign/mockups— visual direction artifacts
The web app's server functions and API routes are the backend for v1, so a separate backend workspace is not needed.
Install dependencies:
bun installCreate the web environment:
cp apps/web/.env.example apps/web/.env.localEnable the Google Drive API in a Google Cloud project, create a web OAuth client, and register http://localhost:3000/api/auth/google/callback as an authorized redirect URI. Add that client ID and secret to apps/web/.env.local, then generate a session secret of at least 32 characters.
Create the extension environment:
cp extension/.env.example extension/.env.localWXT_AKASHA_API_URL points to http://localhost:3000 during development. Set it to the deployed Akasha origin for production builds.
The extension authenticates through the Akasha backend and stores a 90-day encrypted device credential. Google refresh tokens remain server-controlled and all Drive operations use the web OAuth client's drive.file scope, limiting Akasha to files and folders it creates or opens through the app.
Run the web app:
bun run dev:webRun the extension development build:
bun run dev:extensionThe web preview is available at http://localhost:3000. WXT writes the unpacked Chrome build to extension/.output/chrome-mv3.
bun run typecheck
bun run test
bun run lint
bun run e2e
bun run buildPlaywright covers the responsive library, search, folder navigation, and selection states in desktop and mobile Chromium.
Deploy the web project from this repository with these Vercel settings:
- Root Directory:
apps/web - Framework Preset: Other
- Build Command:
bun run build - Output Directory: leave unset
- Install Command: leave on automatic detection
Add these Production environment variables in Vercel:
GOOGLE_CLIENT_ID
GOOGLE_CLIENT_SECRET
GOOGLE_REDIRECT_URI=https://your-production-domain/api/auth/google/callback
SESSION_SECRET
SESSION_SECRET must contain at least 32 characters. Add the exact production callback URL to the Google Cloud web OAuth client's authorized redirect URIs. If the OAuth consent screen remains in testing, add every intended user as a test user.
After the production origin is final, set WXT_AKASHA_API_URL to that origin when building the extension:
WXT_AKASHA_API_URL=https://your-production-domain bun run --cwd extension buildFor personal use, open chrome://extensions, enable Developer mode, choose Load unpacked, and select extension/.output/chrome-mv3. Rebuild and click Reload on the extensions page for each update. Chrome Web Store registration is only required for store distribution and automatic updates.