ShopTrip es una aplicación web moderna diseñada para ayudarte a organizar las compras de tus viajes. Crea listas de artículos, rastrea tus gastos y mantén todo organizado antes y durante tus viajes.
- 🔐 Autenticación Completa: Registro, inicio de sesión, recuperación y restablecimiento de contraseña
- 📝 Gestión de Viajes: Crea y organiza tus viajes con fechas, destinos y detalles
- 🛍️ Listas de Compras: Agrega artículos a tus viajes con descripciones, precios y cantidades
- 📊 Dashboard Intuitivo: Visualiza estadísticas de tus viajes y gastos
- 🎨 Interfaz Moderna: Diseño limpio y responsive con soporte para temas claro/oscuro
- 🔔 Notificaciones: Sistema de notificaciones para mantenerte al día
- 👥 Organizaciones: Colabora con otros usuarios en viajes compartidos
- 🤖 IA Integrada: Crea viajes y artículos usando inteligencia artificial
- Frontend: Next.js 16, React, TypeScript
- Estilos: Tailwind CSS, shadcn/ui
- Autenticación: Better Auth
- Base de Datos: PostgreSQL con Drizzle ORM
- Email: Resend con React Email
- Notificaciones: Sonner (toasts)
- Iconos: Lucide React
Inicia sesión en tu cuenta de ShopTrip con tu correo electrónico y contraseña o usando Google
Después de registrarte, recibirás un correo de confirmación para activar tu cuenta.
Solicita un enlace para restablecer tu contraseña si la olvidaste.
Confirma que el enlace de recuperación ha sido enviado a tu correo.
Vista inicial del dashboard cuando aún no has creado ningún viaje.
Dashboard mostrando un viaje creado con estadísticas y progreso.
Vista completa del dashboard con viajes, estadísticas y progreso general.
Vista detallada de un viaje con información completa y opciones de edición.
Lista de artículos agregados al viaje con detalles de precios y cantidades.
- Node.js 22.15.0 o superior
- npm, yarn, pnpm o bun
- PostgreSQL (o una base de datos compatible)
-
Clona el repositorio
git clone https://github.com/tu-usuario/shop-trip.git cd shop-trip -
Instala las dependencias
npm install # o yarn install # o pnpm install
-
Configura las variables de entorno
Crea un archivo
.enven la raíz del proyecto con las siguientes variables:# Base de datos DATABASE_URL=postgresql://usuario:password@localhost:5432/shop_trip # Better Auth BETTER_AUTH_SECRET=tu-secret-key-aqui BETTER_AUTH_URL=http://localhost:3000 # Email (Resend) RESEND_API_KEY=tu-resend-api-key # Groq API (Opcional - para conversión de moneda y sugerencias IA) # Si no se configura, se usarán valores por defecto para conversión de moneda GROQ_API_KEY=tu-groq-api-key # OneSignal (Opcional - para notificaciones push) ONESIGNAL_APP_ID=tu-onesignal-app-id ONESIGNAL_REST_API_KEY=tu-onesignal-rest-api-key
Nota:
GROQ_API_KEYes opcional. Si no se configura:- La conversión de moneda usará valores por defecto aproximados
- Las sugerencias IA usarán sugerencias genéricas por defecto
-
Configura la base de datos
npm run db:push
-
Inicia el servidor de desarrollo
npm run dev
-
Abre tu navegador
Visita http://localhost:3000 para ver la aplicación.
npm run dev- Inicia el servidor de desarrollonpm run build- Construye la aplicación para producciónnpm run start- Inicia el servidor de producciónnpm run db:push- Sincroniza el esquema de la base de datosnpm run db:studio- Abre Drizzle Studio para gestionar la base de datos
La forma más fácil de desplegar ShopTrip es usando Vercel:
- Conecta tu repositorio de GitHub a Vercel
- Configura las variables de entorno en el panel de Vercel
- Vercel detectará automáticamente Next.js y desplegará tu aplicación
ShopTrip puede desplegarse en cualquier plataforma que soporte Next.js:
- Netlify
- Railway
- Render
- AWS Amplify
- DigitalOcean App Platform
Las contribuciones son bienvenidas! Por favor:
- Haz fork del proyecto
- Crea una rama para tu feature (
git checkout -b feature/AmazingFeature) - Commit tus cambios (
git commit -m 'Add some AmazingFeature') - Push a la rama (
git push origin feature/AmazingFeature) - Abre un Pull Request
Este proyecto está bajo la Licencia MIT. Ver el archivo LICENSE para más detalles.
Dayan Perez Barzaga
- Email: dayan.perez9012+1@gmail.com
- GitHub: @drbarzaga
Hecho con ❤️ usando Next.js y TypeScript