name: CI on: push: branches: [ main ] pull_request: branches: [ main ] jobs: frontend: name: Frontend (Next.js) runs-on: ubuntu-latest defaults: run: working-directory: ./chartbastan steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: '20' cache: 'npm' cache-dependency-path: ./chartbastan/package-lock.json - name: Install dependencies run: npm ci - name: Run ESLint run: npm run lint - name: Run TypeScript type-check run: npx tsc --noEmit - name: Build Next.js run: npm run build backend: name: Backend (FastAPI) runs-on: ubuntu-latest defaults: run: working-directory: ./backend steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup Python uses: actions/setup-python@v5 with: python-version: '3.11' cache: 'pip' cache-dependency-path: ./backend/requirements.txt - name: Install dependencies run: pip install -r requirements.txt - name: Run Flake8 (linting) run: flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics - name: Run Black (formatting check) run: black --check . - name: Run Pytest run: pytest tests/ -v || echo "No tests yet or tests failed"