尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗Web que monta planes por horas en León y su provincia con IA: la persona dice qué le apetece, su presupuesto y una zona en el mapa, y recibe una ruta con sitios reales (comprobados en Google Places), la previsión del tiempo y la agenda de eventos de ese día. Los planes se pueden compartir y votar en grupo.
Hecha con Next.js 16 (App Router), React 19, Tailwind 4 y Leaflet. Se despliega en Vercel.
npm install
npm run dev
Abre http://localhost:3000. Sin Redis configurado, los datos se guardan en memoria y se borran al reiniciar.
| Comando | Para qué |
|---|---|
npm run dev | Servidor de desarrollo |
npm run build | Compilar para producción |
npm run lint | Revisar el código con ESLint |
npm test | Tests de la lógica (duplicados, horas, presupuesto, finde, votos…) |
Van en .env.local en local y en Vercel → Settings → Environment Variables.
| Variable | Obligatoria | Qué es |
|---|---|---|
GEMINI_API_KEY | Sí | Clave de Google AI Studio (Gemini). Solo se usa en el servidor. |
GOOGLE_MAPS_API_KEY | Sí | Places, Geocoding y fotos de Google Maps. |
STREET_VIEW_API_KEY | No | Clave para la vista 360º. Acaba en el navegador (va dentro del iframe), así que restríngela por dominio en Google Cloud. Si falta, se usa GOOGLE_MAPS_API_KEY (nunca la de Gemini). |
KV_REST_API_URL / KV_REST_API_TOKEN | En producción | Redis de Upstash (Vercel → Storage → Upstash for Redis). También valen UPSTASH_REDIS_REST_URL / _TOKEN. |
PANEL_CLAVE | Para /panel | Contraseña del panel del equipo. |
NEGOCIOS_SECRETO | Recomendada | Firma los enlaces privados de cada local (/negocio/…). Si falta, se usa PANEL_CLAVE. |
CRON_SECRET | En producción | Vercel la manda a los crons. Sin ella, los crons responden 401. |
NEXT_PUBLIC_SITE_URL | Con dominio propio | Por ejemplo https://cazurronics.es (sitemap, enlaces y textos para compartir). |
NEXT_PUBLIC_GAS_BUSINESS_URL | No | Google Apps Script que recibe las solicitudes de negocios (además se guardan en /panel). |
RESEND_API_KEY, AVISO_EMAIL, AVISO_DE | No | Correos de aviso al equipo (resumen del finde y locales listos para escribirles). |
TELEGRAM_TOKEN, TELEGRAM_SECRETO (y opcional TELEGRAM_CHAT_ID) | No | Bot de Telegram "asesor de métricas" (web + Instagram). Tras ponerlas, abre https://www.cazurronics.es/api/telegram?activar=PANEL_CLAVE y abre el enlace de un solo uso que te da (15 min): queda emparejado contigo. |
INSTAGRAM_TOKEN | No | Token de la API de Instagram (inicio de sesión de Instagram). El cron /api/telegram/diario guarda las cifras cada mañana y lo renueva solo. |
Montar un plan (/api/plan):
src/lib/gemini.js)./plan/ID). Las estadísticas y los rankings se escriben en segundo plano.Agenda de eventos (src/lib/eventos.js): los crons de vercel.json barren cada día las fuentes de la provincia (datos abiertos de la Junta y búsquedas dirigidas con Gemini). Solo se publica lo que tiene una fuente comprobada. De ahí salen /agenda-leon, las páginas por zona, /finde y "Qué hacer hoy/mañana".
Panel del equipo (/panel): analítica propia sin cookies, ranking de locales con su enlace privado, estado del barrido, resumen del finde para redes y captación de negocios.
src/
app/ páginas y rutas de la API (App Router)
api/ plan, retocar, planes (compartir y votar), barrido, panel, finde, captación…
components/ componentes de la interfaz
lib/ lógica: almacén (Redis), IA, eventos, agenda, zonas, lugares, freno anti-abuso…
tests/ tests de la lógica (Vitest)
vercel.json crons del barrido y de los avisos