Wallex es un sistema de gestión financiera diseñado para proporcionar a los usuarios una plataforma segura y eficiente para administrar su dinero. A través de esta solución, los usuarios podrán realizar operaciones como transferencias, consulta de saldo, gestión de tarjetas y recibir notificaciones en tiempo real sobre sus movimientos financieros. El objetivo principal del sistema es facilitar la gestión del dinero de manera intuitiva, segura y accesible, asegurando una experiencia óptima para los usuarios.
- 🚀 Tecnologías Utilizadas
- 🛠️ Instalación y Configuración
- 🗄️ Modelo de Datos
- 📡 Documentación de la API
- 📌 Tablero de Trello
- 👥 Contribuidores
- Backend: ☕ Java 21, Spring Boot, Spring Security, JWT
- Frontend: 💻 React.js, Tailwind CSS, Figma
- Base de Datos: 🗄️ MySQL, Hibernate, JPA
- QA: 🔍 Jasmine
- Colaboración: 🌐 GitHub
- Java 21+
- Maven
- MySQL
- Node.js
git clone https://github.com/No-Country-simulation/s21-02-ft-webapp.git
cd s21-02-ft-webapp/backend
Para configurar la base de datos, necesitas editar el archivo application.properties
y establecer las credenciales adecuadas dependiendo del motor de base de datos que utilices (H2 o MySQL).
- Principal: Desde aquí configuras si se ejecutará con H2 o MySQL.
- H2: Base de datos en memoria, ideal para pruebas rápidas.
- MySQL: Base de datos relacional, recomendada para producción.
Si decides usar H2 como base de datos en memoria o MySQL como base de datos relacional, debes editar el archivo application.properties para definir cuál se utilizará. La propiedad clave para cambiar entre H2 y MySQL es spring.profiles.active
.
# Nombre de la aplicación
spring.application.name=financial-platform
# Perfil activo (cambiar entre 'mysql' y 'h2')
spring.profiles.active=mysql
debug=true
# Puerto del servidor
server.port=9091
# Configuración de salida y registro
spring.output.ansi.enabled=ALWAYS
logging.pattern.console=%clr(%d{yyyy-MM-dd HH:mm:ss}){magenta} %clr(%-5p) %clr(%c{1}){blue}:%clr(%L){cyan} - %m%n
# Configuración de correo electrónico (si es necesario)
spring.mail.host=smtp.gmail.com
spring.mail.port=587
spring.mail.protocol=smtp
spring.mail.test-connection=true
Si deseas utilizar H2 como base de datos en memoria, usa la siguiente configuración:
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.username=${H2_DB_USERNAME}
spring.datasource.password=${H2_DB_PASSWORD}
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.jpa.hibernate.ddl-auto=create-drop
spring.jpa.show-sql=true
spring.h2.console.enabled=true
spring.h2.console.path=/h2-console
Una vez configurado, puedes acceder a la consola de H2 en http://localhost:9091/h2-console
e ingresar las credenciales establecidas.
Si prefieres utilizar MySQL, asegúrate de que el servidor de MySQL esté corriendo y usa la siguiente configuración:
spring.datasource.url=${MYSQL_DB_URL}
spring.datasource.username=${MYSQL_DB_USERNAME}
spring.datasource.password=${MYSQL_DB_PASSWORD}
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.database-platform=org.hibernate.dialect.MySQL8Dialect
spring.jpa.hibernate.ddl-auto=create-drop
spring.jpa.show-sql=true
También puedes configurar MySQL para que la base de datos se cree automáticamente si no existe agregando ?createDatabaseIfNotExist=true
a la URL de conexión.
Crea un archivo .env
en la raíz del proyecto y define las siguientes variables:
MAIL_USERNAME=*******************
MAIL_PASSWORD=**** **** **** ****
JWT_SECRET_KEY=SECRETOMUYSEGURODEMASDE256BITS...........
MYSQL_DB_URL=jdbc:mysql://localhost:3306/wallex_db?createDatabaseIfNotExist=true&serverTimezone=UTC
MYSQL_DB_USERNAME=root
MYSQL_DB_PASSWORD=admin
H2_DB_USERNAME=sa
H2_DB_PASSWORD=
SERVER_PORT=9091
📌 Nota:
MAIL_USERNAME
yMAIL_PASSWORD
son las credenciales del correo desde el cual se enviarán los emails de la aplicación. Si utilizas Gmail, debes ingresar tu dirección de correo enMAIL_USERNAME
y enMAIL_PASSWORD
debes usar una contraseña de aplicación, ya que Gmail no permite el uso de la contraseña normal por motivos de seguridad.
Asegúrate de que este archivo no se suba al repositorio agregándolo al .gitignore
.
- Instala el plugin "EnvFile" en IntelliJ IDEA.
- Ve a Run/Debug Configurations.
- Selecciona tu configuración de ejecución.
- Activa "Enable EnvFile".
- Añade el archivo
.env
a la lista.
- Con atajo de teclado:
Shift + F10
- Con el botón de ejecución: Haz clic en el ícono de play verde en la esquina superior derecha.
-
Accede a la documentación de la API en Postman.
-
Configura las variables
{{base_url}}
y{{bearer_token}}
:{{base_url}}
: Verifica que coincida con el puerto del backend (ej.http://localhost:9091
).{{bearer_token}}
: Usa el token obtenido tras iniciar sesión.
-
Iniciar sesión y obtener el token:
- Realiza una solicitud
POST
al endpoint de login según la documentación.
- Realiza una solicitud
-
Probar un endpoint protegido:
GET http://localhost:9091/api/users
git clone https://github.com/No-Country-simulation/s21-02-ft-webapp.git
cd s21-02-ft-webapp/frontend
Una vez dentro del directorio frontend
, instala las dependencias necesarias para ejecutar el proyecto:
npm install
Luego de instalar las dependencias, puedes ejecutar el proyecto en modo desarrollo con el siguiente comando:
npm run dev
Después de ejecutar el proyecto, verás en la terminal un mensaje similar al siguiente:
VITE v6.1.0 ready in 1337 ms
➜ Local: http://localhost:5173/
➜ Network: use --host to expose
➜ press h + enter to show help
Haz clic en el enlace Local: http://localhost:5173/ para abrir la aplicación en tu navegador.
El modelo de datos está diseñado para gestionar usuarios, cuentas, transacciones y notificaciones en el sistema financiero. A continuación, se detallan las entidades principales:
- Users: Representa a los usuarios del sistema, almacenando información personal y credenciales de acceso.
- Accounts: Cuentas bancarias asociadas a los usuarios, con saldo y datos clave como CBU y alias.
- Cards: Tarjetas de los usuarios, incluyendo información encriptada para mayor seguridad.
- Transactions: Registro de transacciones entre cuentas, con montos, estados y razones.
- Movements: Historial de movimientos de cada cuenta, relacionado con transacciones.
- Reservations: Monto reservado de una cuenta para futuras transacciones o pagos pendientes.
- Notifications: Mensajes enviados a los usuarios, con estados y tipos definidos.
Para asegurar consistencia en los estados y tipos de datos, se definen los siguientes Enums:
- Status: Estados de transacciones, movimientos y reservas (
PENDING
,COMPLETED
,FAILED
). - Type: Tipos de transacción (
DEPOSIT
,WITHDRAWAL
,TRANSFER
). - Currency: Tipos de moneda manejados en las cuentas (
USD
,ARS
,EUR
). - NotificationType: Tipos de notificaciones (
ALERT
,REMINDER
,TRANSACTION
).
La API está documentada con Postman. Accede en:
🔗 Postman
Consulta el progreso de las tareas y el flujo de trabajo en el tablero de Trello: 🔗 Trello
Rol | Nombre y Apellido | Correo | Tecnologías | Github |
---|---|---|---|---|
Backend | Delmer Rodríguez | [email protected] | Java Spring Boot, .NET | DelmerRo |
Backend | Gustavo Paz | [email protected] | Java Spring Boot, Node.js | guspaz0 |
Frontend | Sebastián Tournier | [email protected] | React, Bootstrap | TournierSebastian |
UX y UI | Federico Merediz | [email protected] | Figma | Federico |
Frontend | Gastón Federico Nahuel Gómez | [email protected] | React, Tailwindcss, Bootstrap | Morfeo1997 |