Cripto Wallet es una aplicación full-stack moderna que permite registrar, visualizar y analizar transacciones de criptomonedas. Está desarrollada con Django Rest Framework, React + TypeScript, Redis y PostgreSQL, integrando backend, frontend y servicios con Docker Compose.
Su objetivo es simular una billetera digital de inversión, similar a la interfaz de exchanges como Ripio, Binance o Coinbase. 🦊 Ofrece un sistema de autenticación dual, permitiendo el registro clásico por usuario/contraseña (JWT) y una moderna autenticación descentralizada (Web3) a través de MetaMask.
- ✅ Autenticación JWT — Inicio de sesión clásico y validación de usuarios con tokens.
- ✅ Autenticación Web3 — Inicio de sesión descentralizado usando firmas criptográficas de MetaMask (EIP-191).
- ✅ API REST profesional — Creada con Django Rest Framework.
- ✅ Base de datos PostgreSQL — Persistencia de usuarios, monedas y transacciones.
- ✅ Sistema de balances automáticos — Calcula valores y totales en USD.
- ✅ Visualizaciones interactivas — Gráficos en tiempo real con Chart.js.
- ✅ Frontend en React + TypeScript — Interfaz moderna y responsiva.
- ✅ Cache con Redis — Optimización de rendimiento.
- ✅ Infraestructura con Docker Compose — Despliegue instantáneo de todo el stack.
cripto-wallet/
│
├── 🧩 cripto_wallet/ → Configuración Django (settings, urls, wsgi)
├── 💼 wallet/ → Modelos, vistas, serializadores y tests del backend
├── 🌐 frontend/ → Aplicación React + TypeScript + Vite
├── 🐳 docker-compose.yml → Orquestación de backend, frontend, DB y Redis
├── ⚙️ Dockerfile.backend → Imagen base del servidor Django
├── 🔐 backend.env → Variables de entorno (DB, JWT, DEBUG, etc.)
├── 📄 requirements.txt → Dependencias del backend
├── 🧪 pytest.ini → Configuración de tests automáticos
└── 🧾 README.md → Documentación del proyecto
git clone https://github.com/matterod/cripto-wallet.git
cd cripto-walletdocker compose up --build✅ La aplicación levantará automáticamente:
- Backend Django: http://localhost:8000/admin
- Frontend React: http://localhost:5173
- Base de datos PostgreSQL: puerto 5432
- Redis: puerto 6379
El proyecto soporta dos métodos de autenticación:
- Abre el frontend: http://localhost:5173
- Haz clic en "Entrar con MetaMask".
- Conecta tu wallet y firma el mensaje.
- ¡Listo! El sistema creará un usuario en el backend asociado automáticamente a tu dirección de wallet.
Si quieres probar el login clásico o acceder al panel de admin de Django (para agregar monedas manualmente, etc.):
- Crea un superusuario en la terminal:
docker compose exec backend python manage.py createsuperuser- Te pedirá los datos:
Username: admin
Email address: admin@example.com
Password: ******
Password (again): ******- Inicia sesión con esas credenciales en el frontend (botón "Iniciar sesión con Usuario") o en el panel de admin de Django.
cd backend
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
python manage.py migrate
python manage.py runservercd frontend
npm install
npm run devEl backend cuenta con testeo automatizado mediante Pytest y Django TestCase.
Para ejecutarlos:
pytest- 🖥️ Backend: Django 5 + Django Rest Framework + Web3.py
- 🔒 Autenticación: JWT (SimpleJWT) + Firmas Web3 (EIP-191)
- 🗄️ Base de datos: PostgreSQL
- ⚙️ Cache / Cola: Redis
- 💡 Frontend: React + TypeScript + Vite + Ethers.js
- 🎨 Estilos: Tailwind + CSS modular
- 🐳 Infraestructura: Docker Compose
- 🧪 Testing: Pytest + Django TestCase
El dashboard muestra información de forma visual e interactiva:
- 📈 Evolución del capital invertido en el tiempo
- 💹 Composición del portafolio por moneda
- 💵 Registro cronológico de todas las transacciones
- 💰 Cálculo del valor total en USD
Mateo Rodríguez
- 💼 Desarrollador Full Stack / IoT / Networking
- 📧 rodrigmatteo@gmail.com
- 🌐 github.com/matterod
