Skip to content

PabloB07/frutify

Repository files navigation

🍎 Frutify - Plataforma para PYMEs en Chile

Next.js TypeScript Supabase Tailwind CSS License

Plataforma moderna y completa para conectar pequeñas y medianas empresas (PYMEs) chilenas con clientes potenciales. Incluye sistema de donaciones, chat en tiempo real, bot IA 24/7, analytics completo y más.

🌟 Características Principales

📊 Dashboard de Métricas

  • KPIs en Tiempo Real - Vistas, ratings, donaciones, mensajes
  • Gráficos Interactivos - Recharts con líneas, barras y tortas
  • Multi-PYME - Gestión de múltiples negocios
  • Historial Completo - Reviews y donaciones recientes
  • Métricas de Engagement - Análisis de comportamiento

🏪 Gestión de PYMEs

  • CRUD Completo - Crear, editar y eliminar negocios
  • Galería de Fotos - Hasta 5 imágenes con Supabase Storage
  • Videos YouTube - Integración de video embebido
  • Horarios de Atención - Configuración personalizada
  • 9 Métodos de Pago - Tradicionales y criptomonedas
  • Configuración Delivery - Zonas y costos de envío
  • SEO Optimizado - Meta title, description, keywords

⭐ Ratings y Comentarios

  • Calificaciones 1-5 - Sistema de estrellas visual
  • Solo Autenticados - Reviews verificadas
  • Anti-Spam con IA - Validación automática
  • Recálculo Automático - Ratings promedio actualizados
  • Sistema de Flagging - Reportar contenido

💰 Donaciones Multicanal

  • Stripe, PayPal, MercadoPago - Métodos tradicionales
  • Bitcoin, Solana, Dogecoin - Criptomonedas
  • Montos Predefinidos - $1.000, $5.000, $10.000, $50.000 CLP
  • Montos Personalizados - Cantidad libre
  • Modal Responsive - Animaciones fluidas

💬 Chat en Tiempo Real

  • Supabase Realtime - Mensajería instantánea
  • Bot IA 24/7 - OpenAI GPT-4 integrado
  • Anti-Spam - Filtros automáticos
  • UI Moderna - Burbujas estilo WhatsApp
  • Respuestas Contextuales - Bot con memoria

🔍 SEO y Búsqueda

  • Sitemap Dinámico - sitemap.xml automático
  • Robots.txt - Configurado para crawlers
  • Open Graph - Meta tags para redes sociales
  • Schema.org - Rich snippets
  • Búsqueda Avanzada - Filtros por texto, categoría, ciudad
  • 12 Categorías - Clasificación de negocios
  • 13 Ciudades - Principales ciudades chilenas

🚀 Stack Tecnológico

Frontend

  • Next.js 15 - Framework React con App Router
  • TypeScript - Tipado estático
  • Tailwind CSS - Estilos utility-first
  • Framer Motion - Animaciones
  • Recharts - Gráficos y visualizaciones
  • Sonner - Notificaciones toast
  • Lucide React - Iconografía

Backend

  • Supabase - Base de datos PostgreSQL
  • Supabase Auth - Autenticación (Email, OAuth Twitter/X)
  • Supabase Storage - Almacenamiento de imágenes
  • Supabase Realtime - WebSockets para chat
  • OpenAI API - Inteligencia artificial (GPT-4)
  • Anti-spam Library - Protección contra spam

Pagos e Integraciones

  • Tradicionales: Stripe, PayPal, MercadoPago
  • Criptomonedas: Bitcoin, Solana, Dogecoin
  • OAuth: Twitter/X

📋 Características Implementadas

✅ Autenticación Completa

  • Sistema de auth con Supabase
  • OAuth2 con X (Twitter)
  • Login/Signup con email/password
  • Middleware de protección de rutas

✅ Dashboard de Métricas

  • KPIs: vistas, donaciones, ratings, mensajes
  • Gráficos con Recharts (Line, Bar, Pie)
  • Reviews y donaciones recientes
  • Selector de múltiples PYMEs

✅ Sistema PYME Completo (CRUD)

  • Crear y editar PYMEs
  • Subida de múltiples imágenes
  • Video de YouTube embebido
  • Horarios de atención
  • 9 métodos de pago
  • Delivery configurable
  • SEO completo (meta title, description, keywords)

✅ Sistema de Reviews

  • Calificación 1-5 estrellas
  • Solo usuarios autenticados
  • Recalculo automático de ratings
  • Sistema de flagging

✅ Sistema de Donaciones

  • 6 métodos de pago (3 tradicionales + 3 crypto)
  • Montos predefinidos y personalizados
  • Registro completo en BD
  • Modal responsive

✅ Chat en Tiempo Real

  • Supabase Realtime
  • Bot IA 24/7 con OpenAI GPT-4
  • Anti-spam integrado
  • UI moderna con burbujas

