NuestraVoz — Campus Virtual is a full-stack academic management SaaS platform designed for universities and radio-broadcasting schools. It provides a unified digital environment where administrators, teachers, students, and preceptors collaborate through virtual classrooms, activity submissions, threaded discussion forums, final grade management, and bulletin announcements — all from a single, role-aware interface.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/Renzo717/Aula-Virtual-Universidad-Radiolocucion/llms.txt
Use this file to discover all available pages before exploring further.
What is NuestraVoz?
NuestraVoz replaces scattered spreadsheets, email threads, and paper-based workflows with a structured campus portal. Each user logs in to a dashboard tailored to their role. Students see their enrolled courses, pending activities, and grade bulletins. Docentes manage their subjects, publish materials, create graded activities, and score submissions. Preceptors oversee enrollment records and academic progress across careers. Admins control the entire platform — users, careers, courses, and audit logs. The platform is built on modern open-source infrastructure: an Astro + React server-side-rendered frontend, an Express.js + TypeScript REST API, and a Supabase (PostgreSQL) database with Row Level Security, file storage, and built-in auth.User Roles
NuestraVoz defines four distinct roles, each with a scoped permission set enforced at both the API and database layers via Supabase RLS policies.| Role | Spanish key | Primary responsibilities |
|---|---|---|
| Admin | admin | Full platform control — manage users, careers, courses, and view audit logs |
| Docente | docente | Create and grade activities, publish resources, manage classroom announcements |
| Estudiante | estudiante | View enrolled subjects, submit activities, participate in forums, check grades |
| Preceptor | preceptor | Manage enrollments, view student bulletins, oversee academic records |
Core Capabilities
Virtual Classrooms (Aulas) Each subject (materia) has a dedicated classroom with announcements, file resources, quick-access links, and a schedule. Docentes publish materials and manage the classroom; students access their enrolled subjects only.
Activity Submissions
Docentes can create two types of activities: a simple file submission (entregable_simple) where students upload documents, and an auto-graded form (formulario) with multiple-choice questions. The API enforces a total of exactly 10 points per form. Late submissions are tracked separately with the tardia flag.
Discussion Forums
Every subject has a threaded forum (foro) with nested replies, tagging, and reaction counts. Any enrolled user can open a thread; forum activity is surfaced on both the student and admin dashboards.
Final Grade Management
Docentes and admins record end-of-year notas_finales with support for recovery-exam scores (nota_recuperatorio) and libre / regular status flags. The platform prevents marking a student as both libre and regular simultaneously.
Bulletins
Preceptors and admins can generate per-student bulletins (boletines) that aggregate all enrolled subjects, final grades, and academic standing into a single printable view.
Tech Stack
Astro + React Frontend
Server-side-rendered pages with React islands for interactive components. Runs on the Node.js adapter at
localhost:4321 and proxies all /api traffic to the Express server.Express.js API
TypeScript REST API secured with
helmet and cors. Handles auth via signed session cookies (nv_session), and exposes route groups for every domain: auth, users, careers, courses, classrooms, forums, finals, and bulletins.Supabase / PostgreSQL
Provides the PostgreSQL database, Row Level Security policies, Supabase Storage for file uploads, and versioned migrations. The service-role key is used exclusively by the backend — the frontend never touches Supabase directly.
Shared TypeScript Package
@nuestravoz/shared exports all domain types, Zod validation schemas, and schedule helpers. Both the API and the frontend import from this single source of truth, eliminating duplicated type definitions.Explore the Docs
Quickstart
Get a local instance running in under 10 minutes — install, configure Supabase credentials, seed demo data, and sign in.
Architecture
Deep dive into the monorepo layout, data-flow diagram, and how the three packages fit together.
Demo credentials are seeded automatically by
pnpm --filter @nuestravoz/api seed. Use admin@nuestravoz.edu / Admin123! to explore the full admin dashboard on a fresh local environment.