SlackFlow Mini is a NestJS-based backend application designed to manage support requests, tickets, and Service Level Agreements (SLAs), with integration capabilities for Slack.
- Request Management: Handle incoming support requests.
- Ticket System: Convert requests into tracking tickets.
- SLA Tracking: Monitor SLA status (Active, Paused, Breached, Completed) for tickets.
- Slack Integration: (Module structure present) Integration points for Slack interactions.
- Prisma ORM: Robust database interaction using Prisma with PostgreSQL.
- NestJS - A progressive Node.js framework.
- Prisma - Next-generation Node.js and TypeScript ORM.
- PostgreSQL - Open Source Relational Database.
- TypeScript - Typed superset of JavaScript.
- Node.js (v18 or later recommended)
- npm or yarn
- PostgreSQL database instance
graph TD
User((User)) -->|/slack/request| Request[Request Created<br/>Status: OPEN]
subgraph "Acceptance Flow"
Request -->|/slack/accept| Transaction1{Transaction}
Transaction1 -->|Success| Ticket[Ticket Created<br/>Status: ACTIVE]
Transaction1 -->|Success| SLA[SLA Started<br/>Status: ACTIVE]
Transaction1 -->|Success| ReqUpdate[Request Updated<br/>Status: ACCEPTED]
Transaction1 -->|Fail| Rollback1[Rollback]
end
subgraph "Resolution Flow"
ReqUpdate -->|/slack/resolve| Transaction2{Transaction}
Ticket -->|/slack/resolve| Transaction2
Transaction2 -->|Success| TicketResolved[Ticket Resolved<br/>Status: RESOLVED]
Transaction2 -->|Success| SLACompleted[SLA Completed<br/>Status: COMPLETED]
Transaction2 -->|Success| RequestClosed[Request Closed<br/>Status: CLOSED]
Transaction2 -->|Fail| Rollback2[Rollback]
end
-
Clone the repository
git clone <repository-url> cd slackflow-mini
-
Install dependencies
npm install
-
Environment Setup Create a
.envfile in the root directory (copy from example if available, or set manually):DATABASE_URL="postgresql://user:password@localhost:5432/slackflow?schema=public" -
Database Setup Run Prisma migrations to set up your database schema:
npx prisma migrate dev
-
Development
npm run start:dev
-
Production
npm run build npm run start:prod
src/requests: Handles incoming user requests.src/tickets: Manages tickets created from requests.src/sla: Service Level Agreement tracking logic.src/slack: Slack integration module.prisma/schema.prisma: Database schema definition.
- Linting:
npm run lint - Formatting:
npm run format - Testing:
npm run test
- Concurrent request acceptance by multiple agents
- Duplicate Slack events due to retries
- Partial failures during request resolution
- SLA drift caused by delayed background jobs
The system relies on database constraints, transactions, and timestamp-based calculations to remain correct under these conditions.