Survival LLM
A free AI assistant and survival library (1.5 million offline articles) that runs on your own computer, with no internet. Shows the source of every answer. Mac and Windows.
Ease into a space where plans feel lighter and moments feel shared.
OtherTypeScript · CSSGitHub @arjunbellurOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Palmera is an experiences marketplace for African cities (Dakar, Marrakesh, Lagos). This repo is a single Next.js 16 (App Router) app that contains two things:
/) — a scroll-driven, animated landing page (migrated from Webflow)./dashboard) — a Firebase-auth-gated portal where experience providers onboard, add listings, upload media, and sign off on terms.Built with Next.js 16, React 18, TypeScript, and Tailwind CSS. Deployable on Vercel or Netlify.
| Concern | Tool |
|---|---|
| Framework | Next.js 16 (App Router, Turbopack) |
| Language | TypeScript + React 18 |
| Styling | Tailwind CSS 3 + CSS custom properties |
| Auth & database | Firebase Auth + Cloud Firestore |
| Media (video/images) | Cloudinary |
| Animation | GSAP + Lenis (smooth scroll) |
| i18n | next-intl (French default, English secondary) |
| Hosting | Vercel or Netlify |
src/
app/
page.tsx ← Homepage (assembles all marketing sections)
layout.tsx ← Root layout + metadata
globals.css ← Brand tokens, animations, base styles
partners/
page.tsx ← Public 4-step partner application form
dashboard/
page.tsx ← Login / signup (Firebase Auth)
layout.tsx ← Auth gate + sidebar nav + theme provider
home/ ← Onboarding overview + progress
profile/ ← Business profile + payout details
listings/ ← Experience listings (CRUD)
photos/ ← Media upload (Cloudinary)
operations/ ← Booking / confirmation preferences
documents/ ← Legal document upload
settings/ ← Terms & sign-off
admin/ ← Admin: all partners + per-partner review
components/
Navbar.tsx / NavbarWrapper.tsx ← Sticky, scroll-aware nav
Hero.tsx ← Full-screen Cloudinary video hero
BaseSection.tsx ← Intro / phrases section
Destinations.tsx ← Dakar / Marrakesh / Lagos cards
Services.tsx ← Service grid
Stats.tsx ← Stats section
AppSection.tsx ← App download + early-access CTA
Footer.tsx ← Logo marquee + copyright
dashboard/ ← DashboardNav, SectionCard, ListingModal, PhotoUpload
lib/
firebase.ts ← Firebase app init
auth.ts ← signUp / signIn / logOut / onAuthChange
firestore.ts ← Partner + listing data access
theme.tsx ← Dashboard theme provider
scroll-bus.ts, use-viewport.ts
messages/
fr.json, en.json ← Marketing-site translations
middleware.ts ← Sets default locale cookie (fr)
firestore.rules ← Firestore security rules
npm install
npm run dev
# → http://localhost:3000
Create .env.local with your Firebase config (see Environment Variables).
partners/{uid} — one document per partner account, created on signup. Holds profile fields plus a sections status map (incomplete / in_progress / complete) that drives the onboarding progress UI:
basics, payouts, listings, photos, operations, documents, signoff.partners/{uid}/listings/{listingId} — subcollection of experiences the partner offers (pricing, availability, guest limits, inclusions, etc. — see the Listing type in src/lib/firestore.ts).Security rules (firestore.rules): a partner can read/write only their own document and listings; admins (allow-listed by email) can read everyone's.
Admin is gated by a hard-coded email allow-list in two places that must stay in sync:
firestore.rules (isAdmin())src/app/dashboard/layout.tsx (ADMIN_EMAILS)Admin users are redirected to /dashboard/admin on login.
fr) is the default; English (en) is secondary.middleware.ts sets a locale cookie (defaulting to fr) for visitors without one.messages/fr.json and messages/en.json.messages/).The hero video and partner photos are served from Cloudinary (cloud name dgthehvgs).
Hero delivery uses Cloudinary transformations for performance and reliable mobile autoplay:
f_auto,q_auto,w_1280 — auto-format/quality + width cap (keeps the file small so iOS Safari autoplays it and it starts fast on cellular).so_0,...jpg — first video frame used as the poster image.See src/components/Hero.tsx.
Create .env.local for local development and set the same values in your host's
environment settings (Vercel / Netlify):
NEXT_PUBLIC_FIREBASE_API_KEY=...
NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=...
NEXT_PUBLIC_FIREBASE_PROJECT_ID=...
NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=...
NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=...
NEXT_PUBLIC_FIREBASE_APP_ID=...
Check
src/lib/firebase.tsfor the exact variable names the app reads.
The app deploys as a standard Next.js App Router project.
netlify.toml. Add the same environment
variables in Site settings → Environment variables.After deploying, remember to:
firestore.rules) to your Firebase project.Defined in tailwind.config.ts and globals.css. The marketing site uses the
--forest* / --gold* / --cream palette; the dashboard uses a separate set of
--db-* variables via the theme provider in src/lib/theme.tsx.
| Token | Value | Use |
|---|---|---|
--forest-deep | #0F2219 | Page background |
--forest | #1B3A2D | Card / section backgrounds |
--gold | #C9A84C | Primary accent, borders |
--gold-light | #E4C97E | Headlines, CTAs |
--cream | #F5F0E8 | Body text |
| Route | Description |
|---|---|
/ | Homepage — full marketing site |
/partners | Public partner application form (4-step) |
/dashboard | Partner login / signup |
/dashboard/home | Onboarding overview + progress |
/dashboard/{profile,listings,photos,operations,documents,settings} | Onboarding sections |
/dashboard/admin | Admin — partner review (allow-listed emails only) |