Skip to content

mikeminer/rektaurant

Repository files navigation

Rektaurant

Mini app Farcaster a tema ristorante per servire segnali Hyperliquid come piatti: coin, lato long/short, entry, target, invalidation, punteggi e note di rischio.

Avvio locale

npm run make:assets
npm start

Poi apri http://localhost:5173.

Su Windows puoi anche avviare tutto con:

.\start_rektaurant.bat

Non aprire public/index.html direttamente se vuoi usarla come mini app completa: Farcaster, manifest e API funzionano correttamente via server locale. Il file diretto ora carica comunque grafica e prova a usare http://localhost:5173/api/menu, ma il server deve essere acceso.

La app usa come default:

MCC_API_BASE=https://important-bullet-sam-affiliates.trycloudflare.com

In questo ambiente Node non valida sempre la catena TLS dei tunnel Cloudflare. Il server locale quindi usa TLS permissivo di default; in produzione puoi forzare la verifica con:

$env:REKTAURANT_STRICT_TLS="true"

URL API da backend Vercel

In produzione l'URL MCC va configurato dal backend di Vercel, non dai browser degli utenti:

MCC_API_BASE=https://il-tuo-tunnel.trycloudflare.com

Quando cambi tunnel perche il Rektaurant fisico era spento, aggiorna MCC_API_BASE nelle variabili ambiente del progetto Vercel e redeploya. La mini app leggerà /api/config dal backend e usera quel valore.

Il deploy Vercel usa api/[...path].js come funzione serverless e vercel.json per servire dinamicamente la homepage e /.well-known/farcaster.json, cosi i meta tag Farcaster e la config backend usano sempre il dominio reale.

Modo rapido da questo progetto:

.\scripts\update-vercel-api-url.ps1 https://nuovo-tunnel.trycloudflare.com

Lo script aggiorna MCC_API_BASE in produzione e fa subito redeploy.

Da CMD o doppio click puoi usare anche:

update_rektaurant_api_url.bat

Ti chiedera di incollare la nuova URL, per esempio https://waiver-heath-merely-plane.trycloudflare.com/.

Su Vercel l'override da UI e spento di default. Se vuoi riabilitarlo volutamente:

REKTAURANT_ALLOW_CLIENT_API_OVERRIDE=true

In locale, invece, l'override da UI resta acceso per comodita:

il valore viene salvato nel browser con localStorage, quindi quando riapri la mini app usa l'ultimo tunnel inserito.

Prima della tip viene fatto un health check su /api/health della MCC API. Se non risponde, la app non mostra il pagamento: appare il cartello Rektaurant is closed. In produzione il cartello usa il valore Vercel di MCC_API_BASE; in locale puoi incollare un tunnel nuovo dalla UI.

Puoi cambiarlo cosi:

$env:MCC_API_BASE="https://important-bullet-sam-affiliates.trycloudflare.com"
npm start

Farcaster

Rektaurant include:

  • meta tag fc:miniapp e fc:frame
  • manifest dinamico su /.well-known/farcaster.json
  • chiamata sdk.actions.ready()
  • azioni sendToken, composeCast e addMiniApp quando aperta dentro Farcaster
  • tip gate: 0.50/1/3 USDC su Base verso pappardelle.eth, poi sessione locale di 10 minuti
  • wallet gate: bottone Connect wallet piu tip USDC su Base, con fallback al wallet nativo Farcaster mobile
  • notifiche Farcaster tramite webhookUrl, token salvati su Redis/KV e script per inviare open, closed, closing, happy-hour
  • proxy same-origin /api/menu, cosi il client non dipende da CORS esterni

Notifiche Farcaster

Il manifest espone:

https://rektaurant.vercel.app/api/webhook

Per notifiche persistenti in produzione collega un database Redis/KV al progetto Vercel e imposta queste env:

UPSTASH_REDIS_REST_URL=...
UPSTASH_REDIS_REST_TOKEN=...
REKTAURANT_NOTIFY_SECRET=...

Se hai usato il prefisso UPSTASH_REDIS nel Marketplace Vercel, vanno bene anche le env create come UPSTASH_REDIS_KV_REST_API_URL e UPSTASH_REDIS_KV_REST_API_TOKEN.

Poi gli utenti devono salvare la mini app in Farcaster: il webhook ricevera i token. Per inviare una notifica:

.\scripts\send-rektaurant-notification.ps1 open
.\scripts\send-rektaurant-notification.ps1 closed
.\scripts\send-rektaurant-notification.ps1 closing
.\scripts\send-rektaurant-notification.ps1 happy-hour

Per vedere esempi casuali senza inviarli:

.\scripts\send-rektaurant-notification.ps1 preview

Da CMD/doppio click puoi usare:

send_rektaurant_notification.bat

Per pubblicarla, deploya su un dominio stabile HTTPS e genera l'accountAssociation dal Farcaster Developer Tool per quel dominio esatto. Poi passa l'oggetto firmato come variabile:

$env:REKTAURANT_ACCOUNT_ASSOCIATION='{"header":"...","payload":"...","signature":"..."}'

Nota: Rektaurant e MCC sono read-only. Non inviano ordini, firme, approvazioni o transazioni.

La tip usa REKTAURANT_TIP_ADDRESS se vuoi sovrascrivere il destinatario; il default e pappardelle.eth risolto come 0x5D69C42A3a481d0CCFd88CFA8a2a08e2BF456134. In produzione conviene verificare server-side le transazioni se vuoi un paywall non aggirabile da devtools.

About

Mini App that turns Hyperliquid long/short signals into a restaurant-style menu.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors