PROGRAMACIÓN · TYPESCRIPT · DEVOPS

Space Flight Booking

Backend de reservas de vuelos espaciales con verificación médica, control de cupos y pagos, integrado en un flujo DevOps con pruebas, Docker y GitHub Actions.

src/services/BookingService.ts
export class BookingService {
    private bookings: Booking[] = [];

    createBooking(customer: Customer, flight: Flight): Booking {
        if (flight.capacity <= 0) {
            throw new Error("No seats available on this flight.");
        }
        const newBooking = new Booking(
            this.bookings.length + 1, customer, flight, "pending"
        );
        flight.capacity--;
        this.bookings.push(newBooking);
        return newBooking;
    }
}
Formación
Programa Computer Programmer · Lambton College
Año
2024
Rol
Desarrolladora backend y DevOps
Stack
TypeScript · Jest · Docker · GitHub Actions

// 01 · LA MISIÓN

La misión

Space Flight Booking es el backend de una agencia que comercializa vuelos a Marte. Antes de confirmar una reserva, el sistema verifica que el pasajero sea mayor de edad y cuente con certificado médico; si hay cupo, crea la reserva, descuenta el asiento y registra el pago. El proyecto tenía un segundo objetivo igual de importante: aplicar prácticas DevOps, con pruebas automatizadas, una imagen Docker y un pipeline en GitHub Actions que instala, prueba, compila y publica la aplicación. Proyecto desarrollado en el programa Computer Programmer de Lambton College, en Ontario (Canadá), bajo estándares profesionales de desarrollo, documentación y control de versiones.

// QUÉ SE CONSTRUYÓ

Lógica de negocio

  • Verificación médica: mayor de 18 años y con certificado
  • Reservas con control de cupos
  • Cancelaciones que liberan el asiento
  • Pagos registrados por reserva
  • Estados definidos con enums: confirmada, pendiente y cancelada

Calidad

  • Pruebas en Jest para reservas, pagos y verificación médica
  • Registro de eventos con fecha y hora
  • Entidades y servicios separados

DevOps

  • Dockerfile que compila TypeScript y arranca la aplicación
  • Pipeline en GitHub Actions sobre la rama develop
  • Instalación, pruebas y compilación en cada push
  • Publicación de la imagen en Docker Hub con credenciales en secrets

// RETOS Y SOLUCIONES

Estructurar el pipeline

Definir los pasos del flujo en YAML fue el primer reto. Lo resolví estudiando la documentación de GitHub Actions y ejemplos prácticos hasta automatizar la instalación, las pruebas y la compilación.

Docker en un equipo incompatible

Mi computador no admitía Docker. Como el proyecto estaba versionado en GitHub, lo cloné en otro equipo y continué el trabajo sin perder avances, hasta construir la imagen y publicarla en el registro.

El despliegue en la nube

Para el despliegue continuo exploré AWS y Azure. Ambos requerían suscripciones y configuraciones avanzadas, por lo que la entrega llegó hasta la publicación de la imagen en Docker Hub y el despliegue en la nube quedó como siguiente etapa.

// PRUEBAS

Las siete pruebas aprobadas

npm test
$ npm test

 PASS  tests/PaymentService.test.ts
 PASS  tests/BookingService.test.ts
 PASS  tests/MedicalService.test.ts

Tests:       7 passed, 7 total

// PROCESO

Cómo lo hice

  1. 01

    Push

    Un cambio llega a la rama develop.

  2. 02

    Pruebas

    npm ci y Jest.

  3. 03

    Build

    TypeScript compilado.

  4. 04

    Docker

    Se construye la imagen.

  5. 05

    Docker Hub

    La imagen se publica.

MISIÓN CUMPLIDA

Resultados e impacto

¿Necesitas un sistema de reservas o pagos?

Desarrollo backends a la medida, probados y listos para desplegarse con prácticas DevOps.