Client work · E-commerce

Diapermela

An e-commerce store built security-first.

An online store built with Next.js 16, PayloadCMS and PostgreSQL, with secret scanning in CI, security linting, HTML sanitization, and a dedicated security test suite.

Next.jsPayloadCMSPostgreSQLPlaywright

Problem

An online store handles customer data and admin access, so security has to be part of the build process rather than an afterthought.

Solution

Built the store on Next.js 16 with PayloadCMS for content and PostgreSQL for data, and wired security checks into development: gitleaks secret scanning in CI, eslint-plugin-security, sanitize-html, and a dedicated security test suite alongside Vitest unit tests and Playwright end-to-end tests.

System architecture

  1. Next.js 16 storefront.
  2. PayloadCMS for managing store content.
  3. PostgreSQL for data.
  4. A CI pipeline that runs the tests and scans the built bundle for leaked secrets.

Backend logic

  • User-supplied HTML is sanitized with sanitize-html.
  • Security lint rules (eslint-plugin-security) run across the codebase.
  • A dedicated security test suite runs alongside Vitest unit tests and Playwright end-to-end tests.
  • gitleaks scans the repository and the built bundle for secrets.

Tech stack

Frontend

  • Next.js 16

CMS

  • PayloadCMS

Database

  • PostgreSQL

Quality

  • Vitest
  • Playwright
  • gitleaks
  • eslint-plugin-security

Outcome / impact

  • Security problems are caught in CI rather than in production.
  • Store content is managed through a CMS without code changes.

Result: A store where security regressions are caught by automated checks before they ship.