All in the Tab is a browser-based IDE built with Next.js, Monaco, Prisma, NextAuth, and Yjs over Liveblocks. It includes project persistence, shareable project links, collaborative editing primitives, and a small Pusher-backed chat demo.
- Multi-language workspaces with a Monaco editor and runtime previews
- Google authentication with profile onboarding
- Postgres-backed project storage with share tokens
- Collaborative editing powered by Yjs over Liveblocks
- Marketing and dashboard flows for public profiles and projects
- Optional realtime chat demo at
/chatbacked by Pusher Channels
- Next.js 16 / React 19
- Prisma + PostgreSQL
- NextAuth with Google OAuth
- Monaco Editor
- Yjs +
@liveblocks/yjs - Pusher Channels for the chat demo
- Node.js 20.9.0 or newer
- npm
- PostgreSQL
- A Google OAuth client for sign-in
- A Pusher app if you want the
/chatdemo to work
- Clone the repository.
- Create a local env file from the template:
cp .env.example .env.local- Install dependencies:
npm install- Push the Prisma schema to your local database:
npm run db:push- Start the development server:
npm run dev- Open http://localhost:3000.
The project reads runtime configuration from .env.local or .env.
Required for the main app:
DATABASE_URLAUTH_GOOGLE_IDAUTH_GOOGLE_SECRETAUTH_SECRET
Required for the /chat demo:
PUSHER_APP_IDPUSHER_SECRETPUSHER_CLUSTERNEXT_PUBLIC_PUSHER_KEYNEXT_PUBLIC_PUSHER_CLUSTER
See .env.example for the expected shape.
- Prisma is configured for PostgreSQL.
npm installonly generates the Prisma client; it does not mutate your database.- Run
npm run db:pushexplicitly when you want to sync the schema to a local database.
npm run dev: starts the custom Node server for local developmentnpm run build: runs the Next.js production buildnpm run dist: builds Monaco assets intopublic/distnpm run start: serves the Monaco asset bundle with webpack dev servernpm run app:start: starts the production Node servernpm run lint: runs ESLintnpm test: runs the test suitenpm run db:push: applies the Prisma schema to your configured database
- The main collaborative editor uses Yjs with a Liveblocks provider.
- The
/chatroute is separate from editor collaboration, depends on Pusher, and requires sign-in to post messages. - If Pusher is not configured, avoid the
/chatroute or wire in your own credentials first.
Please do not open public issues for security reports. Follow the instructions in SECURITY.md.
This repository is licensed under the GNU General Public License v3.0 only. See LICENSE.