@asistoya/shared
v1.1.0
Published
Tipos y servicios compartidos para AsistoYa
Maintainers
Readme
@asistoya/shared
Tipos TypeScript, validadores Zod y servicios compartidos para el ecosistema AsistoYa.
Instalación
npm install @asistoya/sharedUso
Tipos
import {
Student,
Course,
AttendanceRecord,
Teacher,
School,
User,
Notification
} from '@asistoya/shared';
const student: Student = {
id: '123',
code: 'STU001',
name: 'Juan Pérez',
grade: '5to',
schoolId: 'school-uuid',
// ...
};Constantes
import {
ROLES,
ATTENDANCE_STATUS,
ERROR_CODES,
PAGINATION
} from '@asistoya/shared';
if (user.role === ROLES.TEACHER) {
// ...
}
if (record.status === ATTENDANCE_STATUS.PRESENT) {
// ...
}Validadores (Zod)
import {
createStudentSchema,
markAttendanceSchema,
loginSchema,
z
} from '@asistoya/shared';
// Validar datos
const result = createStudentSchema.safeParse(data);
if (!result.success) {
console.error(result.error.issues);
}
// Inferir tipos
type CreateStudentData = z.infer<typeof createStudentSchema>;Tipos de Request/Response
import {
// Requests
CreateStudentRequest,
MarkAttendanceRequest,
LoginRequest,
// Responses
StudentResponse,
LoginResponse,
PaginatedApiResponse
} from '@asistoya/shared';Servicios
import {
studentService,
attendanceService,
authService
} from '@asistoya/shared';
// Obtener estudiantes
const students = await studentService.getBySchool('school-id');
// Marcar asistencia
await attendanceService.mark({
studentCode: 'STU001',
status: 'present',
date: '2024-01-15'
});Errores
import {
AppError,
NotFoundError,
ValidationError,
UnauthorizedError
} from '@asistoya/shared';
throw new NotFoundError('Student', 'Student not found');
throw new ValidationError('email', 'Invalid email format');Estructura
src/
├── types/ # Tipos TypeScript
│ ├── student.ts # Tipos de estudiante
│ ├── course.ts # Tipos de curso
│ ├── attendance.ts # Tipos de asistencia
│ ├── teacher.ts # Tipos de profesor
│ ├── school.ts # Tipos de escuela
│ ├── user.ts # Tipos de usuario
│ ├── notification.ts # Tipos de notificación
│ ├── dashboard.ts # Tipos de dashboard
│ ├── requests.ts # DTOs de request
│ ├── responses.ts # DTOs de response
│ ├── realtime.ts # Tipos de tiempo real
│ ├── constants.ts # Constantes
│ ├── common.ts # Tipos comunes
│ └── supabase.ts # Tipos de Supabase
├── validators/ # Validadores Zod
│ ├── student.validator.ts
│ ├── teacher.validator.ts
│ ├── course.validator.ts
│ ├── attendance.validator.ts
│ ├── school.validator.ts
│ ├── auth.validator.ts
│ ├── notification.validator.ts
│ ├── report.validator.ts
│ └── common.validator.ts
└── services/ # Servicios compartidos
├── studentService.ts
├── courseService.ts
├── attendanceService.ts
├── authService.ts
├── notificationService.ts
└── errors.tsTipos Disponibles
Entidades
Student- Datos de estudiantesCourse- Datos de cursosTeacher- Datos de profesoresSchool- Datos de escuelasUser- Datos de usuariosAttendanceRecord- Registros de asistenciaNotification- Notificaciones
Status y Enums
StudentStatus- active, inactive, transferred, etc.TeacherStatus- active, inactive, on_leaveCourseStatus- active, inactive, archivedAttendanceStatus- present, late, absent, excusedUserRole- admin, teacher, parent, student, ceo
Constantes
ROLES- Roles de usuarioATTENDANCE_STATUS- Estados de asistenciaATTENDANCE_METHODS- Métodos de marcadoERROR_CODES- Códigos de errorPAGINATION- Configuración de paginaciónSchool- Datos de escuelasUser- Datos de usuariosNotification- Notificaciones
Desarrollo
# Instalar dependencias
npm install
# Build
npm run build
# Type check
npm run typecheckPublicar nueva versión
- Actualizar versión en
package.json - Crear release en GitHub
- El workflow publicará automáticamente a npm
Repositorios relacionados
- asistoya-web - App Web
- asistoya-mobile - App Móvil
- asistoya-api - API Backend