name: CI on: push: branches: [main] pull_request: branches: [main] jobs: backend: name: Backend (Python) runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Set up Python 3.12 uses: actions/setup-python@v5 with: python-version: "3.12" - name: Install dependencies working-directory: backend run: | pip install -e ".[dev]" - name: Lint (ruff) working-directory: backend run: ruff check . - name: Type check (mypy) working-directory: backend run: mypy app/ - name: Test (pytest) working-directory: backend run: pytest --tb=short -q env: PAPERJET_DATABASE_PATH: ./test.sqlite PAPERJET_PDF_STORAGE_PATH: ./test_pdfs PAPERJET_THUMBNAILS_PATH: ./test_thumbs frontend: name: Frontend (TypeScript) runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Set up Node.js 22 uses: actions/setup-node@v4 with: node-version: "22" cache: "npm" cache-dependency-path: frontend/package-lock.json - name: Install dependencies working-directory: frontend run: npm ci - name: Lint (eslint) working-directory: frontend run: npm run lint - name: Type check (tsc) working-directory: frontend run: npx tsc -b - name: Test (vitest) working-directory: frontend run: npx vitest run