How interlegis/sapl works
SAPL is a web system supporting legislative-process work for legislative houses. A visible user workflow is browsing parliamentarians: the frontend loads legislative terms, requests parliamentarian records from the API, then filters and displays the results. The broader product is split into legislative, administrative, session, and public-facing modules; the README also documents password recovery and matter/document tracking, which depend on reCAPTCHA. Several backend modules are unsampled, so their capabilities are represented by their exact directories, while edges are limited to relationships visible in the excerpts or README.
Main entry points: views.py Public pages · base/models.py Shared records · main.js Parliamentarian browser · parlamentares/models.py Parliamentarians
Components 22
Legislative records
- Legislative matters
sapl/materia/models.py - Legal norms
sapl/norma/models.py - Consolidated texts
sapl/compilacao/models.py - Parliamentarians
sapl/parlamentares/models.py
House operations
- Administrative documents
sapl/protocoloadm/models.py - Plenary sessions
sapl/sessao/models.py - Committees
sapl/comissoes/models.py - Public hearings
sapl/audiencia/models.py - Session panel
sapl/painel/views.py - PDF reports
sapl/relatorios/views.py
Public services
- LexML services
sapl/lexml/views.py - Public pages
sapl/base/views.py
Application platform
- SAPL web app
sapl/urls.py - Shared records
sapl/base/models.py - CRUD framework
sapl/crud/base.py - Access rules
sapl/rules/apps.py - REST API
sapl/api/views.py
User interface
- Parliamentarian browser
frontend/src/__apps/parlamentar/main.js - Text editor UI
frontend/src/__apps/compilacao/main.js - Shared UI tools
frontend/src/__global/main.js
Other components
- House user
- Google reCAPTCHA
Connections 19
- House user → SAPL web app: uses
- SAPL web app → Public pages: routes requests
- Public pages → Shared records: reads settings
sapl/base/views.py - Public pages → Legislative matters: uses matter records
sapl/base/views.py - Public pages → Legal norms: uses norm records
sapl/base/views.py - Public pages → Parliamentarians: uses legislator records
sapl/base/views.py - Public pages → Administrative documents: uses document records
sapl/base/views.py - Public pages → Plenary sessions: uses session records
sapl/base/views.py - Public pages → PDF reports: generates reports
sapl/base/views.py - Public pages → CRUD framework: uses framework
sapl/base/views.py - House user → Parliamentarian browser: browses
- Parliamentarian browser → REST API: requests records
frontend/src/__apps/parlamentar/main.js - Parliamentarian browser → Parliamentarians: displays results
- Text editor UI → Consolidated texts: edits texts
- Shared records → Legislative matters: references
sapl/base/receivers.py - Shared records → Parliamentarians: references
sapl/base/receivers.py - Shared records → Administrative documents: references
sapl/base/receivers.py - REST API → Access rules: enforces access
- House user → Google reCAPTCHA: verifies identity