Pular para o conteúdo principal

Engenharia na Appolus

Esta área reúne os padrões de engenharia usados nos projetos da Appolus: arquitetura, modelagem de dados, banco, testes, segurança e deploy. O objetivo é que qualquer pessoa que entre em um projeto encontre as mesmas convenções.

Stack predominante

A maior parte dos sistemas são monolitos Ruby on Rails com front-end em React/Vue, banco PostgreSQL e processamento assíncrono com Sidekiq + Redis. O InfraSpawn é a exceção: backend em Go com front em React/Vite.

ProjetoBackendFront-endBancoObservação
Syens (educacao)Rails 3.2 (Ruby 2.6)ERB + Vue/React, WebpackPostgreSQLMultitenant (multiescola); base legada grande
Chamada Escolar (cpe-console)Rails 7.2 (Ruby 3.x)React + esbuildPostgreSQLPundit, Sidekiq, auditoria
Chamada Escolar (cpe-inscricao)React (SPA)Portal público de inscrição
Relatórios (reports)Rails 8.1 (Ruby 4.0)esbuildPostgreSQLMulticonta; auth por convite + JWT
Salus (saude)Rails 4.0 (Ruby 2.3)React, WebpackPostgreSQLAuditoria via PaperTrail
InfraSpawnGoReact/Vite (TS)PostgreSQLTerraform; gestão de infra AWS

As versões variam bastante entre projetos (de Rails 3 legado a Rails 8). Antes de escrever código, confirme a versão do projeto: o que vale no reports (Rails 8) pode não existir no educacao (Rails 3).

Princípios comuns

  • Código em inglês, conteúdo de interface via i18n (config/locales, pt-BR).
  • Controllers magros: regra de negócio em models, service objects e query objects, não no controller.
  • Segurança por padrão: autenticação (Devise), autorização (CanCan/Pundit) e trilha de auditoria em toda ação relevante.
  • Multitenancy: no Syens, todo dado é isolado por escola/cliente — nunca escreva consultas que vazem dados entre escolas.
  • Assíncrono para o que é pesado: e-mails, PDFs, exportações e operações em massa vão para o Sidekiq.
  • Banco como fonte de integridade: além das validações de modelo, use constraints (chaves estrangeiras, not-null) e índices no banco.

Páginas desta área