Generated pages
714
Static pages generated after expertise, tools and localized routes were added.
Engineering proof
This page exposes the technical logic behind the platform: web architecture, NestJS backend, quality, tests, operations, SEO, i18n and delivery discipline.
Generated pages
714
Static pages generated after expertise, tools and localized routes were added.
Active languages
6
French, English, Arabic, Spanish, German and Dutch with dedicated routes.
Quality chain
Typecheck + Build
Systematic frontend validation before freezing changes.
Backend quality is module-owned.
Each serious module can expose its own perf, contract, unit, integration, E2E, smoke, security and mutation phases.
System map
The proof does not come from one page. It comes from the whole system: public website, API, admin, documentation, tools, localized content and quality.
Next.js, localized routes, SEO, sitemap, expertise pages and documentation.
NestJS API for contact, chatbot, analytics, communication and product workflows.
Future supervision for requests, conversations, logs, statistics and operations.
Developer packs, scripts, transactional SMS gateway and local AI workstation.
Backend proof
The goal is to show the ability to structure modules, contracts, validation, domain flows, security and integrations without turning the project into a fragile showcase.
NestJS
Modules, services, DTOs, guards, validation and maintainable API contracts.
Prisma
Models, transactions, constraints and clear separation between domain and storage.
Realtime
Chat, support, notifications and admin interfaces connected to real system state.
Communication
Transactional channels designed with limits, logs, security and precise usage.
Controller receives a public operation through a documented route.
class-validator, Swagger metadata and ValidationPipe must stay aligned.
Access rules, JWT context, throttling and role checks protect the boundary.
Business rules are isolated, testable and protected by explicit branches.
Transactions, constraints and persistence shape are verified by tests.
Schemathesis, smoke, ZAP, k6 and Stryker expose behavior from outside.
Backend methodology
NestJS, Spring Boot, Python, Go or .NET: the principle stays the same. Understand, lock, improve, measure, harden and document.
Read routes, DTOs, guards, services, database access, errors and public contracts.
Understand the system before changing it.
Clarify responsibilities without rewriting the product or breaking existing behavior.
Reduce debt without creating a risky migration.
Lock existing behavior with simple but useful tests.
Create a safety net before deeper corrections.
Test branches, errors, boundaries, transactions, null, undefined and exception paths.
Attack blind spots that superficial tests ignore.
Validate real boundaries between API, authentication, database and services.
Prove behavior outside isolation.
Measure latency, concurrency, database contention, N+1 patterns, throttling, memory and slow paths.
Find what breaks when the backend is no longer alone.
Use OpenAPI and Schemathesis to confront the public contract with real behavior.
Fix DTOs, Swagger, ValidationPipe and documented responses.
Add smoke checks, ZAP, logs and runtime verification around exposed behavior.
Observe the system as it really runs.
Use Stryker to verify that tests kill behavioral changes.
Measure test strength, not only coverage.
Keep commands, reports, runners and decisions in a reusable shape.
Make quality transferable to the team and future projects.
Test definitions
Backend quality is not a folder stack. Each phase answers a precise question: is it correct, integrated, documented, robust, secure and resistant to change?
Checks typing, ESLint, Prettier, build and Git hooks before trusting runtime behavior.
When
Before heavy test suites, before commit, before push and before investigating deeper failures.
Why
Husky, ESLint and Prettier prevent noise from entering the repository: broken format, style debt, static errors or invalid builds.
Measures latency, error rate, concurrency and visible limits when the API receives load.
When
Before validating an exposed module, after sensitive refactors or when an endpoint touches the database.
Why
A backend can be correct in unit tests but slow, unstable or unsafe under concurrency.
Automatically attacks endpoints from the OpenAPI contract published by the application.
When
After stabilizing DTOs, Swagger, ValidationPipe and documented HTTP statuses.
Why
Reveals mismatches between documentation, real validation and responses sent to clients.
Isolates a business decision, DTO, service, guard or mapper to verify its branches.
When
At the start of hardening, before deep refactors, and to kill Stryker mutants.
Why
Locks important rules without depending on network, database or the whole module.
Verifies real boundaries between modules, providers, transactions, database and services.
When
When logic depends on Prisma, a repository, a transaction or composed services.
Why
Catches errors that unit tests hide behind optimistic mocks.
Tests a complete API path from HTTP request to expected product behavior.
When
For critical flows: auth, contact, admin, support, payment, notification or onboarding.
Why
Proves controller, validation, auth, service and response layers work together.
Quickly verifies that the running system responds and critical paths are not broken.
When
After build, local deployment, environment change or before heavier test phases.
Why
Avoids running an expensive suite against a dead, misconfigured or unreachable API.
Observes the exposed HTTP surface to detect basic security signals or bad responses.
When
On public, admin, auth or any route exposed to external users.
Why
Complements functional tests with a runtime view of the attackable surface.
Automatically changes code to verify whether tests detect behavioral changes.
When
After strong unit/integration coverage, when test strength must be measured.
Why
100% coverage is not enough; Stryker verifies that assertions truly protect behavior.
portfolio-api/test
Each backend module owns the same quality surface, from contract checks to mutation testing, with a dedicated global runner and local README.
Load, latency and concurrency baseline.
OpenAPI contract attack against real endpoints.
DTOs, services, guards, modules and branch decisions.
Database, providers and cross-service boundaries.
Real API flows through the application surface.
Runtime availability and critical path sanity checks.
Basic exposed security signals.
Stryker mutation strength and test robustness.
Sample modules already shaped with this convention
test/<module>/
├── 01-perf
├── 02-schemathesis
├── 03-unit
├── 04-integration
├── 05-e2e
├── 06-smoke
├── 07-zap
├── 08-mutation
├── scripts/run-<module>-global.sh
└── README.mdOne command can run the module quality chain with explicit toggles.
MODULE_NAME="admin-auth"RUN_ADMIN_AUTH_SCHEMATHESIS="${RUN_ADMIN_AUTH_SCHEMATHESIS:-true}"RUN_ADMIN_AUTH_SMOKE="${RUN_ADMIN_AUTH_SMOKE:-true}"RUN_ADMIN_AUTH_UNIT="${RUN_ADMIN_AUTH_UNIT:-true}"RUN_ADMIN_AUTH_INTEGRATION="${RUN_ADMIN_AUTH_INTEGRATION:-true}"RUN_ADMIN_AUTH_E2E="${RUN_ADMIN_AUTH_E2E:-true}"RUN_ADMIN_AUTH_MUTATION="${RUN_ADMIN_AUTH_MUTATION:-true}"OpenAPI is fetched from the running API, then attacked in Docker.
SCHEMA_FETCH_URL="${SCHEMA_FETCH_URL:-http://localhost:4002/api/docs-json}"SCHEMATHESIS_BASE_URL="${SCHEMATHESIS_BASE_URL:-http://host.docker.internal:4002}"SCHEMATHESIS_PATH_REGEX="${SCHEMATHESIS_PATH_REGEX:-^/api/v1/admin/auth/(login|refresh|logout|me)$}"docker run --rm --add-host=host.docker.internal:host-gateway \ ghcr.io/schemathesis/schemathesis:stable run openapi-admin-auth.jsonMutation score is a hard quality threshold, not a vanity metric.
{ "testRunner": "jest", "mutate": ["src/modules/admin-auth/**/*.ts"], "coverageAnalysis": "perTest", "thresholds": { "high": 100, "low": 100, "break": 100 }}Performance tests expose latency and failure-rate risks outside unit isolation.
export const options = { thresholds: { http_req_failed: ["rate<0.01"], checks: ["rate>0.99"], "http_req_duration{endpoint:health}": ["p(95)<250", "p(99)<500"], },};Tool → risk
The quality chain is not a stack of logos. Each step has a precise reason and covers an angle the others do not cover.
TypeScript
Detects type inconsistencies before runtime, especially in DTOs, services and internal contracts.
Unit tests
Lock important rules, branches, errors and isolated edge cases.
Integration tests
Verify interactions between services, transactions, database and internal dependencies.
E2E tests
Validate real flows from the endpoint to the expected product behavior.
k6
Exposes latency, locks, N+1 patterns, contention and behavior that isolated tests do not reveal.
Schemathesis
Reveals mismatches between Swagger, DTOs, ValidationPipe, HTTP statuses and real responses.
ZAP
Finds basic security signals visible from outside the system.
Stryker
Proves whether the test suite actually detects behavioral mutations.
Confidence model
This chart is a teaching model, not a scientific statistic. It shows how confidence increases when validation covers more angles.
The code compiles and obvious mistakes are reduced.
Key business decisions start to be locked.
Service/database/API boundaries become safer.
Real user-facing flows are validated end to end.
The public contract is automatically attacked.
Performance, smoke and runtime security add a real-world view.
The test suite proves it can detect dangerous changes.
Quality pipeline
Each step reduces a category of risk: typing, contract, business behavior, runtime, security or test robustness.
01
Check typing, formatting, conventions and obvious errors before runtime.
02
Test business decisions, integrations and end-to-end user paths.
03
Attack API contracts and verify that documentation reflects real behavior.
04
Actively look for weaknesses instead of stopping at a green build.
What this proves
This page does not claim abstract perfection. It shows a method: structure, verify, document, localize, measure and refactor when a limit appears.
Pages, content, components and routes are separated to stay maintainable.
Oversized files are split instead of being accepted as silent debt.
Sitemap, canonical, hreflang and localized routes are treated as public contracts.
The site itself demonstrates the expected level: content, UI, architecture and validation.
Usable proof
For a backend mission, technical recovery or product platform, this page acts as a technical entry point.