Skip to content

coji/upflow

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1,368 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

UpFlow

Development productivity dashboard that tracks pull request cycle times from GitHub. Calculates coding time, pickup time, review time, and deploy time to help teams understand their development workflow.

Tech Stack

  • Framework: React Router v7 (SSR) + Express
  • Database: SQLite (multi-tenant, database-per-org) via Atlas + Kysely
  • Auth: better-auth with GitHub OAuth
  • UI: shadcn/ui + Tailwind CSS v4
  • Testing: Vitest + Playwright
  • Hosting: Fly.io

Setup

Prerequisites

  • Node.js 22+
  • pnpm

1. Install dependencies

pnpm install

2. Configure environment variables

cp .env.example .env

Edit .env with your values:

Variable Description
DATABASE_URL SQLite database path (e.g. file:../data/data.db)
BETTER_AUTH_SECRET Secret for better-auth (min 32 chars)
BETTER_AUTH_URL App URL (e.g. http://localhost:5173)
GITHUB_CLIENT_ID GitHub App client ID
GITHUB_CLIENT_SECRET GitHub App client secret
INTEGRATION_PRIVATE_TOKEN GitHub PAT for PR data fetching
GEMINI_API_KEY Gemini API key for AI features

3. Set up GitHub App

Create a GitHub App at https://github.com/settings/apps/new:

  • Callback URL: http://localhost:5173/api/auth/callback/github (dev) / https://your-domain/api/auth/callback/github (prod)
  • Expire user authorization tokens: ON
  • Request user authorization (OAuth) during installation: ON
  • Webhook: Active OFF
  • Permissions > Account permissions > Email addresses: Read-only

Use the Client ID and generate a Client secret for your .env.

4. Initialize database

pnpm db:setup

5. Start development server

pnpm dev

Commands

pnpm dev          # Start dev server with HMR
pnpm build        # Build for production
pnpm start        # Run production server
pnpm test         # Run unit tests
pnpm test:e2e     # Run E2E tests
pnpm typecheck    # Type checking
pnpm lint         # Lint (Biome)
pnpm format       # Format check (Prettier)
pnpm validate     # Full validation pipeline
pnpm db:setup     # Reset database with seed data
pnpm db:migrate   # Generate migration from schema changes
pnpm db:apply     # Apply migrations
pnpm db:generate  # Generate Kysely types

Authentication

  • GitHub OAuth only: Login requires the user's GitHub login to be in companyGithubUsers with isActive=1
  • Batch auto-registration: PR authors and reviewers are automatically added to companyGithubUsers as inactive (isActive=0). An admin enables them via the Active toggle in Settings > GitHub Users
  • First-user bootstrap: On a fresh database with no users, the first GitHub login is allowed unconditionally and promoted to super admin
  • On login, users are automatically added as members to orgs where their GitHub login is registered and active

License

Private

About

development cycle-time reporter

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages