Pequeño proyecto de dashboard financiero estático pensado para:
- Practicar conceptos básicos de arquitectura en AWS
- Tener un proyecto comercial/financiero en tu portafolio
- Desplegar un sitio real usando Amazon S3 y Amazon CloudFront
- Reforzar tu preparación para AWS Certified Solutions Architect – Professional
fintrack-lite-aws/
├─ README.md
├─ .gitignore
├─ website/
│ ├─ index.html
│ ├─ styles.css
│ └─ app.js
├─ docs/
│ ├─ 01-resumen-proyecto.md
│ ├─ 02-arquitectura.md
│ ├─ 03-despliegue-aws.md
│ ├─ 04-buenas-practicas.md
│ └─ 05-mejoras-futuras.md
├─ diagrams/
│ └─ arquitectura-fintrack-lite.png
└─ notes/
└─ checklist-semanal.md
FinTrack Lite es un sitio web estático (HTML + CSS + JavaScript) que simula el dashboard financiero de una pequeña empresa de servicios.
🔗 Demo en vivo (S3 static website):
http://fintrack-lite-fer-12345.s3-website-us-east-1.amazonaws.com/
El dashboard muestra:
- ✅ Ingresos totales del periodo
- ✅ Gastos totales
- ✅ Utilidad neta
- ✅ Desempeño mensual (ingresos vs gastos)
- ✅ Tabla con detalle por mes (margen, utilidad, etc.)
La lógica y los datos están en el lado del cliente (JS), para que puedas concentrarte en la parte cloud:
- Hosting estático en Amazon S3
- Distribución global vía Amazon CloudFront
- Seguridad básica: versioning, encryption at rest, bucket policy pública controlada
- Logs de acceso de CloudFront en un bucket dedicado
- 01 – Resumen del proyecto
- 02 – Arquitectura del proyecto
- 03 – Despliegue en AWS (paso a paso)
- 04 – Buenas prácticas en AWS
- 05 – Mejoras futuras y roadmap
Este proyecto está pensado para un nivel principiante, pero con enfoque de architect:
- Entender cómo funciona static website hosting en S3
- Entender el papel de CloudFront como CDN y terminación HTTPS
- Practicar creación de:
- Buckets S3 para contenido y logs
- Distribuciones de CloudFront
- Bucket policies básicas
- Ver en la práctica:
- Versionado de objetos (S3 Versioning)
- Cifrado transparente (SSE-S3)
- Caché e invalidaciones en CloudFront
- Poder explicar este proyecto en una entrevista técnica o en tu portafolio
-
Amazon S3 (bucket principal)
- Almacena el sitio estático (
index.html,styles.css,app.js). - Está configurado con static website hosting.
- Tiene versioning y encryption SSE-S3 activados.
- Define una bucket policy para leer los archivos de forma pública (solo objetos, no el bucket completo).
- Almacena el sitio estático (
-
Amazon CloudFront
- Distribuye el sitio globalmente desde Edge Locations.
- Termina el tráfico HTTPS.
- Hace caché del contenido estático.
- Envía logs de acceso a un bucket de logs en S3.
-
Amazon S3 (bucket de logs)
- Recibe los logs de CloudFront.
- Permite análisis posterior (Athena, etc. en una futura versión).
-
IAM (no se ve en el diagrama)
- Controla permisos para crear y administrar recursos.
- El usuario/role que usas para el laboratorio debe tener permisos administrativos en el entorno de lab.
-
Amazon S3
- Storage de objetos
- Static website hosting
- Versioning
- Encryption (SSE-S3)
- Logs (opcional)
-
Amazon CloudFront
- CDN global
- HTTPS
- Caché
- Access logs hacia S3
-
AWS IAM
- Gestión de usuarios, roles y políticas
Opcional en una versión futura: Amazon Route 53 para usar tu propio dominio.
-
Cuenta de AWS activa.
-
Usuario IAM con permisos suficientes para:
- Crear y modificar buckets S3
- Crear distribuciones de CloudFront
- Administrar políticas de bucket
- Navegador web moderno (Chrome, Firefox, Edge, etc.).
- Editor de texto (VS Code, Sublime, etc.).
fintrack-lite/
├─ index.html # Estructura del dashboard
├─ styles.css # Estilos visuales
└─ app.js # Lógica y datos financieros de ejemplo
El proyecto es 100% estático. No hay backend. Todo el enfoque está en cloud hosting + arquitectura básica.
-
Clona este repositorio o descarga los archivos:
git clone https://github.com/TU-USUARIO/fintrack-lite-aws.git cd fintrack-lite-aws -
Abre
index.htmlen tu navegador (doble clic o “Open with Live Server” si usas VS Code). -
Verifica que:
- Se muestren las tarjetas de Ingresos, Gastos, Utilidad neta.
- Se vea el pseudo-gráfico de barras.
- La tabla tenga datos para los meses.
Si funciona en local, estás listo para desplegar a AWS.
-
En la consola de AWS, ve a S3 → Create bucket.
-
Configura:
- Bucket name:
fintrack-lite-<tu-nombre>-<random>(todo en minúsculas). - Region:
us-east-1(o la región que prefieras para el lab). - Block Public Access: desmarca “Block all public access” (solo para este proyecto de demo).
- Acepta la advertencia.
- Bucket name:
-
Haz clic en Create bucket.
-
Entra a tu bucket.
-
Ve a la pestaña Properties.
-
Desplázate hasta Static website hosting.
-
Haz clic en Edit:
- Marca:
Enable. - Tipo:
Host a static website. Index document:index.html.
- Marca:
-
Guarda los cambios.
-
Pestaña Objects → Upload.
-
Haz clic en Add files y selecciona:
index.htmlstyles.cssapp.js
-
Haz clic en Upload.
Nota: en producción se recomienda usar CloudFront + Origin Access Control y mantener el bucket privado. Para este proyecto principiante, usaremos una bucket policy pública controlada.
- En tu bucket, ve a Permissions → Bucket Policy → Edit.
- Usa una policy como esta (cambia
NOMBRE_BUCKET):
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowPublicReadForWebsite",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::NOMBRE_BUCKET/*"
}
]
}- Guarda la policy.
-
Ve a Properties → Static website hosting.
-
Copia la URL que aparece, algo como:
http://NOMBRE_BUCKET.s3-website-us-east-1.amazonaws.com -
Pega la URL en el navegador.
-
Deberías ver el dashboard financiero funcionando.
-
Ve a CloudFront → Create distribution.
-
En Origin:
- Origin domain: selecciona el website endpoint de tu bucket S3 (el que termina en
s3-website-...amazonaws.com).
- Origin domain: selecciona el website endpoint de tu bucket S3 (el que termina en
-
En Default cache behavior:
- Viewer protocol policy:
Redirect HTTP to HTTPS.
- Viewer protocol policy:
-
En Settings:
- Default root object:
index.html.
- Default root object:
-
Haz clic en Create distribution.
Cuando el estado esté como Deployed:
-
Copia el Domain name de la distribución, algo como:
https://dxxxxxxxxxxxx.cloudfront.net -
Pega en el navegador.
-
Deberías ver el mismo dashboard, ahora servido por CloudFront vía HTTPS.
- En tu bucket S3 (el del sitio), ve a Properties.
- Busca Bucket Versioning → Edit.
- Selecciona
Enable. - Guarda.
Así puedes revertir fácilmente cambios en archivos estáticos si algo falla.
- En Properties del bucket, ve a Default encryption.
- Haz clic en Edit.
- Elige
Enabley seleccionaAmazon S3 managed keys (SSE-S3). - Guarda.
Esto te permite decir: “Todos los objetos del sitio están cifrados en reposo”.
-
Crea un segundo bucket S3, por ejemplo:
fintrack-lite-logs-<tu-nombre>. -
En CloudFront:
- Abre tu distribución → pestaña Settings (o similar según la consola actual).
- Habilita Standard logging.
- Selecciona el bucket de logs como destino.
-
Guarda los cambios.
Con esto podrás analizar quién accede a tu sitio y desde dónde (en una versión futura, por ejemplo con Athena).
-
Modifica algún texto en
index.html(por ejemplo el subtítulo). -
Sube el archivo actualizado a tu bucket S3 (mismo nombre, lo reemplaza).
-
Comprueba el sitio usando el endpoint de S3:
- Deberías ver el cambio de inmediato.
-
Comprueba el sitio usando el dominio de CloudFront:
- Puede seguir mostrando la versión vieja por caché.
-
Purga la caché:
- CloudFront → pestaña Invalidations → Create invalidation.
- Path:
/*.
-
Espera a que la invalidación termine y recarga la página:
- Ahora debes ver la nueva versión.
Esto muestra claramente cómo funciona la caché de una CDN: rendimiento vs frescura.
Este proyecto está diseñado para ser muy barato:
-
S3
- Cobro por GB almacenado y requests (con pocos archivos, casi nada).
-
CloudFront
- Cobro por GB transferidos + requests (para pruebas personales, centavos).
-
Logs
- Pequeña cantidad adicional de storage en S3.
Para presentarlo, puedes decir:
“Diseñé el proyecto para aprovechar servicios serverless y de bajo costo: S3 + CloudFront. El coste de operación para un uso de laboratorio es prácticamente simbólico, y la arquitectura escala sin cambios de diseño.”
Sugerencias para evolucionar el proyecto:
-
Datos dinámicos:
- Mover los datos financieros a un JSON en S3 o a una API (API Gateway + Lambda).
-
Autenticación:
- Usar Amazon Cognito para dashboards privados.
-
Análisis de logs:
- Consultar los logs de CloudFront usando Athena.
-
Dominio propio:
- Configurar Route 53 + ACM para usar
dashboard.midominio.com.
- Configurar Route 53 + ACM para usar
-
Infra as Code:
- Describir todo en CloudFormation o Terraform.
Ejemplo de discurso corto (puedes adaptarlo):
“Construí FinTrack Lite, un mini dashboard financiero para una pyme, como ejercicio de arquitectura en AWS. Es una aplicación estática en HTML/CSS/JS que muestra ingresos, gastos y utilidad. La desplegué en Amazon S3 con static website hosting y la distribuyo globalmente usando Amazon CloudFront, habilitando HTTPS, caché y logs de acceso.
El bucket de S3 tiene versioning y cifrado SSE-S3 activados, y definí una bucket policy pública controlada para exponer solo los objetos estáticos. También habilité logs de CloudFront hacia un bucket dedicado, como base para un futuro análisis con Athena.
Este proyecto demuestra mi capacidad para diseñar soluciones serverless, de bajo costo y alta disponibilidad, aplicadas a un caso de negocio financiero realista.”
Puedes añadir aquí la licencia de tu preferencia, por ejemplo:
MIT License
FinTrack Lite – Proyecto de práctica para AWS Architect
- Diseñado para reforzar habilidades de Cloud Architect / Data Engineer con foco en proyectos comerciales y financieros.
- Autor: (Fernando Cuellarf / Ferkuellar)

