Callu is a real-time community platform with:
- a Next.js web app
- a Node/Express-style server entrypoint for sockets and background tasks
- an Electron/Vite desktop app in
callu-desktop/
- Node.js 20+
- npm 10+
- MongoDB
- Resend account for email delivery
- ImageKit account for chat uploads
npm installCreate a .env file in the repository root with the needed values:
MONGODB_URI=
NEXT_PUBLIC_URL=
ADMIN_ID=
ADMIN_PASSWORD=
RESEND_API_KEY=
RESEND_FROM_EMAIL=
OTP_BCC_EMAIL=
IMAGEKIT_PUBLIC_KEY=
IMAGEKIT_PRIVATE_KEY=
IMAGEKIT_URL_ENDPOINT=
GH_TOKEN=NEXT_PUBLIC_URL should point to the deployed web app in production.
npm run dev- start the web app and server in developmentnpm run build- build the Next.js app and compileserver.tsnpm run start- start the compiled servernpm run lint- run ESLintnpm run seed- seed the database
From callu-desktop/:
npm run dev- start the Vite appnpm run build- build the web bundle and Electron TypeScriptnpm run electron:dev- run Vite and Electron togethernpm run electron:build- create a packaged desktop build
app/- Next.js routes, API routes, and dashboard pagescomponents/- shared React componentscontext/- client state providerslib/- server utilities, database, and email helpersmodels/- MongoDB modelspublic/- static assetsserver.ts- custom server bootstrapcallu-desktop/- desktop application source
- Start MongoDB.
- Set the environment variables above.
- Run
npm run dev. - Open
http://localhost:3000.
The repository includes render.yaml for Render deployment. Make sure the production environment sets the same variables listed above.