✅ Base de Datos

  • Schema completo en PostgreSQL (Supabase)
  • Tablas: profiles, pymes, reviews, donations, chat_messages, pyme_analytics
  • Row Level Security (RLS)
  • Triggers y funciones automáticas
  • Índices optimizados

✅ Búsqueda Avanzada

  • Texto, categoría, ciudad
  • 12 categorías
  • 13 ciudades de Chile
  • Grid responsive

✅ SEO Completo

  • Sitemap.xml dinámico
  • Robots.txt
  • Meta tags por página
  • Open Graph

✅ UI/UX

  • Navbar responsive con autenticación
  • Footer informativo
  • Landing page con animaciones
  • Componentes UI base (Button, Input, Card, Badge, etc.)
  • Diseño responsive mobile-first
  • Framer Motion para animaciones

✅ APIs REST Completas

  • /api/pymes (GET, POST)
  • /api/pymes/[id] (GET, PATCH, DELETE)
  • /api/reviews (GET, POST)
  • /api/donations (GET, POST)
  • /api/chat (GET, POST)
  • /api/bot (POST)
  • /api/analytics (GET)
  • /api/upload (POST)

✅ Utilidades

  • Sistema anti-spam con IA
  • Moderación de contenido con OpenAI
  • Helpers de formato (fecha, moneda)
  • Validaciones

🛠️ Instalación

Prerrequisitos

  • Node.js 18+ instalado
  • npm, yarn, pnpm o bun
  • Cuenta en Supabase (gratis)
  • (Opcional) API key de OpenAI para el bot IA

1. Instalación

# Clonar el repositorio
git clone <repo-url>
cd frutify

# Instalar dependencias
npm install

2. Configurar Variables de Entorno

Crea un archivo .env.local en la raíz del proyecto:

# Supabase (REQUERIDO)
NEXT_PUBLIC_SUPABASE_URL=https://tu-proyecto.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=tu-anon-key
SUPABASE_SERVICE_ROLE_KEY=tu-service-role-key

# OpenAI (para bot IA)
OPENAI_API_KEY=sk-tu-api-key

# Site Configuration
NEXT_PUBLIC_SITE_URL=http://localhost:3000

# OAuth Twitter/X (opcional)
X_CLIENT_ID=tu-twitter-client-id
X_CLIENT_SECRET=tu-twitter-client-secret

# Pagos (opcional para testing)
STRIPE_SECRET_KEY=sk_test_...
PAYPAL_CLIENT_ID=...
MERCADOPAGO_ACCESS_TOKEN=...
BITCOIN_WALLET_ADDRESS=...
SOLANA_WALLET_ADDRESS=...
DOGECOIN_WALLET_ADDRESS=...

3. Configurar Supabase

Opción A: Con Supabase CLI (Recomendado)

# Instalar Supabase CLI
npm install -g supabase

# Login en Supabase
supabase login

# Vincular al proyecto
supabase link --project-ref tu-project-ref

# Ejecutar migraciones
supabase db push

Opción B: Manual desde Dashboard

  1. Ve a tu proyecto en Supabase
  2. Navega a SQL Editor
  3. Copia y ejecuta el contenido de supabase/migrations/001_initial_schema.sql
  4. Copia y ejecuta el contenido de supabase/migrations/002_storage_setup.sql

4. Verificar Storage

En Supabase Dashboard → Storage:

  • Verifica que el bucket images existe
  • Debe tener política pública para lectura

5. Configurar OAuth Twitter/X (Opcional)

  1. Ve a developer.twitter.com
  2. Crea una aplicación y obtén Client ID y Secret
  3. En Supabase: AuthenticationProvidersTwitter
  4. Habilita y configura con tus credenciales

6. Ejecutar en Desarrollo

npm run dev
# o
yarn dev
# o
pnpm dev
# o
bun dev

Abre http://localhost:3000 en tu navegador.

7. Build para Producción

npm run build
npm start

📁 Estructura del Proyecto

