Skip to content

senthil-athiban/forge-flow

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Forge flow

Forge flow

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.

Architecture

Architecture Diagram

Demo

Watch Demo Video

Getting Started

First, Install the dependencies

yarn

run the development server:

yarn dev

Tech Stack

Frontend

  • Next.js 14: React framework for client-side application
  • TailwindCSS: For styling and UI components
  • ShadcnUI: For pre-built accessible components

Backend

  • Node.js + Express.js: For server-side application
  • Prisma ORM: For database management and queries
  • PostgreSQL: As the relational database

Event-Driven Architecture

  • Apache Kafka
    • Message broker for async communication
    • Event streaming between microservices
    • Reliable message delivery with topic partitioning

Authentication & Authorization

  • JWT: Token-based authentication (Access + Refresh tokens)
  • Passport.js: OAuth integration
    • Google OAuth2.0
    • GitHub OAuth

Sweeper Service

  • 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

Processor Service

  • 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

Integrations

  • Slack: Workspace and channel management
  • Discord: Server and channel integration
  • Webhook: Custom HTTP endpoints

Development Tools

  • TypeScript: For type safety
  • ESLint: Code linting
  • Prettier: Code formatting
  • Turborepo: Monorepo management

Event Flow

    A[Webhook Event] --> B[Webhook Service]
    B --> C[(Database)]
    C --> D[Sweeper Service]
    D --> E[Kafka]
    E --> F[Processor Service]
    F --> G[External Services]
Loading

Ports

What's inside?

This Turborepo includes the following packages/apps:

Apps and Packages

  • client: another Next.js app
  • server: a Node.js app
  • hooks: another Node.js app
  • Sweeper: another Next.js app
  • @repo/ui: a stub React component library shared by both web and docs applications
  • @repo/eslint-config: eslint configurations (includes eslint-config-next and eslint-config-prettier)
  • @repo/typescript-config: tsconfig.jsons used throughout the monorepo

Build

To build all apps and packages, run the following command:

cd my-turborepo
yarn build

Develop

To develop all apps and packages, run the following command:

cd my-turborepo
yarn dev

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published