Skip to content
Andrés Cuello
Español
← All work
Case studyIndependent projectIn development

Ges2l

A multi-tenant platform for educational institutions, with single sign-on, an administrative panel, an academic module and a bilingual marketing site. My most substantial full-stack application.

Status
In development and user-acceptance testing. The marketing site is public; the platform is not yet in production use by institutions.
Built with
NestJS · Fastify · React · PostgreSQL · Drizzle · Redis · Astro · Turborepo
Links
Visit site
Home page of the Ges2l marketing site in English. The product panel shown on it is an illustrative mock-up with sample data.
Screenshot of ges2l.com/en, public marketing siteThe dashboard in this screenshot is an illustrative mock-up on the public marketing site, not data from an institution using the platform.

Context

Schools and academic institutions often run administration and academics in separate tools. Ges2l brings them into one platform: an administrative panel (campuses, users, roles, academic years) and an academic module (periods, groups, attendance, grades), behind a single account system.

What I built

  • A NestJS 12 API on Fastify, with PostgreSQL 18 behind PgBouncer and Drizzle ORM for schema, migrations and seeds.
  • Multi-tenant data and role-based access, so each institution only sees its own records and each user only what their role allows.
  • Single sign-on across subdomains (accounts, panel, academy, my account) with Redis-backed sessions, plus JWT for mobile and API clients.
  • React 19 and Vite frontends with TanStack Query and Zustand, sharing auth, i18n, validation and UI packages in a pnpm and Turborepo monorepo.
  • An Astro marketing site (ges2l.com) with typed i18n, localized routes, content collections and scripts that audit SEO metadata, translations and the content security policy hashes.
  • Docker infrastructure for local development and deployment, with Nginx, PgBouncer and Redis.

Decisions

  • Shared packages over copy-paste. Auth types, validators, i18n resources and UI components live once and are consumed by every app.
  • The marketing site stays Astro-only. React is allowed there only inside an island; today it ships no React at all.
  • Quality gates in the toolchain: oxlint, oxfmt, syncpack and knip run across the monorepo.

Status

In development and user-acceptance testing. The marketing site at ges2l.com is public; the platform is not yet in production use by institutions. The dashboard in the marketing screenshot is an illustrative mock-up with sample data.