Skip to content

Repository files navigation

Pulltora

Engineering Delivery Intelligence Dashboard for technical leads.

Branding

Frontend brand asset and theme are set to Pulltora.

  • Root logo source: apps/web/public/branding/pulltora_logo.png
  • App title: Pulltora

Pulltora theme tokens (authoritative source)

Theme tokens live in:

  • apps/web/src/styles.css
  • apps/web/tailwind.config.ts

Core palette source variables:

  • --background: app base canvas
  • --foreground: base text
  • --surface, --surface-2: card and panel surfaces
  • --card: content panel base
  • --border: stroke color
  • --ring: focus/interactive ring and hover accents
  • --primary: brand action color
  • --accent: secondary accent for highlights
  • --brand, --brand-foreground, --brand-glow: primary branding signals
  • --motion-fast, --motion-medium, --motion-slow: animation timings

Stack

  • Frontend: React + Vite + TypeScript + Tailwind CSS + shadcn/ui + Recharts + React Router + React Hook Form + Zod + TanStack Query
  • Backend: NestJS + TypeScript + Mongoose (MongoDB Atlas) + JWT + Swagger/OpenAPI

Monorepo Layout

devpulse/ apps/ web/ api/ packages/ shared/

Run:

  • npm install --include-workspace-root --workspaces
  • npm run dev

Scripts

  • npm run dev — run frontend and backend dev servers
  • npm run build — build all workspaces
  • npm run lint — lint all workspaces
  • npm run test — run all workspace tests
  • npm run typecheck — typecheck all workspaces
  • npm run check:env — verify app and production env examples match Pulltora's env contract

Environment Variables

Pulltora intentionally does not use a root .env for local runtime. Keep environment files app-specific so Nest and Vite each load the values they actually need.

Runtime files:

  • apps/api/.env is used by the NestJS backend.
  • apps/web/.env is used by the Vite frontend.
  • .env.production.example is the deployment checklist for hosting providers.
  • apps/api/.env.example and apps/web/.env.example are the local setup templates.

The root .env file is not part of the local workflow. If one exists on your machine from earlier setup, treat it as obsolete and move any needed values into apps/api/.env or apps/web/.env.

VariableOwnerProduction requiredSafe examplePurpose
NODE_ENVapi/deploymentYesproductionEnables production validation and runtime behavior.
PORTapi/deploymentProvider-dependent3001API port. Hosting providers may override this.
API_PREFIXapiYes/api/v1Global NestJS API prefix.
ALLOWED_ORIGINSapiYeshttps://your-vercel-app.vercel.appComma-separated frontend origins allowed by CORS.
MONGODB_URIapiYesmongodb+srv://...MongoDB Atlas connection string.
MONGODB_DB_NAMEapiYespulltora_prodMongoDB database name.
JWT_SECRETapiYesgenerated secretJWT signing secret, at least 32 characters in production.
JWT_ACCESS_EXPIRES_INapiYes15mAccess token lifetime.
JWT_REFRESH_EXPIRES_INapiYes7dRefresh token lifetime.
GITHUB_TOKENapiNoempty or tokenOptional GitHub token for higher API limits.
AI_ENABLEDapiNotrueEnables AI-enriched improvement ideas.
AI_PROVIDERapiNogeminiSupported values: none, ollama, gemini.
AI_MODELapiNogemini-1.5-flashModel name used by the selected AI provider.
AI_BASE_URLapiRequired for Ollamahttp://localhost:11434Local Ollama endpoint.
GEMINI_API_KEYapiRequired when Gemini is enabledempty locallyGemini API key; never expose in frontend env.
ENABLE_SWAGGERapiNofalseEnables Swagger docs in production when explicitly true.
VITE_API_BASE_URLwebYeshttps://your-api-host/api/v1Frontend API base URL.

Gemini deployment values:

AI_ENABLED=true
AI_PROVIDER=gemini
AI_MODEL=gemini-1.5-flash
GEMINI_API_KEY=<YOUR_GEMINI_API_KEY>

Production readiness

Production defaults are intentionally stricter than local development:

  • Required backend env values are validated at startup when NODE_ENV=production.
  • Swagger docs are hidden in production unless ENABLE_SWAGGER=true.
  • ALLOWED_ORIGINS must be set to deployed frontend origins only in production.
  • AI insights support deterministic rules, local Ollama, or hosted Gemini.
  • Secret values are never returned by the Settings API.

Use .env.production.example as the deployment checklist. Local app runtime values belong in apps/api/.env and apps/web/.env.

Free deployment guide

Recommended portfolio-grade free stack:

  • Frontend: Vercel
  • Backend: Northflank Sandbox, Koyeb, or Render as fallback
  • Database: MongoDB Atlas free tier
  • AI: Gemini API key
  • GitHub: optional GitHub personal access token

Backend deployment settings

Set the backend service root directory to:

devpulse

Build command:

npm install --include-workspace-root --workspaces && npm run build:api

Start command:

npm run start --workspace @devpulse/api

Health check path:

/api/v1/health

Backend production env:

NODE_ENV=production
PORT=3001
API_PREFIX=/api/v1
ALLOWED_ORIGINS=https://your-vercel-app.vercel.app
ENABLE_SWAGGER=false
MONGODB_URI=mongodb+srv://<USER>:<PASSWORD>@<CLUSTER>.mongodb.net/pulltora_prod?retryWrites=true&w=majority
MONGODB_DB_NAME=pulltora_prod
JWT_SECRET=<GENERATE_WITH_OPENSSL_RAND_BASE64_48>
JWT_ACCESS_EXPIRES_IN=15m
JWT_REFRESH_EXPIRES_IN=7d
GITHUB_TOKEN=<OPTIONAL_BUT_RECOMMENDED>
AI_ENABLED=true
AI_PROVIDER=gemini
AI_MODEL=gemini-1.5-flash
GEMINI_API_KEY=<YOUR_GEMINI_API_KEY>

Generate a JWT secret locally:

openssl rand -base64 48

Frontend deployment settings

Set the Vercel project root directory to:

devpulse/apps/web

Build command:

npm run build

Output directory:

dist

Frontend production env:

VITE_API_BASE_URL=https://your-backend-domain/api/v1

Deployment smoke test

After both services are deployed:

  1. Open the Vercel frontend URL.
  2. Register a new account.
  3. Login.
  4. Add a public GitHub repository.
  5. Sync GitHub data.
  6. Analyze the repository.
  7. Refresh improvement ideas.
  8. Open Settings and confirm GitHub and Gemini status show as configured.
  9. Confirm no secret values are visible in the browser.

usman.mustafa665@gmail.com Usman123

About

Full-stack engineering intelligence platform for PR risk, review bottlenecks, workload balance, hotspot files, technical debt, and release readiness.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages