← Retour à l'accueil
FR · EN

Ask&Trust

Terminé 2025 → 2025

Stack technique

ReactTypeScriptGraphQLApolloNode.jsTypeORMPostgreSQLStripeDockerNginx
Frontend
SPA React 19 + TypeScript 5.7 buildée avec Vite 6. Couche data via Apollo Client 3.13 (cache GraphQL), routing avec React Router 7, formulaires avec react-hook-form. UI construite sur Radix UI (composants accessibles) et TailwindCSS 4 avec class-variance-authority pour les variantes, animations Motion (Framer Motion), notifications Sonner, SEO via react-helmet-async. Intégration paiement front avec @stripe/react-stripe-js. Hooks métier personnalisés (useSurvey, useQuestions, useAnswers, useDebounce, etc.).
Backend / API
API GraphQL code-first avec Apollo Server 4 et Type-GraphQL 2.0 (schéma généré depuis les décorateurs TypeScript). Persistance via TypeORM 0.3 sur PostgreSQL 15, avec entités décorées exposées directement au schéma GraphQL. Resolvers séparés par domaine (auth, survey, questions, answers, category, payment, survey-responses). Validation des entrées avec class-validator.
Sécurité & Auth
Authentification JWT stockée dans un cookie HTTP-only, secure, sameSite strict et signé (protection XSS/CSRF). Mots de passe hachés avec Argon2. Contrôle d'accès basé sur les rôles via un AuthChecker Type-GraphQL custom. Rate limiter natif maison (fenêtre glissante en mémoire) avec des seuils distincts par type d'opération (auth, mutations, recherches, requêtes), plus middleware de timeout et masquage d'email.
Paiement
Intégration Stripe 18 côté serveur : création de PaymentIntent pour l'achat de packs de quotas de sondages, persistance des paiements en base, et traitement des webhooks (payment_intent.succeeded / payment_failed) avec vérification de signature.
Architecture & Infrastructure
Monorepo en npm workspaces (app/frontend + app/backend). Conteneurisation Docker Compose multi-environnements (dev, staging, prod, test) avec PostgreSQL en healthcheck et Nginx en reverse proxy. Migrations TypeORM versionnées (init schema, seed catégories, cascade delete). Caddy et scripts de déploiement côté prod, plan de reprise après sinistre documenté.
Qualité & CI/CD
Pipelines GitHub Actions (lint + audit, tests client, build Docker staging/prod, génération de doc, contrôle de la branche source des PR). Tests Jest côté backend (resolvers + API) et Vitest + Testing Library côté frontend. Hooks Git Husky + lint-staged, ESLint, Prettier, Conventional Commits avec versioning automatisé (standard-version) et documentation TypeDoc publiée sur GitHub Pages.

Contexte

Ask&Trust est une plateforme SaaS permettant à des professionnels de créer, diffuser et analyser des sondages en ligne, monétisée via l'achat de quotas de sondages. Le projet a été développé en équipe (4 développeurs) dans le cadre de la formation Wild Code School, avec l'objectif de livrer une application full-stack complète, sécurisée et déployable en production.

Aperçus

Fonctionnalités clés

Ce que le projet démontre

Ce projet illustre la maîtrise d'une stack TypeScript full-stack moderne et d'une API GraphQL typée de bout en bout (Type-GraphQL + Apollo + TypeORM). Il démontre une vraie attention à la sécurité applicative : JWT en cookie HTTP-only signé, hachage Argon2, contrôle d'accès par rôles, rate limiting maison et conformité RGPD. La gestion d'un monorepo conteneurisé multi- environnements, des migrations de base, de l'intégration d'un système de paiement avec webhooks, ainsi qu'une chaîne CI/CD et qualité aboutie (tests, lint, commits conventionnels, doc générée) témoignent d'une approche d'ingénierie rigoureuse et orientée production, dans un contexte de travail en équipe.

← Retour à l'accueil