Internal task manager for RS PCB Assembly — a self-hosted, multi-user, RS-branded Todoist clone for the office and shop floor.
Built on a fork of todovex by Ankita Kulkarni (MIT).
- Next.js 14 (App Router) + React 18 + TypeScript
- Convex — realtime database & serverless functions
- NextAuth v5 (Auth.js) with Google OAuth, locked to
@rspcbassembly.com - AI — Claude via Vercel AI Gateway (planned; OpenAI integration removed)
- Tailwind CSS + shadcn/ui
- React Hook Form + Zod
- Tauri 2 (planned) — Windows + macOS desktop wrappers
- Vercel — hosting
npm install
npx convex dev # one-time: links to Convex deployment, sets CONVEX_DEPLOYMENT + NEXT_PUBLIC_CONVEX_URL
npm run devCopy .env.sample to .env.local and fill in:
| Variable | Purpose |
|---|---|
CONVEX_DEPLOYMENT |
Set by npx convex dev |
NEXT_PUBLIC_CONVEX_URL |
Set by npx convex dev |
CONVEX_AUTH_PRIVATE_KEY |
Generated by node generateKeys.mjs |
JWKS |
Generated by node generateKeys.mjs |
AUTH_SECRET |
npx auth secret |
CONVEX_AUTH_ADAPTER_SECRET |
Random 32-char string |
GOOGLE_CLIENT_ID |
Google Cloud OAuth client |
GOOGLE_CLIENT_SECRET |
Google Cloud OAuth client |
RS_TASKS_ALLOWED_DOMAIN |
Defaults to rspcbassembly.com. Override if needed. |
- Google Cloud Console → APIs & Services → Credentials → Create OAuth Client ID (Web app).
- Authorized redirect URIs:
http://localhost:3000/api/auth/callback/googlehttps://tasks.rspcbassembly.com/api/auth/callback/google(prod)
- Paste client ID + secret into
.env.local.
Only Google accounts on @rspcbassembly.com can complete sign-in. Enforced server-side in auth.ts signIn callback and configurable via RS_TASKS_ALLOWED_DOMAIN.
MIT — upstream code is © Ankita Kulkarni; modifications © R.S. Électronique Inc.