Logotipo pessoal
Mario Lucas
ProjectIn production

Repositório Acadêmico CECAPE

Sistema de gestão acadêmica completo, da arquitetura ao deploy.

Repositório Acadêmico CECAPE

Project Overview

A Biblioteca CECAPE é o sistema central de gestão acadêmica da Faculdade CECAPE — responsável por publicações, simuladores ENEM, calculadoras e autenticação institucional. Nasceu como um CRUD simples e cresceu para um ecossistema completo com Domain-Driven Design, infraestrutura AWS e Full-Text Search nativo.

Goals

  • 100/100 no Google PageSpeed Insights para garantir acesso a alunos com internet precária no interior do Ceará

  • Arquitetura para crescer de 3 para 10+ domains sem regressão entre contextos

  • Infraestrutura AWS segura sem ponto único de falha

  • Full-Text Search performático sem Elasticsearch

  • Side effects desacoplados da lógica principal via EventBus assíncrono

The Problem

Sistemas legados separados sem padrão arquitetural. O escopo cresceu de 3 para 6+ models antes da primeira entrega, expondo a fragilidade do MVC tradicional — qualquer mudança causava regressão em contextos não relacionados.

Research & Discovery

Estudei DDD de Eric Evans aplicado a sistemas educacionais. A principal descoberta: o maior problema era de linguagem — equipe pedagógica e técnica usavam os mesmos termos com significados diferentes. Bounded contexts resolveram isso com vocabulários explícitos por domínio.

Design Decisions

  • DDD com bounded contexts independentes: auth, publications, academic, metadata

  • EventBus tipado: PUBLICATION_CREATED dispara auditoria, indexação e estatísticas assincronamente

  • tsvector + índice GIN no PostgreSQL — Full-Text Search sem Elasticsearch

  • VPC com subnets privadas, RDS sem IP público, App Runner + IAM least privilege

  • Next.js Server Components — LCP de 0,8s em produção

Key Challenges

  • Escopo 3 → 6+ models: bounded contexts permitiram crescimento sem regressão

  • Queries tsvector customizadas com Prisma — o ORM não suporta isso nativamente, exigiu $queryRaw

  • Múltiplos subscribers assíncronos no EventBus sem race conditions

  • PageSpeed 100/100 com SSR, imagens otimizadas e code splitting agressivo

Outcomes & Reflection

100/100 PageSpeed com LCP 0,8s e TBT 30ms. EventBus reduziu tempo de resposta da API em ~40%. Decisão mais importante: definir bounded contexts antes de escrever código — evitou meses de refatoração.

Preview