Your trusted source for high-quality herbs, spices, and natural wellness solutions.
HerboSpot is a full-stack e-commerce web application built with Next.js 19.2, Prisma, BetterAuth, MongoDB and Cloudinary. It allows users to browse and purchase organic herbs, spices, and aromatic products through a clean, modern storefront with secure authentication and order management.
🌐 Live: herbospot.vercel.app
- Product Catalog — Browse herbs, spices, and aromatics with rich product listings
- User Authentication — Secure sign-up/sign-in powered by BetterAuth
- Order Management — Track and manage customer orders
- Payment Gateway — 3rd party payment gateway
- Image Uploads — Product images hosted via Cloudinary CDN
- Smooth Animations — UI transitions powered by Framer Motion
- Responsive Design — Fully mobile-friendly with Tailwind CSS v4
- Type-Safe Codebase — Written entirely in TypeScript
| Layer | Technology |
|---|---|
| Framework | Next.js 16.2 (App Router) |
| Language | TypeScript 5 |
| Styling | Tailwind CSS v4 |
| Database ORM | Prisma 6 |
| Authentication | BetterAuth 1.5 |
| Image Storage | Cloudinary |
| Animations | Framer Motion |
| Icons | React Icons |
| Notifications | React Hot Toast |
| Deployment | Vercel |
herbospot/
├── app/ # Next.js App Router — pages, layouts, API routes
├── components/ # Reusable React UI components
├── contexts/ # React context providers (e.g., auth, cart)
├── interfaces/ # TypeScript interfaces and type definitions
├── lib/ # Utility functions, db client, auth helpers
├── prisma/ # Prisma schema and database migrations
│ └── schema.prisma
├── public/ # Static assets (images, icons)
├── types/ # Global TypeScript type declarations
├── next.config.ts # Next.js configuration
├── prisma.config.ts # Prisma configuration
├── tailwind.config.* # Tailwind CSS configuration
└── tsconfig.json # TypeScript compiler options
Ensure you have the following installed:
- Node.js v18 or higher
- npm, yarn, pnpm, or bun
- A PostgreSQL (or compatible) database
- A Cloudinary account for image hosting
git clone https://github.com/ryanzam/herbospot.git
cd herbospotnpm install
# or
yarn install
# or
pnpm installCreate a .env file in the project root and populate the following variables:
# Database
DATABASE_URL="postgresql://USER:PASSWORD@HOST:PORT/DATABASE"
# BetterAuth
BETTER_AUTH_SECRET="your-secret-key"
BETTER_AUTH_URL="http://localhost:3000"
# Cloudinary
CLOUDINARY_CLOUD_NAME="your-cloud-name"
CLOUDINARY_API_KEY="your-api-key"
CLOUDINARY_API_SECRET="your-api-secret"Run Prisma migrations to initialize the database schema:
npx prisma migrate dev --name init
npx prisma generatenpm run dev
# or
yarn dev
# or
pnpm devOpen http://localhost:3000 in your browser to view the application.
| Command | Description |
|---|---|
npm run dev |
Start the development server |
npm run build |
Build the application for production |
npm run start |
Start the production server |
npm run lint |
Run ESLint on the codebase |
HerboSpot uses Prisma ORM with the @better-auth/prisma-adapter for seamless authentication integration. The schema is defined in prisma/schema.prisma.
To explore your database interactively:
npx prisma studioThe easiest way to deploy HerboSpot is via Vercel:
- Push your repository to GitHub
- Import the project on vercel.com/new
- Add all required environment variables in the Vercel dashboard
- Deploy!
For other platforms, run npm run build and serve the .next output with npm run start.
| Route | Description |
|---|---|
/ |
Homepage with hero section and featured categories |
(admin)/products |
CRUD functionality of Products for Admin |
(admin)/orders |
Update Order and tracking for Admin |
(auth)/register |
Secure Sign up for users |
(auth)/login |
Login for signedup users |
(store)/products |
Full product catalog (herbs, spices, aromatics) |
(store)/orders |
Order history and tracking for authenticated users |
(store)/cart |
Add items to Cart for checkout |
(store)/checkout |
Payment option for authenticated users |
Contributions are welcome! Please follow these steps:
- Fork the repository
- Create a feature branch:
git checkout -b feature/your-feature-name - Commit your changes:
git commit -m 'Add some feature' - Push to the branch:
git push origin feature/your-feature-name - Open a Pull Request
This project is private. All rights reserved © HerboSpot.
HerboSpot 📧 info@herbospot.com