DeliverIQ is a full-stack bulk messaging system that enables users to manage contacts, compose messages, and send them in bulk while ensuring delivery tracking. The system is designed for scalability, fault-tolerance, and performance using Next.js, NestJS, PostgreSQL, Redis, and Prisma ORM.
- Modern React-based UI with Next.js App Router.
- Secure JWT authentication (Login / Signup).
- Contact management (Add / Edit / Delete).
- Compose and send bulk messages.
- View message status (Pending, Processing, Sent, Failed).
- Fully responsive with Tailwind CSS.
- RESTful API with NestJS.
- PostgreSQL + Prisma ORM for relational data.
- BullMQ + Redis for background job queue & caching.(wire exponential backoff for the queue)
- Authentication & authorization with JWT.
- Message processing pipeline with retry mechanism.
- Scalable architecture with Docker support.
- Frontend: Next.js 14, React, Tailwind CSS
- Backend: NestJS, Prisma ORM, TypeScript
- Database: PostgreSQL 15
- Cache / Queue: Redis 7
- Containerization: Docker & Docker Compose
- Auth: JWT-based authentication
- Package Manager: npm / yarn / pnpm
DeliverIQ/
│── backend/ # NestJS backend
│ ├── prisma/ # Prisma schema & migrations
│ ├── src/ # NestJS modules & controllers
│ ├── .env.example # Backend environment variables
│ └── README.md # Backend-specific docs
│
│── frontend/ # Next.js frontend
│ ├── app/ # Next.js app router
│ ├── components/ # UI components
│ ├── lib/ # API helpers & utils
│ ├── .env.example # Frontend environment variables
│ └── README.md # Frontend-specific docs
│
│── docker-compose.yml # Docker services for Postgres & Redis
│── README.md # Main documentation
git clone https://github.com/sahil352005/DeliverIQ.git
cd deliveriqcd backend
cp .env.example .env
npm installnpm run prisma:generate
npm run prisma:migratenpm run start:devBackend runs on 👉 http://localhost:3000/api
cd frontend
cp .env.example .env
npm installnpm run devFrontend runs on 👉 http://localhost:3001
At the project root:
docker compose up -d- PostgreSQL →
localhost:5433 - Redis →
localhost:6379
PORT=3000
DB_HOST=localhost
DB_PORT=5433
DB_USER=postgres
DB_PASSWORD=postgres
DB_NAME=deliveriq
DATABASE_URL="postgresql://postgres:postgres@localhost:5433/deliveriq?schema=public"
REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_DB=0
JWT_SECRET=dev_secret
JWT_EXPIRES_IN=1dNEXT_PUBLIC_API_URL=http://localhost:3000/api
NEXT_PUBLIC_APP_NAME=DeliverIQ- User: Stores user info and authentication data.
- Contact: Manages user-specific contacts.
- Message: Tracks bulk messages and their statuses.
- MessageStatus Enum:
PENDING | PROCESSING | SENT | FAILED
- User logs in & adds contacts.
- User composes a message & sends.
- Backend pushes the job to Redis Queue.
- Worker processes the job & updates Postgres with message status.
- Frontend fetches & displays status in real-time.
- ✅ Real-time updates with WebSockets.
- ✅ Integration with Twilio / WhatsApp API for actual delivery.
- ✅ Role-based access (Admin / User).
- ✅ Analytics dashboard for message insights.
npm run start:dev→ Start dev servernpm run prisma:studio→ Open Prisma Studionpm run prisma:migrate→ Run migrations
npm run dev→ Start dev servernpm run build→ Build production appnpm run start→ Start production server
- Docker Compose for local setup.
- Deploy on Vercel (Frontend) + Render / Railway (Backend + DB + Redis).