Téo Casanova

Abricot.

Next.js project management app to create projects, organize tasks, manage contributors and generate task drafts with Mistral.

Abricot
Full-StackSaaSAI
nexttypescriptauthmistraldockercypress

Context

Project built as part of the OpenClassrooms program. The goal was to develop the frontend of a collaborative SaaS on top of an existing Express API, then improve its technical environment and quality.

Stack

Next.js App RouterTypeScriptReactReact Hook FormZodCSS ModulesExpressPrismaPostgreSQL / SupabaseMistral APIDockerVitest / RTLCypressGitHub Actions

Technical choices

  • Next.js App Router to separate server-side loading from client-side interactions
  • Route Handlers to secure exchanges between the browser and the Express API
  • React Hook Form and Zod to handle and validate forms
  • Prisma and Supabase PostgreSQL to provide remote data persistence
  • Mistral on the server to generate task drafts validated before creation
  • Docker to containerize the backend and make its runtime environment reliable
  • Vitest, RTL and Cypress to cover business behaviors and critical user flows
  • GitHub Actions to automate lint, typecheck, tests and builds

Features

Project managementTask managementContributorsList / Kanban viewAI generationJWT authenticationResponsive interface

What this project demonstrates

  • Building a complete Next.js frontend connected to an Express API
  • Handling complex forms with React Hook Form and Zod
  • Secure integration of an LLM with validation of its responses
  • Migration from SQLite to Supabase PostgreSQL with Prisma
  • Containerization of a Node backend with Docker
  • Setting up unit, component and end-to-end tests
  • Automation of quality checks with GitHub Actions

Current limitations

  • Backend initially provided, then adapted for PostgreSQL and deployment
  • AI task creation performed sequentially, without a bulk creation endpoint
  • Test coverage deliberately focused on critical flows and logic