Skip to content

maelgalliffet/vanlife

Repository files navigation

Vanlife weekend booking

Application web TypeScript (Front + API Serverless) pour réserver un week-end avec le van familial.

Fonctionnalités

  • Réservation provisoire (plusieurs personnes sur le même week-end)
  • Réservation définitive (une seule personne par week-end)
  • Identification de la personne à la première visite (popup + liste)
  • Texte d'information sur chaque réservation
  • Ajout de photos liées à une réservation
  • Album global des photos

Architecture

Application entièrement serverless déployée sur AWS:

Frontend

Backend

Infrastructure as Code

  • IaC: Terraform
  • Services: Lambda, API Gateway, S3, CloudFront, Route 53, ACM, IAM, CloudWatch

Démarrage local

npm install
npm run dev

Déploiement

Configuration AWS requise

Ajouter les credentials AWS en GitHub Secrets:

  • AWS_ACCESS_KEY_ID
  • AWS_SECRET_ACCESS_KEY

Déploiement manuel

# Déploiement complet (Lambda + Frontend + S3)
npm run deploy:lambda

# Mettre à jour uniquement le frontend
aws s3 sync apps/web/dist s3://vanlife-frontend-prod --delete

# Migrer les données depuis l'ancienne EC2
npm run migrate:lambda

# Migrer la base distante pour ajouter les titles manquants
npm run migrate:remote-titles

Déploiement automatique

  • Les pushes sur main déclenche le workflow GitHub Actions
  • Le workflow teste le build, puis déploie sur Lambda
  • Voir .github/workflows/deploy.yml

Coûts

Estimation mensuelle: 3-5€

  • Lambda: ~1-2€ (free tier à 1M requêtes/mois)
  • S3: ~1€
  • CloudFront: ~1-2€
  • Route 53: ~0.50€

Fichiers principaux

apps/
├── api-lambda/       # Express API pour Lambda
│   ├── src/
│   │   ├── index.ts  # Handler serverless-http
│   │   └── s3-db.ts  # Client S3 pour persistance
│   └── package.json
└── web/              # Frontend React
    ├── src/
    │   ├── App.tsx   # Composant principal
    │   └── types.ts  # Types TypeScript
    └── package.json

terraform/
├── main.tf           # S3, IAM, CloudWatch
├── lambda.tf         # Configuration Lambda
├── api-gateway.tf    # REST API
├── cloudfront.tf     # CDN frontend
└── outputs.tf        # Outputs

scripts/
├── deploy-lambda.sh  # Déploiement complet
└── migrate-to-lambda.sh  # Migration EC2→S3

Documentation

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors