Bops
A team of AI bots that runs your business ops: inbox, pipeline, invoices, reports. Each one has its own computer, email and phone number, and remembers everything.
翻译准备中
尚未收集仓库信息。
尚未检测到更新。GitHub 发布版本后会显示在这里。
制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗JobIN is an AI-powered SaaS platform designed to streamline the modern job search. It analyzes a candidate's uploaded resume alongside target job descriptions to generate ATS-optimized resumes and cover letters.
The platform includes a public job catalogue, AI-assisted resume and cover-letter tools, an application tracker, a Chrome extension, Stripe subscriptions, and role-controlled admin workflows. Sign-in can use the configured OCI, Supabase, or Auth0 integration; this is provider-backed identity with user-scoped API authorization, not a full enterprise multi-tenant system.
JobIN is built using a modern, decoupled monorepo architecture:
This repository uses a workspace structure:
JobIN/
├── apps/
│ ├── api/ # NestJS API and Prisma schema/migrations
│ ├── web/ # Next.js 16 web application
│ └── extension/ # Chrome extension (Manifest V3)
├── docs/ # Product and architecture documentation
└── render.yaml # Render API service configuration
The root-level backend/ and frontend/ directories are legacy snapshots; active development and deployment use the apps/ workspaces.
Browser (Next.js) ──OCI access token───────────┐
├──> NestJS API ──Prisma──> PostgreSQL on OCI
Chrome extension ──provider access token─────────┘ │
├──> OCI Object Storage (resume files)
├──> AI provider (resume/cover letter tasks)
└──> Stripe (checkout, billing portal, webhooks)
apps/web) — Next.js App Router UI for registration, sign-in, resume management, AI tools, job tracking, billing, and admin pages. It uses OCI Identity Domains Authorization Code + PKCE by default and sends an API access token to the backend; ID tokens are not used for API authorization. Provider settings are in the corresponding .env.example files.apps/extension) — Manifest V3 extension. Its popup/options/side panel communicate with the extension service worker; the worker detects supported job pages, requests autofill data, and calls the same API endpoints as the web app. It defaults to Supabase Auth and supports OCI/Auth0 Authorization Code + PKCE using Chrome Identity. It does not connect directly to PostgreSQL or call AI providers.apps/api) — NestJS is the trusted boundary for application data and privileged operations. The historically named SupabaseAuthGuard validates tokens for the configured provider mode (oci, oci_dual, auth0, or Supabase). It resolves the identity to a JobIN User, checks account status, and attaches roles and permissions. Controllers and services enforce endpoint and ownership authorization; services perform business logic.apps/api/prisma; connection strings are supplied by DATABASE_URL and DIRECT_URL.AI_SETTINGS_ENCRYPTION_KEY; never expose provider keys to the web app or extension.以上为 README 的开头部分。其余内容请阅读原文。 查看完整 README ↗