Cavo is a bilingual shoe-store workspace built with:
- Frontend: Next.js 14, React, NextAuth, Tailwind CSS
- Backend: Express, Prisma, PostgreSQL, JWT auth
- Commerce features: products, variants, cart, checkout, orders, reviews
- Admin features: products, categories, banners, users, orders, settings, social links, contact inbox
cavo-workspace/
├── frontend/ # Storefront + admin UI
├── backend/ # Express API + Prisma schema
└── package.json
Copy backend/.env.example to backend/.env and fill in values.
Copy frontend/.env.example to frontend/.env.local and fill in values.
From the project root:
npm run install:allOr install each app separately:
npm run install:frontend
npm run install:backendGenerate the Prisma client and seed the database:
npm run prisma:generate
npm run prisma:seedFor first-time local development, also run a migration:
cd backend
npm run prisma:migrateUse two terminals:
npm run dev:backend
npm run dev:frontendDefault local URLs:
- Frontend:
http://localhost:3000 - Backend:
http://localhost:5000 - Health check:
http://localhost:5000/health
- Home, Shop, Men, Women, Kids, Offers
- Product details with variants
- Cart
- Checkout
- Order confirmation
- About, Contact, Privacy Policy, Terms of Service
- Arabic/English direction toggle and dark theme styling
- Register
- Login with NextAuth credentials provider
- Protected checkout
- Admin-protected dashboard routes
- Dashboard overview
- Products CRUD
- Categories CRUD
- Banners CRUD
- Orders management
- Users management
- Site settings
- Social links
- Contact submissions inbox
- Users/auth
- Products
- Categories
- Cart
- Orders
- Reviews
- Settings
- Social links
- Contact
- FAQ
- Banners
- Uploads
- Legacy ROM/device/download traces removed from source
- Temporary build artifacts excluded with
.gitignore - Upload directory prepared for local runtime
- Workspace scripts improved for setup and validation
The source tree was cleaned and cross-checked for missing local imports and legacy naming remnants. In this environment, a full package install/build could not be verified end-to-end because the required npm binaries were not fully available after install resolution, so you should run the install/build steps locally after extracting the archive.