This project is designed to automate your tasks using a custom workflow similar to Zapier. It leverages modern web technologies to provide a seamless experience for creating and managing automated workflows.
First, Install the dependencies
yarn
run the development server:
yarn dev
- Next.js 14: React framework for client-side application
- TailwindCSS: For styling and UI components
- ShadcnUI: For pre-built accessible components
- Node.js + Express.js: For server-side application
- Prisma ORM: For database management and queries
- PostgreSQL: As the relational database
- Apache Kafka
- Message broker for async communication
- Event streaming between microservices
- Reliable message delivery with topic partitioning
- JWT: Token-based authentication (Access + Refresh tokens)
- Passport.js: OAuth integration
- Google OAuth2.0
- GitHub OAuth
- Implements Transactional Outbox pattern
- Monitors outbox table for new events
- Ensures reliable message delivery
- Responsibilities:
- Extract events from outbox table
- Publish to Kafka topics
- Handle failed publications
- Maintain delivery ordering
- Prevent dual-write problems
- Processes workflow executions
- Handles different notification types
- Manages integration endpoints
- Responsibilities:
- Consume Kafka events
- Execute workflow actions
- Slack notifications
- Discord messages
- Email sending
- Handle execution failures
- Maintain execution logs
- Slack: Workspace and channel management
- Discord: Server and channel integration
- Webhook: Custom HTTP endpoints
- TypeScript: For type safety
- ESLint: Code linting
- Prettier: Code formatting
- Turborepo: Monorepo management
A[Webhook Event] --> B[Webhook Service]
B --> C[(Database)]
C --> D[Sweeper Service]
D --> E[Kafka]
E --> F[Processor Service]
F --> G[External Services]
- Client: http://localhost:3000
- Backend: http://localhost:8000
- Hooks: http://localhost:8080
- Kafka: http://localhost:9092
- DB: 5432
This Turborepo includes the following packages/apps:
client
: another Next.js appserver
: a Node.js apphooks
: another Node.js appSweeper
: another Next.js app@repo/ui
: a stub React component library shared by bothweb
anddocs
applications@repo/eslint-config
:eslint
configurations (includeseslint-config-next
andeslint-config-prettier
)@repo/typescript-config
:tsconfig.json
s used throughout the monorepo
To build all apps and packages, run the following command:
cd my-turborepo
yarn build
To develop all apps and packages, run the following command:
cd my-turborepo
yarn dev