BioScanCheck¶
Eco & Bio Product Certification Scanner — React frontend + MCP backend.
Repository¶
| Field | Value |
|---|---|
| Forgejo | bioscan/bioscancheck |
| Plane prefix | BIOS |
| Profile | fullstack |
| App repo path | C:\Users\anik0z\Documents\bioscancheck |
Stack¶
- Frontend: React 19 + TypeScript + Vite
- Data: Open Food Facts API + local mock fallback
- MCP server: BioScanCheck tools for Cursor IDE
- Tests: Vitest
Deploy flow¶
flowchart LR
Push[push main] --> WP[Woodpecker]
WP --> Test[npm test]
Test --> FE[SFTP dist to IONOS]
Test --> Docker[build MCP image]
Docker --> Registry[Forgejo registry]
Registry --> SSH[SSH docker compose]
SSH --> VPS[VPS backend :3100]
Woodpecker pipeline (app repo)¶
Steps in bioscancheck/.woodpecker.yml:
| Step | When | Action |
|---|---|---|
| install | all | npm ci, mcp:build |
| test | all | frontend + mcp-server tests |
| build | all | npm run build |
| deploy-frontend | main | SFTP dist/ to IONOS |
| build-push-backend | main | Docker image → Forgejo registry |
| deploy-backend | main | SSH + docker compose up -d on VPS |
| notify-ci-* | all | Plane comment on BIOS-N in branch |
Woodpecker secrets¶
Per-repo secrets (via onboard):
- SFTP:
ftp_host,ftp_user,ftp_pass,frontend_remote_path - Registry:
docker_registry_user,docker_registry_token - VPS:
ssh_host,ssh_user,ssh_key - Plane:
plane_api_key,plane_workspace,plane_project_id,plane_api_url,plane_issue_prefix
VPS backend path¶
/opt/devops/apps/bioscancheck-backend/
Image: git.rafaelgonzalezalbes.com/bioscan/bioscancheck-mcp:latest
MCP (app-level)¶
Built from app repo — not infra-ops:
cd bioscancheck
npm run mcp:build
Tools: lookup_barcode, get_bio_score, list_known_products
Onboard¶
bash scripts/onboard-project.sh \
--profile fullstack \
--forgejo-owner bioscan \
--repo bioscancheck \
--plane-prefix BIOS \
--plane-name "BioScanCheck"
Monitoring¶
BioScanCheck API monitor (TCP :3100) is in Kuma manifest — enabled after backend deploy.
See Monitoring.