pnpm workspace monorepo for otterchat.
| Package | Path | Stack | Description |
|---|---|---|---|
otterchat |
apps/chat |
Next.js 16 + eve, Capacitor iOS/Android | The chat app. This is what deploys to Vercel. |
otterchat-twitter |
apps/twitter |
React 19 + Vite | Static X (Twitter) post-detail prototype featuring the otterchat account. |
Requires Node 24+ (eve's dev server refuses to start on older Node; vite's
rolldown bindings need ^20.19 || >=22.12) and pnpm 10.
pnpm install # installs every workspace package
pnpm dev # chat app → http://localhost:3000
pnpm dev:twitter # twitter prototype → http://localhost:5173
pnpm build # build the chat app (what Vercel runs)
pnpm build:all # build every package
pnpm typecheck # typecheck every package
pnpm lint # lint every packageAnything specific to one app can be run through a filter, or from inside its directory:
pnpm --filter otterchat-twitter build
cd apps/chat && pnpm devThe chat app's db:*, ios*, and android* scripts are also exposed at the
root and forward to apps/chat.
- Chat app:
apps/chat/README.md, plus setup and deployment and how the chatbot works. The provisioning script lives atapps/chat/scripts/setup.shand must be run fromapps/chat(it links the Vercel project to that directory). - Twitter prototype:
apps/twitter/README.md.
The Vercel project must have its Root Directory set to apps/chat
(Settings → Build & Deployment → Root Directory), with "Include files outside
the Root Directory" left enabled so the workspace lockfile is used. Vercel then
detects Next.js and builds the chat app as before.
A root vercel.json cannot substitute for this: framework detection reads the
package.json of the root directory, and the workspace root has no next
dependency.