Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

36 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

OpsFlow — Internal Workflow Automation Suite

A full-stack internal tooling application for managing operational workflow requests with role-based access control.

Live Demo: https://opsflow-client.onrender.com

Note: The server runs on Render's free tier and may take 30-60 seconds to wake up on first request.

Features

  • User authentication with JWT and bcrypt password hashing
  • Role-based access control (Admin, Manager, Requester)
  • Create and track workflow requests
  • Automated approval routing — requests auto-assigned based on approver workload
  • Status updates with role-based permissions (Admin/Manager only)
  • Audit log with full history tracking on every request
  • In-app notification system with bell icon, unread badge, and dropdown panel
  • Analytics dashboard with KPI cards, charts, and request trends (Admin/Manager only)
  • CSV export of all workflow requests
  • Requesters only see their own submissions
  • Persistent data with PostgreSQL via Supabase

Tech Stack

Frontend

  • React + TypeScript
  • Tailwind CSS
  • React Router
  • Axios

Backend

  • Node.js + Express
  • TypeScript
  • Prisma ORM
  • PostgreSQL (Supabase)
  • JWT Authentication
  • bcryptjs

Deployment

  • Render (server + static site)
  • Supabase (managed PostgreSQL)

Getting Started

Prerequisites

  • Node.js 18+
  • A Supabase account and project

Installation

  1. Clone the repo
   git clone https://github.com/himynameismoose/opsflow.git
   cd opsflow
  1. Set up the server
   cd server
   npm install
  1. Create server/.env:
DATABASE_URL=your_supabase_pooler_url?pgbouncer=true
DIRECT_URL=your_supabase_direct_url
JWT_SECRET=your_jwt_secret
PORT=8080
CLIENT_URL=http://localhost:5173
  1. Run database migrations
   npx prisma migrate dev
  1. Start the server
   npm run dev
  1. Set up the client
   cd ../client
   npm install
  1. Create client/.env:
VITE_API_URL=http://localhost:8080
  1. Start the client
   npm run dev
  1. Open http://localhost:5173

Running with Docker

To run the entire stack locally with Docker:

docker-compose up --build

This starts three containers:

  • db — PostgreSQL on port 5433
  • server — Express API on port 8080
  • client — React app served by nginx on port 80

Then run migrations against the Docker database:

cd server
DATABASE_URL=postgresql://postgres:postgres@localhost:5433/opsflow npx prisma migrate dev

Open http://localhost in your browser.

To stop all containers:

docker-compose down

Demo Accounts

Role Email Password
Admin admin@opsflow.com password123
Requester test@opsflow.com password123

Project Structure

opsflow/
├── client/                  # React + TypeScript frontend
│   └── src/
│       ├── components/      # NotificationBell and shared components
│       ├── context/         # Auth context
│       ├── lib/             # Axios instance, CSV export utility
│       └── pages/           # Login, Register, Dashboard, Analytics
└── server/                  # Node.js + Express backend
    └── src/
        ├── controllers/     # Auth, workflow, analytics, notifications
        ├── middleware/      # JWT auth middleware
        ├── routes/          # Route definitions
        └── lib/             # Prisma client, audit log, notifications, approval router

About

Internal workflow automation suite: React, TypeScript, Node, Express, PostgreSQL

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages