Skip to content
ITS-MSWPublic

About

A private visual-reference library with a browser extension and web app for organizing images and videos in Google Drive.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

115 Commits

Folders and files

Repository files navigation

Akasha

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.

Workspace

  • apps/web — TanStack Start web application and server routes
  • extension — WXT Manifest V3 browser extension
  • packages/contracts — shared Zod schemas and folder utilities
  • design-system/stillroom — product design-system guidance
  • design/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.

Setup

Install dependencies:

bun install

Create the web environment:

cp apps/web/.env.example apps/web/.env.local

Enable 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.local

WXT_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.

Development

Run the web app:

bun run dev:web

Run the extension development build:

bun run dev:extension

The web preview is available at http://localhost:3000. WXT writes the unpacked Chrome build to extension/.output/chrome-mv3.

Quality gates

bun run typecheck
bun run test
bun run lint
bun run e2e
bun run build

Playwright covers the responsive library, search, folder navigation, and selection states in desktop and mobile Chromium.

Production deployment

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 build

For 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.

About

A private visual-reference library with a browser extension and web app for organizing images and videos in Google Drive.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages