尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证正在加载完整 README。 以下为已保存的摘录。
El sitio de Allons en allonsapp.com: la landing con captura de correo por QR, el cliente web de eventos y tickets, y el panel del comercio. Se llamaba allons-waitlist cuando sólo era la landing. El repo en GitHub todavía tiene ese nombre: se renombra a FNDRS/allons-platform cuando este cambio se mergee, y GitHub deja redirigiendo el nombre viejo. Además de la landing, el sitio funciona como cliente web de Allons cuando la app no está disponible. Todo habla directo con allons-api desde el navegador con la sesión de Supabase (Bearer); no hay rutas /api/* propias para esto.查看完整 README ↗
El sitio de Allons en allonsapp.com: la landing con captura de correo por QR,
el cliente web de eventos y tickets, y el panel del comercio.
Se llamaba allons-waitlist cuando sólo era la landing. El repo en GitHub
todavía tiene ese nombre: se renombra a FNDRS/allons-platform cuando este
cambio se mergee, y GitHub deja redirigiendo el nombre viejo.
Además de la landing, el sitio funciona como cliente web de Allons cuando la app
no está disponible. Todo habla directo con allons-api desde el navegador con
la sesión de Supabase (Bearer); no hay rutas /api/* propias para esto.
| Ruta | Qué hace |
|---|---|
/events | Lista pública de eventos, con búsqueda y filtro por ciudad |
/events/{id} | Detalle del evento + CTA de reserva (y enlace a la app) |
/events/{id}/reservar | Checkout: tipo de entrada, datos del comprador, asistentes, preguntas, aporte. Sin cuenta: el pedido queda ligado a un token del navegador y el ticket llega por correo |
/pagar/{orderId} | Abre el link de Paygate en otra pestaña y espera la confirmación |
/tickets, /tickets/{id} | Mis tickets: QR, código ALL-, y elección de recurso (bici/asiento). /tickets/{id}?k= abre un ticket comprado sin cuenta |
/comercio | Resumen del comercio: KPIs y eventos |
/comercio/events/{id} | Ventas por tipo y por hora, pagos, mapa y editor de recursos |
/comercio/colaboraciones | Invitaciones a colaborar en eventos de otros comercios, y los que ya comparte |
/comercio/staff | Invitar y desactivar staff |
/login | Google, o correo + código de un solo uso; la contraseña es opcional (misma cuenta que la app) |
Requiere NEXT_PUBLIC_SUPABASE_URL y NEXT_PUBLIC_SUPABASE_ANON_KEY en el
navegador y, opcionalmente, NEXT_PUBLIC_ALLONS_API_URL.
NEXT_PUBLIC_PAYMENTS_OUTAGE=true pausa los pagos en todo el sitio (banner y
botones) mientras Clinpays esté caído; sin la variable, corren. Para probar
el checkout en local con la pasarela simulada ver docs/guest-checkout.md
en allons-api.
waitlist)cd allons-waitlist # allons-platform después del rename
pnpm install
cp .env.example .env.local # llena las 3 variables
pnpm dev
.env.local:
NEXT_PUBLIC_SUPABASE_URL=https://YOUR_PROJECT.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=sb_publishable_...
SUPABASE_SERVICE_ROLE_KEY=eyJ...
El
SUPABASE_SERVICE_ROLE_KEYsolo se usa server-side en/api/waitlist. Nunca lo expongas con prefijoNEXT_PUBLIC_.
Opcional para enlaces compartidos y App Links:
APP_STORE_LINK=https://apps.apple.com/us/app/allons-eventos-honduras/id6780532182?uo=4
PLAY_STORE_LINK=https://play.google.com/store/apps/details?id=com.fndrs.allons
ANDROID_PACKAGE_NAME=com.fndrs.allons
ANDROID_SHA256_CERT_FINGERPRINTS=AA:BB:CC:DD:...
ANDROID_SHA256_CERT_FINGERPRINTS debe salir de Google Play App Signing. Sin ese valor, /.well-known/assetlinks.json responde [] y Android no verificará los App Links.
Abre tu proyecto → SQL Editor → pega y corre db/schema.sql.
Crea:
public.waitlist con columnas email, source, referer, user_agent, ip, created_atlower(email) (un email solo se registra una vez)waitlist_by_source para ver el conteo por QR/ubicaciónservice_role (el server) puede leer/escribirVercel:
vercel link
vercel env add NEXT_PUBLIC_SUPABASE_URL
vercel env add NEXT_PUBLIC_SUPABASE_ANON_KEY
vercel env add SUPABASE_SERVICE_ROLE_KEY
vercel env add APP_STORE_LINK
vercel env add PLAY_STORE_LINK
vercel env add ANDROID_SHA256_CERT_FINGERPRINTS
vercel --prod
.well-known/events/{id} muestra una página de respaldo para quien abre un evento compartido sin tener la app.allons://events/{id}./.well-known/apple-app-site-association habilita /verify, /tickets y /events para iOS./.well-known/assetlinks.json se genera desde ANDROID_SHA256_CERT_FINGERPRINTS para Android.La landing lee el query param ?src=. El valor se guarda en la columna source.
URL → https://allonsapp.com/?src=la20
Insert → { email: "...", source: "la20" }
La generación de QRs se gestiona desde allons-admin, no desde este repo.
Usa la vista /waitlist-qr del panel admin o el script pnpm run qr en
allons-admin.
a-z, 0-9, -, _. Máx. 40 chars.null (= directo).En SQL Editor de Supabase:
-- Resumen agregado
select * from waitlist_by_source;
-- Detalle de la última semana, por ubicación
select source, email, created_at
from waitlist
where created_at > now() - interval '7 days'
order by created_at desc;
-- Conversión por día y por QR
select
date_trunc('day', created_at) as day,
coalesce(source, '(direct)') as source,
count(*) as signups
from waitlist
group by 1, 2
order by 1 desc, 3 desc;
.
├── db/schema.sql # corre esto en Supabase
├── public/ # logo Allons
└── src/
├── app/
│ ├── api/waitlist/route.ts # POST endpoint (server-side, service_role)
│ ├── page.tsx # landing
│ ├── layout.tsx
│ └── globals.css
├── components/
│ ├── AllonsLogo.tsx
│ └── WaitlistForm.tsx # CTA → email → submit
└── lib/
└── supabase-server.ts # admin client