Overview
School management is exclusively available to superadmins. This module allows you to create, configure, and manage multiple schools within the Athena ERP platform. Each school operates as an independent tenant with its own data, users, and settings.Permission required:
manage:schools - Only users with the superadmin role can access these features.Viewing Schools
All schools in the platform are accessible from the admin panel.Access Admin Panel
Navigate to the admin section of Athena ERP. Only superadmins will see this option.
View Schools List
The schools list displays all registered institutions with their key information:
- School name
- NIT (tax identification number)
- Resolution number
- Active/inactive status
- Creation and update timestamps
API Endpoint
Creating a School
When creating a new school, the system automatically initializes default settings.Prepare School Information
Gather the required information:
- Name: Official school name (required)
- NIT: Colombian tax ID (optional)
- Resolution: Education ministry resolution number (optional)
- Active Status: Whether the school is operational (defaults to true)
The school ID is automatically generated as a UUID and serves as the tenant identifier throughout the system.
Updating School Information
School details can be updated at any time, including both basic information and advanced settings.Update Basic Fields
Modify any of the following fields:
- School name
- NIT
- Resolution number
- Active status
School Settings Structure
TheSchoolSettings model stores institutional configuration:
| Field | Type | Description |
|---|---|---|
pei_summary | Text | Summary of the institutional educational project (PEI) |
simat_settings | JSON | Colombian SIMAT integration configuration |
branding_settings | JSON | Logo, colors, and visual identity |
security_settings | JSON | Security and access policies |
habeas_data_text | Text | Habeas data compliance statement |
/home/daytona/workspace/source/athena-api/app/models/school.py:24
Deactivating vs Deleting
Deactivating a School
Setis_active to false to temporarily disable a school without losing data:
Deleting a School
- School memberships
- School years and academic periods
- Students and enrollments
- Academic records
- Discipline cases
- Communications
Multi-Tenancy Architecture
Each school operates as an isolated tenant:- Data Isolation: Schools cannot access each other’s data
- User Scoping: Users are assigned to schools via
SchoolMembership - RLS (Row-Level Security): Database queries automatically filter by school context
- Tenant Detection: The system identifies the current school from the user’s active membership
/home/daytona/workspace/source/athena-api/app/routers/admin.py:50
Best Practices
NIT Validation
NIT Validation
Ensure the NIT follows Colombian tax ID format (e.g.,
900123456-7). While not enforced at the database level, maintaining consistency helps with SIMAT integration and official reporting.Resolution Numbers
Resolution Numbers
Store the complete resolution including number and year (e.g.,
001234 de 2024). This is required for official documentation and compliance.PEI Documentation
PEI Documentation
Keep the PEI summary updated as it may be referenced in student reports and official communications.
Deactivate Before Delete
Deactivate Before Delete
Always deactivate a school first and verify no active processes remain before permanent deletion.
Related Resources
User Management
Assign users and roles to schools
School Settings
Configure branding, SIMAT, and security
School Years
Set up academic calendar structure
API Reference
Schools API endpoints documentation