Configuración del Entorno de Desarrollo
Esta guía te ayudará a configurar un entorno de desarrollo completo para ClickAware en tu máquina local.
Requisitos del Sistema
Software Necesario
- Node.js: v18.0+ (recomendado v20.0+)
- Java: JDK 21+ (Oracle JDK o OpenJDK)
- Maven: v3.8+
- PostgreSQL: v14+
- Git: v2.30+
Herramientas Recomendadas
- IDE: IntelliJ IDEA (Ultimate) o VS Code
- Terminal: Git Bash (Windows) o Terminal nativo (macOS/Linux)
- Cliente de Base de Datos: pgAdmin 4 o DBeaver
- Cliente API: Postman o Insomnia
Clonar el Repositorio
# Clonar el repositorio principal
git clone https://github.com/clickaware/clickaware-monolith.git
cd clickaware-monolith
# Inicializar submódulos (si los hay)
git submodule update --init --recursive
Configuración de Base de Datos
1. Instalar PostgreSQL
# Ubuntu/Debian
sudo apt update
sudo apt install postgresql postgresql-contrib
# macOS (usando Homebrew)
brew install postgresql
brew services start postgresql
# Windows
# Descargar e instalar desde https://www.postgresql.org/download/windows/
2. Crear Base de Datos
-- Conectar como superusuario
sudo -u postgres psql
-- Crear base de datos y usuario
CREATE DATABASE clickaware_dev;
CREATE USER clickaware_user WITH PASSWORD 'clickaware_pass';
GRANT ALL PRIVILEGES ON DATABASE clickaware_dev TO clickaware_user;
-- Salir
\q
3. Configurar Variables de Entorno
Crear archivo .env en la raíz del proyecto:
# Database Configuration
DB_HOST=localhost
DB_PORT=5432
DB_NAME=clickaware_dev
DB_USER=clickaware_user
DB_PASSWORD=clickaware_pass
# JWT Configuration
JWT_SECRET=tu_jwt_secret_muy_seguro_aqui
JWT_EXPIRATION=86400000
# Email Configuration (para desarrollo)
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=tu_email@gmail.com
MAIL_PASSWORD=tu_app_password
# Application URLs
FRONTEND_URL=http://localhost:4200
ADMIN_URL=http://localhost:4202
DOCS_URL=http://localhost:3000
Configuración del Backend
1. Navegar al Directorio Backend
cd backend
2. Configurar application.yml
Editar src/main/resources/application.yml:
spring:
profiles:
active: dev
datasource:
url: jdbc:postgresql://localhost:5432/clickaware_dev
username: clickaware_user
password: clickaware_pass
driver-class-name: org.postgresql.Driver
jpa:
hibernate:
ddl-auto: update
show-sql: true
properties:
hibernate:
dialect: org.hibernate.dialect.PostgreSQLDialect
format_sql: true
mail:
host: ${MAIL_HOST}
port: ${MAIL_PORT}
username: ${MAIL_USERNAME}
password: ${MAIL_PASSWORD}
properties:
mail:
smtp:
auth: true
starttls:
enable: true
server:
port: 8086
jwt:
secret: ${JWT_SECRET}
expiration: ${JWT_EXPIRATION}
logging:
level:
com.politeia.clickaware: DEBUG
org.springframework.security: DEBUG
3. Instalar Dependencias y Ejecutar
# Instalar dependencias
mvn clean install -DskipTests
# Ejecutar aplicación
mvn spring-boot:run
# O en modo desarrollo con recarga automática
mvn spring-boot:run -Dspring-boot.run.profiles=dev
La aplicación backend estará disponible en: http://localhost:8086
Configuración del Frontend Principal
1. Navegar al Directorio Frontend
cd SCFront
2. Instalar Dependencias
# Usando npm
npm install
# O usando yarn
yarn install
3. Configurar Variables de Entorno
Crear archivo src/environment/environment.ts:
export const environment = {
production: false,
name: 'local',
BASE_URL: 'localhost:8086',
ANGULAR_PORT: ':4200',
PROTOCOLO: 'http',
COMENTARIOS: 'false',
POLITEIA: 'https://gateway.politeiasoft.com/',
shopUrl: 'http://localhost:4201'
};
4. Ejecutar Aplicación
# Modo desarrollo
npm start
# o
ng serve
# Con puerto específico
ng serve --port 4200
La aplicación frontend estará disponible en: http://localhost:4200
Configuración del Panel de Administración
1. Navegar al Directorio Admin
cd admin
2. Instalar y Ejecutar
# Instalar dependencias
npm install
# Ejecutar en modo desarrollo
npm start
# o
ng serve --port 4202
El panel de administración estará disponible en: http://localhost:4202
Configuración de la Documentación
1. Navegar al Directorio Docs
cd docs
2. Instalar y Ejecutar
# Instalar dependencias
npm install
# Ejecutar en modo desarrollo
npm start
La documentación estará disponible en: http://localhost:3000
Verificación de la Instalación
1. Verificar Backend
curl http://localhost:8086/api/health
Respuesta esperada:
{
"status": "UP",
"timestamp": "2025-01-01T10:00:00.000Z"
}
2. Verificar Frontend
Abrir http://localhost:4200 y verificar que carga la página de login.
3. Verificar Admin Panel
Abrir http://localhost:4202 y verificar que carga la página de administración.
4. Verificar Documentación
Abrir http://localhost:3000 y verificar que carga Docusaurus.
Scripts de Desarrollo Útiles
Backend
# Ejecutar tests
mvn test
# Ejecutar con profile específico
mvn spring-boot:run -Dspring-boot.run.profiles=dev
# Generar JAR
mvn clean package -DskipTests
# Ejecutar con debug
mvn spring-boot:run -Dspring-boot.run.jvmArguments="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005"
Frontend
# Ejecutar con recarga automática
ng serve --watch
# Ejecutar tests
ng test
# Ejecutar e2e tests
ng e2e
# Build para producción
ng build --configuration production
Base de Datos
# Resetear base de datos (CUIDADO: borra todos los datos)
psql -U clickaware_user -d clickaware_dev -c "DROP SCHEMA public CASCADE; CREATE SCHEMA public;"
# Backup de base de datos
pg_dump -U clickaware_user clickaware_dev > backup.sql
# Restaurar backup
psql -U clickaware_user clickaware_dev < backup.sql
Problemas Comunes
Error de Conexión a Base de Datos
org.postgresql.util.PSQLException: Connection refused
Solución:
- Verificar que PostgreSQL esté ejecutándose
- Verificar credenciales en
application.yml - Verificar que el puerto 5432 esté disponible
Error de CORS en Frontend
Access to XMLHttpRequest blocked by CORS policy
Solución:
Verificar configuración de CORS en SecurityConfig.java:
@Bean
public CorsConfigurationSource corsConfigurationSource() {
CorsConfiguration configuration = new CorsConfiguration();
configuration.setAllowedOriginPatterns(Arrays.asList("*"));
configuration.setAllowedMethods(Arrays.asList("*"));
configuration.setAllowedHeaders(Arrays.asList("*"));
configuration.setAllowCredentials(true);
// ...
}
Puerto Ya en Uso
Web server failed to start. Port 8086 was already in use
Solución:
# Encontrar proceso usando el puerto
lsof -i :8086
# Matar proceso
kill -9 <PID>
# O cambiar puerto en application.yml
server.port: 8087
Próximos Pasos
Una vez que tengas el entorno configurado:
- Explorar la API: Usar Postman con la colección de ClickAware
- Revisar la base de datos: Familiarizarse con el esquema
- Ejecutar tests: Asegurarse de que todo funciona correctamente
- Contribuir: Consultar API Reference
¿Problemas durante la configuración? Consulta: