Scaffolded product demo for an AI-assisted engineering control pane with:
frontend: Vite + React + TypeScript UIbackend: FastAPI integration layer
cd frontend
npm install
npm run devOptional environment override:
Copy-Item .env.example .envcd backend
python -m venv .venv
.venv\Scripts\Activate.ps1
pip install -r requirements.txt
uvicorn app.main:app --reloadOptional backend integration configuration:
Copy-Item .env.example .envThe app implements the recommended day-one stack from the integration spec:
GitHubfor repositories and pull-request contextGitHub Actionsfor CI status contextLinearfor issue intakeRepo markdownfor knowledge source attachmentGoogle SSO-style identity abstractionfor approval attribution
The integration layer runs in hybrid mode:
- When provider environment variables are configured, the backend attempts live provider calls.
- When credentials or provider configuration are missing, the app falls back to safe in-memory demo data.
- Repo markdown docs are discovered locally from
docs/andREADME.md.
backend/.env.example documents the supported integration variables:
GITHUB_TOKENGITHUB_OWNERGITHUB_REPOSITORIESLINEAR_API_KEYLINEAR_TEAM_IDCONTROL_PANE_DOCS_DIRCONTROL_PANE_DEFAULT_USER_NAMECONTROL_PANE_DEFAULT_USER_EMAILCONTROL_PANE_DEFAULT_USER_ROLECONTROL_PANE_FRONTEND_URLCONTROL_PANE_SESSION_SECRETGOOGLE_CLIENT_IDGOOGLE_CLIENT_SECRETGOOGLE_REDIRECT_URIGOOGLE_HOSTED_DOMAINGOOGLE_ALLOWED_DOMAINSGOOGLE_ADMIN_EMAILSGOOGLE_ADMIN_DOMAINSGOOGLE_TECH_LEAD_EMAILSGOOGLE_TECH_LEAD_DOMAINSGOOGLE_ENGINEER_EMAILSGOOGLE_ENGINEER_DOMAINSOPENAI_API_KEYOPENAI_MODELOPENAI_BASE_URL
The Work Intake page exposes an Enrich button underneath the Task title, Prompt, and Acceptance criteria textboxes. Each button calls POST /api/intake/enrich, which uses OPENAI_API_KEY plus the markdown files under docs/ (and the repo README.md) to refine the targeted field in-place. Set OPENAI_MODEL to override the default model (gpt-4o-mini) and OPENAI_BASE_URL to point at a compatible endpoint.
When GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET, and GOOGLE_REDIRECT_URI are configured, the sign-in screen switches to a Google OAuth flow:
- the browser starts at
GET /api/auth/google/start - Google redirects back to
GET /api/auth/google/callback - the frontend exchanges the short-lived callback code at
POST /api/auth/google/exchange
Role access is assigned on the backend from the configured email and domain rules with precedence admin > tech_lead > engineer. App sessions now use a signed bearer token so identity survives across backend invocations; set CONTROL_PANE_SESSION_SECRET in deployed environments if you do not want to fall back to GOOGLE_CLIENT_SECRET. When Google SSO is not configured, the original guided local sign-in remains available as a fallback.
The backend now exposes the integration-oriented endpoints from the product spec:
GET /api/dashboardGET /api/runs/:idGET /api/approvalsGET /api/policies/:scopeGET /api/intakeGET /api/integrationsGET /api/mePOST /api/tasksPOST /api/runsPOST /api/approvalsPOST /api/intake/enrich
- Data-backed product shell with live-or-fallback provider integrations served by FastAPI
- Dashboard, work intake, task detail, approval inbox, policy center, and integrations management
- Hybrid integration support for GitHub, GitHub Actions, Linear, repo markdown, and identity attribution