Este es el frontend del sistema de gestión de una clínica dental. Desarrollado con Angular 17, se conecta a un backend NestJS para ofrecer funcionalidades como gestión de citas, pacientes, profesionales, disponibilidades y autenticación con JWT.
- 🚀 Tecnologías principales
- 🧪 Herramientas de desarrollo
- ⚙️ Requisitos del sistema
▶️ Instalación y ejecución- 📁 Estructura de carpetas
- 🔐 Autenticación
- 🌐 Comunicación con Backend
- 🎨 Estilos
- 🧩 Componentes clave
- 📝 Esquema de Roles y Flujo
- 🖼️ Capturas de Pantalla
- Angular 17 (core, router, animations, forms)
- Angular Material 17
- RxJS 7.8
- TypeScript 5.3
- Day.js para manejo de fechas
- JWT Decode para decodificar tokens y control de roles
- FontAwesome 6 para iconos
- Zone.js para gestión de zonas de ejecución en Angular
- CSS nativo para estilos personalizados
localStoragepara persistencia de sesión
- Angular CLI para scaffolding y build
- TypeScript como lenguaje principal
- Jasmine + Karma para testing
- Node.js:
v20.11.0 - npm:
10.2.4 - Angular CLI:
17.3.17
git clone https://github.com/fran-eliot/dental-front.git
cd dental-front
npm install
ng serve -oLa aplicación se abrirá automáticamente en: 📍 http://localhost:4200
src/
├── app/
│ ├── appointments/
│ │ ├── historical-appointments/
│ │ └── new-appointments/
│ ├── dentistas/
│ │ ├── consulta-disponibilidades-dentista/
│ │ ├── dentista-dashboard/
│ │ ├── dentista-agenda-diaria/
│ │ ├── dentista-agenda-semanal/
│ │ ├── dentista-layout/
│ │ ├── historial-citas-dentista/
│ │ ├── historial-citas-paciente/
│ │ └── historial-citas-paciente-modal/
│ ├── disponibilidades/
│ │ ├── consulta-disponibilidades/
│ │ ├── consulta-preview/
│ │ ├── disponibilidades-mensuales/
│ │ ├── generador-disponibilidades/
│ │ ├── limpieza-disponibilidades/
│ │ ├── lista-disponibilidades/
│ │ ├── selector-disponibilidades/
│ │ ├── slots-libres/
│ │ └── slots-libres-preview/
│ ├── login/
│ ├── patients/
│ ├── professionals/
│ ├── register-user/
│ ├── treatments/
│ ├── unauthorized/
│ └── users/
-
La autenticación se gestiona mediante JWT:
-
Al iniciar sesión correctamente, el token se guarda en localStorage.
-
El token se incluye automáticamente en los headers de las peticiones HTTP mediante interceptores.
Authorization: Bearer <jwt_token>- El sistema protege rutas según roles: admin, dentista (futura mejora: paciente).
-
El frontend se comunica con el backend NestJS a través de servicios Angular personalizados.
-
Todos los endpoints utilizan peticiones HTTP estándar (GET, POST, PATCH, DELETE) y consumen las rutas expuestas en el backend.
-
El repositorio del backend está disponible aquí: 👉 Clínica Dental - Backend (NestJS)
-
Los endpoints están documentados vía Swagger en el backend: 📌 http://localhost:3000/api
-
Se utiliza CSS nativo (no SCSS, Tailwind ni Bootstrap).
-
Existe una hoja de estilo base compartida (custom-theme.scss) para mantener consistencia visual entre componentes:
-
Fondo semitransparente
-
Bordes redondeados y sombras suaves
-
Colores definidos por variables :root
-
-
Estética moderna, limpia y orientada a usabilidad para personal clínico y administrativo.
-
historical-appointments
-
new-appointments
-
consulta-disponibilidades-dentista
-
dentista-dashboard
-
dentista-agenda-diaria
-
dentista-agenda-semanal
-
dentista-layout
-
historial-citas-dentista
-
historial-citas-paciente
-
historial-citas-paciente-modal
-
consulta-disponibilidades
-
consulta-preview
-
disponibilidades-mensuales
-
generador-disponibilidades
-
limpieza-disponibilidades
-
lista-disponibilidades
-
selector-disponibilidades
-
slots-libres
-
slots-libres-preview
-
login
-
patients
-
professionals
-
register-user
-
treatments
-
unauthorized
-
users
A continuación se muestra un esquema simplificado con el flujo de navegación y acciones permitidas para los dos roles principales de la aplicación (Secretaria/Admin y Profesional/Dentista):
| Pantalla | Descripción |
|---|---|
![]() |
Pantalla principal tras el login |
![]() |
Pantalla de acceso al sistema |
![]() |
Listado general de servicios ofrecidos |
|
Puedes consultar la presentación general de la aplicación (incluye contexto, objetivos, estructura y funcionalidades principales) en el siguiente documento:
- Rol "Paciente" con login propio
- Notificaciones por email
- Filtrado avanzado por tipo de tratamiento
- Internacionalización (i18n)
Este proyecto ha sido desarrollado como parte de un sistema completo de gestión de una clínica dental, para el curso "Desarrollo Frontend con Angular" de Fundación Adecco.
Los autores del proyecto son:


















