NEXUS is designed to run entirely on free tiers for a hackathon submission, with a clear upgrade path when real usage arrives.
Socket Mode means the backend never needs an inbound public URL, which makes it deployable to almost any always-on Node.js host. Recommended free options:
backend/ to GitHub.backend..env.example under Variables.npm run build && npm start.npm install && npm run build. Start command: npm start..env.example.Switching to HTTP mode (production Slack event delivery): set
SLACK_SOCKET_MODE=false, deploy as a Web Service instead, and update your Slack app’s Event Subscriptions → Request URL tohttps://<your-host>/slack/events. No application code changes are required — Bolt handles both transports.
Static site, zero build step — deploy as-is.
frontend/public.index.html and dashboard.html are served directly.Already hosted — no deployment step. For production:
docs/ROADMAP.md); the current bot-only access pattern uses the service role key server-side, which is safe as long as that key never reaches the client.SLACK_SOCKET_MODE=false and Request URLs updated in Slack app configNODE_ENV=production| Stage | Users | Change needed |
|---|---|---|
| Hackathon demo | 1 workspace, <10 users | Current architecture as-is |
| Early adoption | <50 workspaces | Add connection pooling (Supabase Supavisor, already free-tier available) |
| Growth | 50–500 workspaces | Move reminder/digest polling from node-cron in-process to a dedicated worker + queue (BullMQ + Redis) so a backend restart can’t delay deliveries |
| Scale | 500+ workspaces | Introduce pgvector or a managed vector store for memory_entries search as keyword search’s precision degrades with per-user corpus size; move Groq calls behind a queue with concurrency limits |