frutify/
├── app/
│   ├── api/                    # API Routes
│   │   ├── analytics/          # Métricas y analytics
│   │   ├── bot/                # Chatbot IA
│   │   ├── chat/               # Mensajes de chat
│   │   ├── donations/          # Donaciones
│   │   ├── pymes/              # CRUD de PYMEs
│   │   ├── reviews/            # Ratings y comentarios
│   │   └── upload/             # Subida de imágenes
│   ├── auth/                   # Autenticación
│   ├── chat/[pymeId]/          # Chat en tiempo real
│   ├── dashboard/              # Dashboard de métricas
│   ├── pyme/                   # Gestión de PYMEs
│   │   ├── [id]/               # Vista detallada de PYME
│   │   ├── [id]/edit/          # Editar PYME
│   │   └── create/             # Crear nueva PYME
│   ├── search/                 # Búsqueda de PYMEs
│   ├── globals.css             # Estilos globales
│   ├── layout.tsx              # Layout principal
│   ├── page.tsx                # Landing page
│   ├── robots.ts               # Robots.txt dinámico
│   └── sitemap.ts              # Sitemap XML dinámico
├── components/
│   ├── ui/                     # Componentes UI base
│   ├── chat-client.tsx         # Cliente de chat
│   ├── dashboard-client.tsx    # Cliente del dashboard
│   ├── donation-modal.tsx      # Modal de donaciones
│   ├── header.tsx              # Navegación principal
│   ├── footer.tsx              # Footer
│   └── pyme-*.tsx              # Componentes de PYME
├── lib/
│   ├── supabase/
│   │   ├── client.ts           # Cliente de Supabase (browser)
│   │   └── server.ts           # Servidor de Supabase (SSR)
│   ├── openai.ts               # Cliente de OpenAI
│   ├── anti-spam.ts            # Sistema anti-spam
│   └── utils.ts                # Utilidades (formato, validación)
├── supabase/migrations/        # Migraciones de BD
│   ├── 001_initial_schema.sql
│   └── 002_storage_setup.sql
├── types/
│   └── index.ts                # Tipos y constantes TypeScript
├── middleware.ts               # Middleware de autenticación
└── .env.local                  # Variables de entorno

📊 Base de Datos

Tablas Principales

profiles

  • Perfiles de usuarios vinculados a Supabase Auth
  • Campos: id, email, full_name, avatar_url

pymes

  • Información completa de las PYMEs
  • Datos básicos: name, description, category
  • Ubicación: city, address, lat, lng
  • Contacto: phone, email, website, redes sociales
  • Configuración: business_hours, payment_methods, delivery_options
  • SEO: meta_title, meta_description, keywords
  • Multimedia: photos (array), youtube_video_url
  • Métricas: views, average_rating

reviews

  • Calificaciones y comentarios
  • Campos: pyme_id, user_id, rating (1-5), comment, flagged

donations

  • Registro de donaciones
  • Campos: pyme_id, donor_id, amount, payment_method, status, transaction_metadata

chats & messages

  • Sistema de mensajería en tiempo real
  • Soporte para bot IA

pyme_analytics

  • Eventos de analytics
  • Campos: pyme_id, event_type, metadata

Seguridad

  • Row Level Security (RLS) habilitado
  • Políticas de Acceso específicas
  • Triggers Automáticos para actualizar ratings
  • Índices Optimizados para búsquedas rápidas

🚀 Deploy en Vercel

# Conectar con Vercel
vercel

# O conectar repositorio en vercel.com
  1. Conecta tu repositorio en vercel.com
  2. Configura las variables de entorno en SettingsEnvironment Variables
  3. Deploy automático en cada push a main

Ver DEPLOYMENT.md para más detalles.

📚 Documentación Adicional

🐛 Troubleshooting

Error: Invalid supabaseUrl

Solución: Verifica que NEXT_PUBLIC_SUPABASE_URL en .env.local sea una URL válida (https://...)

Error de Tailwind CSS

rm -rf .next
npm run build

Chat en tiempo real no funciona

Solución: Verifica que Supabase Realtime esté habilitado en tu proyecto

Problemas con Storage

Solución: Verifica que el bucket images existe y tiene políticas públicas

🗺️ Roadmap

Versión 1.0 (Actual)

  • ✅ Autenticación completa
  • ✅ CRUD de PYMEs
  • ✅ Dashboard de métricas
  • ✅ Sistema de reviews
  • ✅ Sistema de donaciones
  • ✅ Chat en tiempo real
  • ✅ Bot IA 24/7
  • ✅ SEO optimizado

Versión 1.1 (Próximamente)

  • Sistema de notificaciones push
  • Marketplace con productos
  • Sistema de reservas/citas
  • App móvil (React Native)

Versión 2.0 (Futuro)

  • Sistema de afiliados
  • Integración con redes sociales
  • Analytics avanzado con ML
  • Multi-idioma

🤝 Contribuir

Las contribuciones son bienvenidas:

  1. Fork el proyecto
  2. Crea una rama para tu feature (git checkout -b feature/AmazingFeature)
  3. Commit tus cambios (git commit -m 'Add some AmazingFeature')
  4. Push a la rama (git push origin feature/AmazingFeature)
  5. Abre un Pull Request

📄 Licencia

Este proyecto está bajo la licencia MIT. Ver el archivo LICENSE para más detalles.

🙏 Agradecimientos

  • Supabase por la increíble plataforma BaaS
  • Vercel por Next.js y el hosting
  • OpenAI por GPT-4
  • La comunidad open source por las increíbles herramientas

📞 Soporte

¿Necesitas ayuda?


Hecho con ❤️ en Chile 🇨🇱

Apoyando a las PYMEs locales con tecnología moderna

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published