Modern, motion-first demo built with Next.js, Supabase, and Prisma.
Foodexy is a demo food ordering platform demonstrating:
- Clean Next.js 15 architecture with App Router & RSC
- Supabase Auth and Prisma data layer
- Motion-first UX via Framer Motion
- Swiper-powered carousels
- TailwindCSS + shadcn/ui for fast, consistent UI
Note: This is a demo. Orders are not processed.
- Authentication with Supabase (login/register)
- Menu browsing with categories, search, and lazy images
- Demo cart (add/update/remove) with persisted state
- Meal comments with optimistic updates
- Light/Dark theme, accessible keyboard navigation
- Page/section transitions via Framer Motion
- Carousels via Swiper
Frontend (Next.js 15)
App Router, RSC where appropriate, route handlers for APIs, ISR for stable pages.
Data Layer (Prisma)
Prisma models for User, Meal, Category, CartItem, Comment with migrations & seeding.
Auth & DB (Supabase)
Postgres database, email/password auth, optional RLS policies.
Carousels
Hero/menu sliders with accessibility and touch support.
Styling
TailwindCSS + shadcn/ui components, utility-first with design tokens.
- Node.js 18+
- npm / yarn / pnpm
- Supabase project (Postgres)
git clone https://github.com/your-username/foodexy.git
cd foodexy
# choose one
pnpm install
# or
yarn install
# or
npm installCreate a .env in the project root:
NEXT_PUBLIC_SUPABASE_URL="YOUR_SUPABASE_URL"
NEXT_PUBLIC_SUPABASE_ANON_KEY="YOUR_SUPABASE_ANON_KEY"
DATABASE_URL="YOUR_DATABASE_URL" # Prisma pooled connection
DIRECT_URL="YOUR_DIRECT_URL" # Direct (migrations)npx prisma generate
npx prisma migrate dev --name init
# optional
npx prisma db seedpnpm dev
# or
yarn dev
# or
npm run devfoodexy/
├─ prisma/
│ ├─ schema.prisma
│ └─ seed.ts
├─ public/
│ └─ images/
├─ src/
│ ├─ app/
│ │ ├─ (main)/
│ │ ├─ authentication/
│ │ ├─ email-sent/
│ │ ├─ globals.css
│ │ └─ layout.tsx
│ ├─ components/
│ │ ├─ common/
│ │ └─ ui/
│ │ ├─ CommentForm.tsx
│ │ ├─ PopularSlider.tsx
│ │ ├─ ReviewSlider.tsx
│ │ ├─ ShoppingCartPopover.tsx
│ │ ├─ UserMenuItems.tsx
│ │ ├─ login-form.tsx
│ │ ├─ register-form.tsx
│ │ └─ shopDetailClient.tsx
│ ├─ constants/
│ ├─ hooks/
│ ├─ lib/
│ └─ middleware.ts
├─ .gitignore
├─ README.md
├─ next-env.d.ts
├─ next.config.ts
├─ package-lock.json
├─ package.json
├─ postcss.config.mjs
└─ tsconfig.json

