Skip to content

fix(v1.0.0): mentor plain-English, mobile hero gap, creator overflow #33

fix(v1.0.0): mentor plain-English, mobile hero gap, creator overflow

fix(v1.0.0): mentor plain-English, mobile hero gap, creator overflow #33

Workflow file for this run

name: CI
# Runs on every PR and every push to main. Catches the v0.8.3-style "ship a
# regression, learn about it from Sentry post-deploy" loop by exercising the
# whole test + lint + build stack before the merge button is reachable.
on:
pull_request:
push:
branches:
- main
# Opt into Node 24 ahead of June 2026 deadline. Without this, GHA warns on
# every run that actions/checkout@v4, astral-sh/setup-uv@v5, and
# actions/setup-node@v4 are still running on Node 20 (which is being
# removed from the runner on 2026-09-16).
env:
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"
# Avoid running the workflow twice for the same PR (push + pull_request both
# fire). Cancel in-progress runs for the same ref when a new push lands.
concurrency:
group: ci-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
backend:
name: Backend (lint + tests)
runs-on: ubuntu-latest
defaults:
run:
working-directory: backend
steps:
- uses: actions/checkout@v4
- name: Install uv
uses: astral-sh/setup-uv@v5
with:
version: "0.11.12"
enable-cache: true
cache-dependency-glob: backend/uv.lock
- name: Pin Python from .python-version
run: uv python install
- name: Install dependencies
run: uv sync --frozen --dev
- name: ruff check
run: uv run ruff check .
- name: ruff format --check
run: uv run ruff format --check .
- name: pytest (non-DB-fixture)
# The DB-fixture tests need TEST_DATABASE_URL pointed at a real
# Postgres branch — out of scope for the cheap pre-merge gate. The
# 257-test non-DB suite is the right gate for "does the diff break
# anything we can run for free."
run: uv run pytest -q --no-header
frontend:
name: Frontend (lint + test + build)
runs-on: ubuntu-latest
defaults:
run:
working-directory: frontend
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 24
cache: npm
cache-dependency-path: frontend/package-lock.json
- name: Install dependencies
run: npm ci
- name: ESLint
run: npm run lint
- name: TypeScript
run: npx tsc --noEmit
- name: Vitest
run: npm run test:run
- name: Next.js build
# Set throwaway values so any module-level `process.env.X` reads at
# build time don't crash. Real values come from Vercel at deploy.
env:
NEXT_PUBLIC_BACKEND_URL: http://ci-placeholder
run: npm run build
config:
name: Config (vercel.ts typecheck)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 24
cache: npm
cache-dependency-path: package-lock.json
- name: Install root devDeps
run: npm ci
- name: TypeScript (vercel.ts)
run: npx tsc --noEmit -p .