This is a modern, self-hosted Proof of Concept (POC) website modeled after the UI/UX of Tamnoon.io.
- Framework: Next.js 15 (App Router)
- CMS: Payload CMS v3 (Beta/Next.js Native)
- Database: SQLite (via
@payloadcms/db-sqlite) - Styling: Tailwind CSS + shadcn/ui
- Animations: Framer Motion
- Dynamic Modular Pages: Build pages using blocks (Hero, Features, Logo Marquee, etc.) directly from the Payload Admin.
- Lead Capture: "Book a Demo" form that saves submissions to the "Leads" collection.
- Resource Center: Fully functional blog/resource section managed via the CMS.
- High-Tech Aesthetic: Dark mode design with smooth scroll animations.
- Node.js 18+
- npm or yarn
- Install dependencies:
npm install
- The project uses a local SQLite database (
payload.db). The schema will be automatically generated on first run.
Run the development server:
npm run dev- Frontend: http://localhost:3000
- Admin Portal: http://localhost:3000/admin
npm run build
npm startYou can use the provided Dockerfile (create one if not present) or a simple Node.js setup.
Example Dockerfile:
FROM node:20-slim AS base
ENV PNPM_HOME="/pnpm"
ENV PATH="$PNPM_HOME:$PATH"
RUN corepack enable
FROM base AS build
COPY . /usr/src/app
WORKDIR /usr/src/app
RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile
RUN pnpm run build
FROM base
COPY --from=build /usr/src/app /usr/src/app
WORKDIR /usr/src/app
EXPOSE 3000
CMD [ "pnpm", "start" ]If you are hosting on a Linux VPS:
- Build the project:
npm run build - Start with PM2:
pm2 start npm --name "tamnoon-poc" -- start
Ensure the following are set in your production environment:
PAYLOAD_SECRET: A secure random string.DATABASE_URI:file:./payload.db(for SQLite).NEXT_PUBLIC_SERVER_URL: Your production domain (e.g.,https://tamnoon-poc.com).