The Oficina de Tecnologías de la Información (OTI) is the institutional unit of the Universidad Nacional de San Cristóbal de Huamanga responsible for planning, designing, developing, integrating, and operating the university's information systems and technological infrastructure.
Our work focuses on the digital transformation of UNSCH's academic and administrative processes, ensuring the availability, security, and integrity of the services that support university life.
| Parent unit | Rectorado — Universidad Nacional de San Cristóbal de Huamanga |
| Office | Oficina de Tecnologías de la Información (OTI) |
| Location | Ciudad Universitaria, Av. Independencia s/n, Ayacucho, Perú |
| oti@unsch.edu.pe | |
| Institutional portal | www.unsch.edu.pe |
| Service hours | Monday – Friday, 08:00 – 16:00 (UTC−05:00) |
The repositories in this organisation fall into two broad groups:
institutional web applications (web-apps/) and shared
platform services (svc/). Each system is developed as an
independent repository (or set of repositories) with its own build,
test, and deployment pipeline.
| System | Purpose | Stack |
|---|---|---|
intranet |
Central admin intranet: IAM, systems registry, content, portal catalog | Go (Fiber v3) · Next.js 16 · PostgreSQL |
certificados |
Issue and verify institutional attendance certificates with visual editor | Python (FastAPI) · Next.js 16 · WeasyPrint |
ldos |
Academic load management and planning | Go · Next.js 16 · Docker Compose |
mesa-ayuda |
Help-desk / ticketing platform for the UNSCH community | Go (Fiber v3) · Next.js 16 |
perfil |
User profile, document verification and biometric identification | Go · Next.js 16 · ONNX Runtime |
| Service | Purpose | Stack |
|---|---|---|
svc/auth |
Authentication, sessions, JWT issuance and RBAC primitives | Go |
svc/mail |
Internal mail service: SMTP, templates, and async delivery (Kafka) | Rust (axum) · Next.js 16 · Apache Kafka |
svc/storage |
Object storage facade (S3-compatible) for institutional files | Go |
svc/sync |
Scheduled data synchronisation between UNSCH systems | Go · Next.js 16 |
Each repository contains its own
README.md, and the more complex ones (e.g.intranet-backend) ship a dedicatedARCHITECTURE.md.
The platform is built on modern, open, long-term-supported foundations. Per-stack conventions live in each repository.
Every repository under OTI-UNSCH is expected to follow the same
baseline. Stack-specific details are documented in each repository's
AGENTS.md, CLAUDE.md, or ARCHITECTURE.md.
- Trunk-based development with short-lived feature branches and
Pull Requests into
main. - Conventional Commits for every commit (
feat:,fix:,refactor:,docs:, …). - Mandatory code review by an OTI maintainer before integration; CI must be green.
- Secrets outside the repository — environment variables and secret managers only; no credentials in history.
- Per-repository documentation —
README.md, changelog, and (where applicable)ARCHITECTURE.md. - Quality gates — linting and formatting (
golangci-lint,cargo clippy,ruff,eslint) and unit tests in CI. - Accessibility and localisation — user-facing interfaces aim for
WCAG 2.1 AA and are localised for
es-PE.
External contributors are welcome, but the Software is proprietary to UNSCH. Please:
- Read the organisation-level
CODE_OF_CONDUCTandSECURITYbefore opening any issue. - Read
CONTRIBUTINGfor branching, commits, and review expectations. - Clone the specific repository you need; there is no monorepo at the organisation level.
- Open a Pull Request against the appropriate
develop(or repository-default) branch.
If you do not yet have a written collaboration agreement with UNSCH, write to oti@unsch.edu.pe before opening an issue.
Do not open public GitHub issues for security vulnerabilities.
See SECURITY.md for the responsible-disclosure
process and the contact channel
(oti@unsch.edu.pe).
All original work in this organisation is © Universidad Nacional de
San Cristóbal de Huamanga — Oficina de Tecnologías de la Información,
made available under the terms described in LICENSE.
Third-party components retain their respective upstream licences.