← Back to home
FR · EN

Ask&Trust

Completed 2025 → 2025

Tech stack

ReactTypeScriptGraphQLApolloNode.jsTypeORMPostgreSQLStripeDockerNginx
Frontend
React 19 + TypeScript 5.7 SPA built with Vite 6. Data layer powered by Apollo Client 3.13 (GraphQL cache), routing with React Router 7, forms with react-hook-form. UI built on Radix UI (accessible components) and TailwindCSS 4 with class-variance-authority for variants, Motion (Framer Motion) animations, Sonner notifications, and SEO via react-helmet-async. Front-end payment integration with @stripe/react-stripe-js. Custom domain hooks (useSurvey, useQuestions, useAnswers, useDebounce, etc.).
Backend / API
Code-first GraphQL API with Apollo Server 4 and Type-GraphQL 2.0 (schema generated from TypeScript decorators). Persistence via TypeORM 0.3 on PostgreSQL 15, with decorated entities exposed directly to the GraphQL schema. Domain-separated resolvers (auth, survey, questions, answers, category, payment, survey-responses). Input validation with class-validator.
Security & Auth
JWT authentication stored in an HTTP-only, secure, sameSite-strict, signed cookie (XSS/CSRF protection). Passwords hashed with Argon2. Role-based access control via a custom Type-GraphQL AuthChecker. Hand-rolled native rate limiter (in-memory sliding window) with distinct thresholds per operation type (auth, mutations, searches, queries), plus timeout and email-masking middleware.
Payments
Server-side Stripe 18 integration: PaymentIntent creation for purchasing survey-quota packs, payment persistence in the database, and webhook handling (payment_intent.succeeded / payment_failed) with signature verification.
Architecture & Infrastructure
npm workspaces monorepo (app/frontend + app/backend). Multi-environment Docker Compose containerization (dev, staging, prod, test) with a healthchecked PostgreSQL and Nginx reverse proxy. Versioned TypeORM migrations (init schema, category seeding, cascade delete). Caddy and deployment scripts on the prod side, with a documented disaster recovery plan.
Quality & CI/CD
GitHub Actions pipelines (lint + audit, client tests, staging/prod Docker builds, docs generation, PR source-branch checks). Jest tests on the backend (resolvers + API) and Vitest + Testing Library on the frontend. Husky Git hooks + lint-staged, ESLint, Prettier, Conventional Commits with automated versioning (standard-version), and TypeDoc documentation published to GitHub Pages.

Context

Ask&Trust is a SaaS platform that lets professionals create, distribute and analyze online surveys, monetized through survey-quota purchases. The project was built by a 4-developer team as part of the Wild Code School program, with the goal of delivering a complete, secure and production-deployable full-stack application.

Previews

Key features

What it demonstrates

This project showcases command of a modern full-stack TypeScript stack and an end-to-end typed GraphQL API (Type-GraphQL + Apollo + TypeORM). It demonstrates genuine attention to application security: signed HTTP-only JWT cookies, Argon2 hashing, role-based access control, a custom rate limiter and GDPR compliance. Managing a containerized multi-environment monorepo, database migrations, a payment integration with webhooks, and a polished CI/CD and quality chain (tests, linting, conventional commits, generated docs) reflects a rigorous, production-oriented engineering approach within a team setting.

← Back to home