AletzMan /
code_challenge_and_quiz
Plataforma interactiva de retos técnicos potenciada por IA. alida algoritmos y responde quizzes técnicos con feedback en tiempo real.
54/100 healthLoading repository data…
EdwardDevFS / repository
Reto técnico en Node.js: Desarrollo de un flujo de agendamiento de citas médicas para una aseguradora, usando arquitectura AWS Serverless con Lambda, EventBridge, API Gateway, SQS, SNS, DynamoDB y RDS, garantizando un sistema escalable, ágil y desacoplado.
A transparent discovery signal based on current public GitHub metadata.
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
Sistema de agendamiento de citas médicas para asegurados usando arquitectura serverless en AWS.
El sistema implementa una arquitectura event-driven usando los siguientes servicios de AWS:
Lambda(appointment) crea cita pending en DynamoDBSQS_PE o SQS_CLLambda(appointment_pe) o Lambda(appointment_cl)SQS(confirmations)Lambda(confirmationProcessor)completed en DynamoDBappointment (HTTP), appointment_pe, appointment_cl, confirmationProcessorSQS_PE, SQS_CL, SQS_confirmationsnpm install
El archivo serverless.yml incluye estas variables de entorno:
environment:
APPOINTMENTS_TABLE: appointment-backend-appointments-dev
SNS_TOPIC_ARN: arn:aws:sns:us-east-1:xxx:appointment-topic-dev
EVENT_BUS_NAME: appointment-event-bus-dev
RDS_HOST: medical-appointment-db.cqzy2q8yetvp.us-east-1.rds.amazonaws.com
RDS_USER: admin
RDS_PASSWORD: :qgkFd!<*))8iOFk-J6|e7_]cAi-
RDS_DATABASE: appointments_db
# Desarrollo
sls deploy --stage dev
# Producción
sls deploy --stage prod
sls offline start
Crea una nueva cita médica.
Request:
{
"insuredId": "00001",
"scheduleId": 100,
"countryISO": "PE",
"centerId": 4,
"specialtyId": 3,
"medicId": 4,
"date": "2024-09-30T12:30:00Z"
}
Response (202):
{
"message": "agendamiento en proceso",
"appointment": {
"insuredId": "00001",
"scheduleId": 100,
"countryISO": "PE",
"status": "pending",
"createdAt": "2024-09-07T10:30:00Z"
}
}
Obtiene todas las citas de un asegurado.
Response (200):
{
"insuredId": "00001",
"appointments": [
{
"scheduleId": 100,
"countryISO": "PE",
"status": "completed",
"centerId": 4,
"specialtyId": 3,
"medicId": 4,
"date": "2024-09-30T12:30:00Z",
"createdAt": "2024-09-07T10:30:00Z",
"updatedAt": "2024-09-07T10:35:00Z"
}
]
}
# Tests unitarios
npm test
# Tests con coverage
npm run test:coverage
# Tests en modo watch
npm run test:watch
# Crear cita para Perú
curl -X POST https://your-api.amazonaws.com/dev/appointments \
-H "Content-Type: application/json" \
-d '{
"insuredId": "00001",
"scheduleId": 100,
"countryISO": "PE",
"centerId": 4,
"specialtyId": 3,
"medicId": 4,
"date": "2024-09-30T12:30:00Z"
}'
# Obtener citas del asegurado
curl https://your-api.amazonaws.com/dev/appointments/00001
src/
├── application/ # Casos de uso (Commands/Queries)
│ ├── appointment/
│ │ ├── commands/ # CreateAppointment, ProcessCountry, Complete
│ │ ├── queries/ # GetAppointmentsByInsuredId
│ │ └── repositories/ # Interfaces
│ ├── eventbridge/ # EventBridge abstractions
│ └── sns/ # SNS abstractions
├── domain/ # Entidades del dominio
│ └── Appointment.ts
├── infrastructure/ # Implementaciones concretas
│ ├── dynamo/ # Repositorio DynamoDB
│ ├── rds/ # Repositorio RDS
│ ├── eventbridge/ # Publisher EventBridge
│ └── sns/ # Publisher SNS
└── interfaces/ # Controladores/Handlers
├── http/ # API handlers
├── sqs/ # SQS handlers
└── confirmation/ # Confirmation handler
Partition Key: insuredId (String)
Sort Key: scheduleId (Number)
Attributes:
- insuredId: String (5 digits)
- scheduleId: Number
- countryISO: String ("PE" | "CL")
- centerId: Number (optional)
- specialtyId: Number (optional)
- medicId: Number (optional)
- date: String ISO (optional)
- status: String ("pending" | "completed")
- createdAt: String ISO
- updatedAt: String ISO (optional)
CREATE TABLE appointments (
id INT PRIMARY KEY AUTO_INCREMENT,
insured_id VARCHAR(5) NOT NULL,
schedule_id INT NOT NULL,
country_iso VARCHAR(2) NOT NULL,
center_id INT,
specialty_id INT,
medic_id INT,
datetime DATETIME,
status VARCHAR(20) NOT NULL DEFAULT 'completed',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
UNIQUE KEY unique_appointment (insured_id, schedule_id)
);
Todos los lambdas incluyen logging detallado:
console.log("Processing appointment:", payload);
console.error("Error in handler:", error);
Los logs están disponibles en CloudWatch Logs con los siguientes grupos:
/aws/lambda/appointment-backend-dev-appointment/aws/lambda/appointment-backend-dev-appointmentPe/aws/lambda/appointment-backend-dev-appointmentCl/aws/lambda/appointment-backend-dev-confirmationProcessorEl serverless.yml incluye todos los permisos necesarios:
EVENT_BUS_NAME esté configurado correctamentecountryISO)Para reportar issues o solicitar features, crear un issue en el repositorio del proyecto.
Selected from shared topics, language and repository description—not editorial ratings.
AletzMan /
Plataforma interactiva de retos técnicos potenciada por IA. alida algoritmos y responde quizzes técnicos con feedback en tiempo real.
54/100 healthBruGeth /
Este es un sistema fullstack para la gestión de buses, desarrollado como parte de un reto técnico. Incluye un backend en Java con Spring Boot y una base de datos PostgreSQL, junto con un frontend en React y TypeScript. Permite visualizar buses con paginación y ver detalles individuales.
44/100 healthemaldonadon /
📌 Challenge Frontend Junior - Reto técnico donde implementé una solución con React, TypeScript y Tailwind CSS, enfocándome en buenas prácticas, rendimiento y UI responsiva.
32/100 healthVikus7 /
Sistema de administración de clientes empresariales (B4B/JDE), desarrollado con Spring Boot para el backend y React para el frontend. Proyecto creado como parte de un reto técnico de desarrollo, enfocado en gestión de clientes, seguridad y escalabilidad.
63/100 health