Skip to content

QA → Main (Sawaka)#58

Open
Bond52 wants to merge 45 commits intomainfrom
qa
Open

QA → Main (Sawaka)#58
Bond52 wants to merge 45 commits intomainfrom
qa

Conversation

@Bond52
Copy link
Copy Markdown
Owner

@Bond52 Bond52 commented Jan 30, 2026

🚀 Pull Request — Sawaka

🎯 Objective

Promote validated changes from the QA branch to main after successful CI checks and deployments.
This PR includes:
Stable CI pipeline
Automated documentation publishing via GitHub Pages
Governance and contribution tooling alignment

🔧 Type of Changes

  • New feature
  • Bug fix
  • Code improvement / refactoring
  • Documentation update

🧪 Tests Performed

GitHub Actions CI (lint, build, tests)
Documentation build:
JSDoc generation
Swagger UI static generation
GitHub Pages deployment via CI
All checks passed successfully on the QA branch.

📄 Documentation

Public documentation is now available via GitHub Pages:
JSDoc: https://bond52.github.io/sawaka/jsdoc/
Swagger UI: https://bond52.github.io/sawaka/api-docs/

📎 Notes

This PR is part of the normal QA → Main promotion flow
No breaking changes introduced
Documentation is generated at build time (not committed)


Note

Medium Risk
Medium risk due to new CI/CD workflows (Pages deploy, service containers, multi-stage test runners) and broad UI/layout changes that affect navigation and app chrome across all pages.

Overview
Introduces a full GitHub Actions pipeline (.github/workflows/ci.yml) that runs backend Jest tests, Postman/Newman API checks, Next.js lint/build, Playwright E2E, and backend doc generation; adds Pages workflows to publish JSDoc + Swagger UI and QA-only doc validation/artifacts.

Refreshes the frontend shell and key pages: app/layout.tsx now wraps all pages with a new Header/Footer, the home page is replaced with a hero + project explorer + featured projects/products, and new UX is added for Réseau switching (artisans vs fournisseurs), artisan list search + “back” origin handling, and a new mock project detail page.

Also adds repo governance/devex files (ESLint config, changelog, funding + issue templates, backend README), updates contributing/docs guidance, and gitignores generated backend docs (while adding a Swagger UI static output under backend-api/docs/api-docs).

Written by Cursor Bugbot for commit 06e84a2. This will update automatically on new commits. Configure here.

Bertrand Ond and others added 25 commits December 5, 2025 18:18
docs: add release badge to README
ci: setup automated tests and QA-ready features
Fix mobile menu and refactor Home page layout
Add Agent Developer Context documentation
…gic and add documentation generation script
…tion; streamline environment variable setup and testing instructions
…sting ones. Added 'jsdoc', 'wait-on', and various type definitions. Updated several packages including ESLint-related dependencies and added new modules for improved functionality and compatibility.
ci(docs): stabilize CI pipeline and agent developer context
@vercel
Copy link
Copy Markdown

vercel bot commented Jan 30, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
ecommerce-web-avec-tailwind Error Error Mar 27, 2026 11:27am

Request Review

Copy link
Copy Markdown

@cursor cursor bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 6 potential issues.

Bugbot Autofix is OFF. To automatically fix reported issues with Cloud Agents, enable Autofix in the Cursor dashboard.

This is the final PR Bugbot will review for you during this billing cycle

Your free Bugbot reviews will reset on March 8

Details

You are on the Bugbot Free tier. On this plan, Bugbot will review limited PRs each billing cycle.

To receive Bugbot reviews on all of your PRs, visit the Cursor dashboard to activate Pro and start your 14-day free trial.

return (
<Link
key={artisan._id}
href={`/artisans/${artisan._id}?from=reseau`}
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hardcoded ?from=reseau breaks standalone artisans page navigation

Medium Severity

The ArtisansPage component is used in two contexts: directly at /artisans and embedded inside ReseauPage at /reseau. However, the link href hardcodes ?from=reseau for every artisan card. When a user visits /artisans directly and clicks an artisan, the detail page's back button (handleBack) sees from === "reseau" and navigates to /reseau instead of /artisans, which is incorrect and disorienting.

Additional Locations (1)

Fix in Cursor Fix in Web

image: "/images/tool_project.jpeg",
hasDetailPage: false,
},
];
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Duplicated mock project data across two files

Low Severity

The IDS object and projets array (with identical auteur, id, ville, titre, categorie, image, hasDetailPage fields) are duplicated verbatim in FeaturedProjects.tsx and app/projets/page.tsx. This means any update to the mock data (e.g., adding a project or fixing a title) needs to be applied in both places, risking inconsistency.

Additional Locations (1)

Fix in Cursor Fix in Web

push:
branches:
- main
- qa
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Docs workflow deploys QA to production Pages

Medium Severity

The workflow comment states "Production documentation — GitHub Pages only from main" but the trigger includes both main and qa branches. This means pushes to qa deploy documentation to the production GitHub Pages site, potentially publishing unstable or pre-release documentation to the public URLs referenced in the PR description.

Fix in Cursor Fix in Web

<h1>Sawaka Documentation</h1>
<ul>
<li><a href="/jsdoc/">JSDoc</a> — Code-level API reference</li>
<li><a href="/api-docs/">Swagger UI</a> — Interactive API documentation</li>
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Docs index uses absolute paths broken on GitHub Pages

High Severity

The generated site/index.html uses absolute paths (/jsdoc/ and /api-docs/) for its links. GitHub Pages project sites are served at a subpath (https://bond52.github.io/sawaka/), so these absolute paths resolve to https://bond52.github.io/jsdoc/ and https://bond52.github.io/api-docs/ — both 404s. The links need to be relative (e.g., ./jsdoc/ and ./api-docs/).

Fix in Cursor Fix in Web

return (
<html lang="fr">
<body>
{children}
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Removed metadata export leaves app without HTML title

Medium Severity

The metadata export (containing title: "Sawaka" and description) was removed from layout.tsx and not re-added here or in any other layout/page file. The app now has no HTML <title> or meta description, degrading SEO and leaving a blank or default browser tab title.

Fix in Cursor Fix in Web

process.env.NEXT_PUBLIC_API_BASE ||
(typeof window !== 'undefined' && window.location.hostname === 'localhost'
? 'http://localhost:5000'
: 'https://ecommerce-web-avec-tailwind.onrender.com');
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Operator precedence causes wrong API URL in production

High Severity

The API_URL expression has an operator precedence bug. Because || binds tighter than ?:, the expression parses as (process.env.NEXT_PUBLIC_API_BASE || condition) ? 'http://localhost:5000' : fallback instead of the intended process.env.NEXT_PUBLIC_API_BASE || (condition ? ... : ...). When NEXT_PUBLIC_API_BASE is set (e.g. in production), the entire ternary condition is truthy, so API_URL resolves to 'http://localhost:5000' — never using the actual env var value. Login requests would hit localhost instead of the real API.

Fix in Cursor Fix in Web

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant