🛒 Aplicación móvil para gestionar compras con conversión de monedas (CLP, USD, EUR)
Una aplicación móvil completa de compras con backend FastAPI y MongoDB Atlas, construida con React Native y Expo.
| Acción | Enlace | Tiempo |
|---|---|---|
| ⚡ Comenzar ahora | QUICK_START.md | 15 min |
| 📚 Ver documentación | Índice de Docs | - |
| 🏗️ Estructura del proyecto | STRUCTURE.md | - |
| 🔌 Referencia de API | API_DOCS.md | - |
Sistema completo de compras que permite:
┌─────────────────────┐
│ App Móvil (Expo) │
│ React Native │
└──────────┬──────────┘
│ Axios
│ HTTP/JSON
▼
┌─────────────────────┐
│ Backend FastAPI │
│ Python Async │
└──────────┬──────────┘
│ Motor
│ (Async Driver)
▼
┌─────────────────────┐
│ MongoDB Atlas │
│ Cloud Database │
└─────────────────────┘
¿Primera vez? Sigue la Guía de Inicio Rápido (15 min) 🎯
# 1. Clonar repositorio
git clone https://github.com/Raizexs/-compras-calculadora-.git
cd compras-calculadora
# 2. Backend - Configurar y ejecutar
cd backend
python -m venv venv
venv\Scripts\activate # Windows
pip install -r requirements.txt
# Configurar .env con tu MongoDB URI
uvicorn app.main:app --reload
# 3. Frontend - En otra terminal
cd ../frontend
npm install
# Configurar src/config.ts con IP del backend
npx expo start
📖 Guías detalladas:
.env en la carpeta backend/tu@email.com123456GET /purchases/person/{person_id}8 endpoints REST organizados en 4 categorías:
| Categoría | Endpoints | Documentación |
|---|---|---|
| 🔐 Auth | POST /auth/register, POST /auth/login |
Ver detalles |
| 👤 Persons | POST /persons, GET /persons/{id}, GET /persons |
Ver detalles |
| 📦 Products | GET /products, GET /products/{id}, POST /products |
Ver detalles |
| 🛒 Purchases | POST /purchases, GET /purchases/{id}, GET /purchases/person/{id} |
Ver detalles |
📖 Documentación completa:
compras-calculadora/
│
├── 📱 frontend/ # Aplicación móvil (React Native + Expo)
│ ├── app/ # Pantallas y rutas
│ │ ├── (tabs)/ # Navegación por pestañas
│ │ │ ├── index.tsx # 🧮 Calculadora original
│ │ │ ├── shopping.tsx # 🛒 Compras con API
│ │ │ └── explore.tsx # 👤 Auth y perfil
│ │ └── _layout.tsx # Layout principal
│ │
│ ├── components/ # Componentes reutilizables
│ ├── src/ # Servicios y config
│ │ ├── config.ts # ⚙️ Config de API
│ │ └── services/
│ │ └── api.ts # 📡 Cliente Axios
│ │
│ ├── assets/ # Imágenes y recursos
│ ├── constants/ # Constantes y tema
│ ├── hooks/ # Custom hooks
│ ├── package.json # Dependencias npm
│ └── README.md # Docs del frontend
│
├── ⚡ backend/ # Backend FastAPI + MongoDB
│ ├── app/
│ │ ├── main.py # 🌐 8 endpoints REST
│ │ ├── models.py # 📋 Modelos Pydantic
│ │ └── database.py # 🗄️ Conexión MongoDB
│ │
│ ├── .env # 🔐 Variables (NO en git)
│ ├── .env.example # Template de .env
│ ├── seed_products.py # 🌱 Carga de datos
│ ├── requirements.txt # 📦 Dependencias Python
│ └── README.md # Docs del backend
│
├── 📚 docs/ # Documentación completa
│ ├── README.md # 📑 Índice de docs
│ ├── QUICK_START.md # 🚀 Guía rápida (15 min)
│ ├── INSTALL.md # 📦 Instalación detallada
│ ├── API_DOCS.md # 📡 Referencia API
│ ├── COMMANDS.md # 🛠️ Comandos útiles
│ ├── STRUCTURE.md # 📁 Estructura detallada
│ └── IMPLEMENTATION.md # ✅ Resumen técnico
│
├── 📄 README.md # Este archivo
├── LICENSE # Licencia MIT
└── 🔧 .gitignore # Archivos ignorados
📖 Ver detalles: Estructura completa con diagramas
users → Autenticación
{"_id": ObjectId("..."), "email": "user@example.com", "password": "123456"}
persons → Perfiles de compra
{"_id": ObjectId("..."), "name": "Juan Pérez"}
products → Catálogo (15 items)
{"_id": ObjectId("..."), "name": "Leche 1L", "price": 1.20}
purchases → Compras con totales
{
"_id": ObjectId("..."),
"person_id": ObjectId("..."),
"items": [{"product_id": ObjectId("..."), "name": "Leche", "price": 1.20, "quantity": 2}],
"total": 2.40
}
⚠️ IMPORTANTE: Esta es una versión demo para propósitos educativos.
En producción, deberías:
| Problema | Solución Rápida | Documentación |
|---|---|---|
| Backend no conecta a MongoDB | Verifica .env y whitelist de IP |
Ver detalles |
| App no conecta al backend | Usa http://10.0.2.2:8000 para Android |
Ver guía |
| No aparecen productos | Ejecuta python seed_products.py |
Ver comandos |
| Error de módulos Python | pip install -r requirements.txt |
Ver instalación |
| Error de módulos Node | npm install o borrar node_modules |
Ver instalación |
📖 Más ayuda: Guía completa de troubleshooting
| Documento | Descripción | Tiempo |
|---|---|---|
| 🚀 Quick Start | Inicio rápido del proyecto | 15 min |
| 📦 Instalación | Guía de instalación detallada | - |
| 📡 API Docs | Referencia completa de endpoints | - |
| 🛠️ Comandos | Comandos útiles para desarrollo | - |
| 📁 Estructura | Estructura detallada del proyecto | - |
| ✅ Implementación | Resumen técnico del proyecto | - |
| 📱 Frontend README | Documentación del frontend | - |
| ⚡ Backend README | Documentación del backend | - |
📖 Índice completo: docs/README.md
Las contribuciones son bienvenidas. Por favor:
git checkout -b feature/nueva-funcionalidad)git commit -m 'Agregar nueva funcionalidad')git push origin feature/nueva-funcionalidad)MIT License - Ver archivo LICENSE para más detalles.
Ryzek
Desarrollado para el curso de Desarrollo Web y Móvil - Universidad Andrés Bello (UNAB)
⭐️ Si este proyecto te fue útil, considera darle una estrella en GitHub!