Lattice
A workspace for your research.
Every Gmail label is a workspace; every email is a ticket.
Translation pending
ProductivityTypeScript · CSSGitHub @markybryOnlineOwner 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
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗An email client in the style of Sortd and Trello, run entirely off Gmail labels and emails.
Parent/Child names) with unread counts. Opening a label for the first time creates its workspace.Clients/JR work). Any email can be made into its own workspace: a new label nested under the current one, applied to the email."My tasks" lists every task across all your emails, grouped by due date.
Stack: Next.js 15 (App Router, server actions) · Prisma + Postgres · Gmail API (gmail.modify: read mail and change labels; never sends or deletes) · dnd-kit · Tailwind.
gmail.modify scope (the app reads mail and applies or removes labels; it never sends or deletes mail).https://<your-app>.vercel.app/api/auth/google/callbackhttp://localhost:3000/api/auth/google/callbackmain deploy to production; pull requests get preview deployments.DATABASE_URL, which the app uses for queries and migrations. Tick the Development environment too if you want vercel env pull to work locally.SESSION_SECRET, GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET and ALLOWED_EMAILS (see .env.example).vercel-build script runs prisma migrate deploy before building, so the database schema stays in step with each deploy.GitHub Actions (.github/workflows/ci.yml) lints, typechecks, checks that migrations apply and match the schema, and builds on every push and PR.
While the Google OAuth app is in "Testing" mode, Google expires refresh tokens after 7 days, so you'll need to sign in again weekly. Publishing the app (no verification is needed for a single user who accepts the warning) removes that limit.
Preview deployments use the same database as production (the integration connects both). Any PR that changes the schema will migrate the shared database when its preview builds, so be careful with destructive migrations, or connect a separate database to Preview.
npm install
cp .env.example .env # or: vercel link && vercel env pull .env
npx prisma migrate deploy
npm run dev
Leave GOOGLE_CLIENT_ID blank to use demo mode with sample emails.
To change the schema, edit prisma/schema.prisma and then run npm run db:migrate -- --name <change>. Commit the generated migration.