Skip to content

DevKaliper/achievement-system

Repository files navigation

Achievement & Reward System

Sistema de logros y recompensas inspirado en mecánicas de videojuegos.
Permite crear logros y asociar recompensas a cada uno, pensado como un proyecto demostrativo de arquitectura serverless en AWS.

El objetivo principal del proyecto es mostrar diseño de APIs, seguridad, infraestructura cloud y buenas prácticas usando Next.js y servicios administrados de AWS.


Descripción general

El sistema permite:

  • Crear logros (achievements)
  • Asociar recompensas (rewards) a cada logro
  • Consumir la API desde un frontend en Next.js
  • Proteger el acceso a la API mediante API Keys y control de red
  • Utilizar una arquitectura serverless, escalable y de bajo costo

Stack tecnológico

Frontend

  • Next.js

Backend / Cloud

  • AWS Lambda
  • Amazon API Gateway
  • Amazon DynamoDB
  • Amazon CloudFront
  • Amazon Route 53

Infraestructura

  • Template de CloudFront incluido (requiere adaptación)

Arquitectura

Flujo general:

  1. El frontend en Next.js consume los endpoints expuestos por API Gateway.
  2. API Gateway gestiona los endpoints y valida el uso de API Keys.
  3. Cada endpoint invoca una función Lambda.
  4. Las Lambdas interactúan con DynamoDB.
  5. CloudFront actúa como capa de protección, limitando el acceso público y permitiendo solo IPs autorizadas.
  6. Route 53 gestiona el dominio personalizado.

Base de datos (DynamoDB)

El proyecto utiliza dos tablas:

Achievements

Almacena los logros creados por el usuario.

Campos principales:

  • achievementId (PK)
  • title
  • description
  • createdAt

Rewards

Almacena las recompensas asociadas a un logro.

Campos principales:

  • rewardId (PK)
  • achievementId (relación lógica)
  • rewardDescription
  • createdAt

Seguridad

  • API Gateway protegido mediante API Keys
  • CloudFront configurado para restringir acceso público
  • Acceso permitido únicamente a IPs específicas
  • Backend completamente serverless (sin servidores expuestos)

CloudFront Template

El repositorio incluye un template de CloudFront como referencia.

Importante:

  • El template no contiene valores reales
  • Debe adaptarse manualmente antes de usarse
  • Es necesario configurar:
    • IPs permitidas
    • Orígenes reales
    • Comportamientos según el entorno

El objetivo del template es servir como base replicable, no como configuración lista para producción.


Cómo ejecutar el proyecto

  1. Clonar el repositorio
  2. Configurar variables de entorno necesarias
  3. Desplegar los recursos de AWS (DynamoDB, Lambda, API Gateway, CloudFront)
  4. Ejecutar el frontend:
npm install
npm run dev

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks