Sistema Syens — educacao
Sistema de gestão educacional para redes públicas, multiescola (multitenant) na mesma instância. É a maior e mais antiga base de código da Appolus.
Manual de uso (não técnico): Sistema Syens.
Stack
| Item | Tecnologia |
|---|---|
| Linguagem | Ruby 2.6.10 |
| Framework | Rails 3.2 |
| Banco | PostgreSQL |
| Autenticação | Devise |
| Autorização | CanCan |
| Jobs | Sidekiq + Redis |
| Auditoria | audited |
| Front-end | ERB + Bootstrap, Vue 2, React 15 (legado), Webpack 5 |
| Armazenamento | AWS S3 (aws-sdk) |
| Testes | RSpec; features Gherkin (features/, especificacao/) |
Porte: ~627 models e mais de 3.000 migrations.
Organização do código
Além do MVC, usa camadas em app/: services/ e actions/ (regra de negócio),
queries/ (consultas), policies/, presenters/, serializers/, forms/,
validators/, workers/ (Sidekiq), uploaders/, enumerations/, parsers/ e
adapters/. Veja Arquitetura e padrões.
Código em inglês; textos de interface via i18n (config/locales, pt-BR).
Domínios principais
Alunos e matrículas, notas e boletins, frequência, turmas e professores, comunicados, relatórios e Censo Escolar (Educacenso). O detalhamento funcional está no manual do Syens.
Convenções específicas (Rails 3 / Ruby 2.6)
- Sem
ApplicationRecord(models herdam deActiveRecord::Base). - Strong parameters via
attr_accessible(nãoparams.permit). - Evite sintaxe de Ruby 2.7+ e APIs de Rails 4+.
- Multitenancy: toda query e regra escopada à escola/cliente — nunca vaze dados entre escolas.
- Novo recurso de permissão: adicione em
config/locales/roles.ymle rodebundle exec rake roles:update.
Como rodar
Setup local em docs/project_setup.md (usa asdf para Ruby 2.6.10 e Node) e
docs/installing_a_new_environment.md. Há também docker-compose.yml e
Dockerfile.dev. O repositório traz um CLAUDE.md com o contexto do projeto.
Qualidade e deploy
- CI no GitHub Actions: RuboCop, ESLint, Webpack build e Tests.
- Imagens Docker (
Dockerfile,Dockerfile.sedu); infraestrutura AWS provisionada pelo InfraSpawn (syens.tf).