Este proyecto es una billetera virtual desarrollada como trabajo final para la Universidad Tecnológica Nacional. Permite a los usuarios registrarse, iniciar sesión, y gestionar balances en distintas monedas.
- React con TypeScript
- React Router DOM para rutas
- Estilos con CSS y framework a elección
- Node.js con Express
- Sequelize como ORM
- PostgreSQL como base de datos
- JWT (JSON Web Tokens) para autenticación segura
- bcrypt para hash de contraseñas
- Registro de usuario
- Inicio de sesión con JWT
- Visualización de perfil
- Gestión de balance en múltiples monedas: ARS, USD, EUR, BTC, ETH, USDT
- Carga de saldo en moneda seleccionada
proyecto/
├── Client/ # Frontend (React)
│ ├── src/
│ │ ├── App.tsx
│ │ ├── index.tsx
│ │ ├── components/
│ │ │ │
│ │ │ ├── Landing.tsx
│ │ │ ├── Home.tsx
│ │ │ ├── Login.tsx
│ │ │ ├── History.tsx
│ │ │ ├── Profile.tsx
│ │ │ ├── Navbar.tsx
│ │ │ ├── Register.tsx
│ │ │ └── LoadBalance.tsx
│ │ └── ...
│
└── Server/ # Backend (Node.js + Express)
├── src/
│ ├── Controllers/
│ │ └── authController.ts
│ ├── Models/
│ │ └── Usuario.ts
│ ├── Routes/
│ │ └── authRoutes.ts
│ ├── db.ts
│ └── index.ts
-
Navegá al directorio del servidor:
cd Server -
Instalá las dependencias:
npm install
-
Ejecutá el servidor:
npm run dev
Por defecto corre en: https://proyectofinalutn-production.up.railway.app
Nota: el servidor genera la base de datos SQLite automáticamente en
Server/database.sqlitesi no existe.
-
Navegá al directorio del cliente:
cd Client -
Instalá las dependencias:
npm install
-
Ejecutá la aplicación:
npm start
Por defecto corre en: http://localhost:3000
Este proyecto utiliza JWT para proteger rutas privadas. Cuando el usuario inicia sesión correctamente, se le genera un token que debe incluir en el header de futuras peticiones autenticadas:
Authorization: Bearer <token>{
id: number,
nombre: string,
email: string,
password: string,
cvu: string,
imagen?: string,
descripcion?: string,
nacionalidad?: string,
dni?: string,
COD: {
ARS: number,
USD: number,
EUR: number,
BTC: number,
ETH: number,
USDT: number
}
}| Método | Ruta | Descripción |
|---|---|---|
| POST | /auth/register | Crear nuevo usuario |
| POST | /auth/login | Iniciar sesión y obtener token JWT |
| GET | /auth/profile | Obtener perfil del usuario |
| POST | /auth/balance | Cargar saldo en moneda específica |
- Backend funcional con Sequelize y SQLite.
- Autenticación JWT implementada.
- CRUD básico de usuario.
- Sistema de carga de saldo por moneda.
- Frontend básico con rutas:
Landing,Login,Register,Home,LoadBalance. - Conexión entre frontend y backend vía fetch/axios.
- Cambio de divisas a tiempo real con el mercado.
- Actualización de datos del usuario en su propio perfil.
- Dashboard Admin.
- Conexión entre frontend y backend vía fetch/axios.
- Modularización del frontend.
- Transferencia de divisas entre usuarios.
- Métricas de la aplicación.
- Diseño profesional y minimalista.
- Alertas para guiar al usuario.
Proyecto realizado por Jonas Mendelovich, Mateo Zeballos, Franco de Iriondo y Gaston Nuñez, estudiantes de la UTN.