Next.jsReactAdmin dashboard

afro-hair-salon-website — Next.js Admin dashboard Template

By therealodineye

A Next.js 14 production website template for Constance's Hair Art, including an AI chatbot, online booking, Google Calendar sync, Instagram feed, admin panel, and a Markdown-based knowledge base, using SQLite/Prisma for data storage and deployed via Docker Compose.

Explore the design

Compare the page layouts and mobile experience. Open any screenshot for a closer look.

3 previews
Desktop homepage1 / 3
Desktop captureTop of page

Actual screenshot captured by the server browser.

All pages & views 3

Screenshots show visual appearance; interactive behavior may differ.

Recorded 2026-10-14View source

What stands out

A quick read of the recorded project description.

01

AI chatbot based on Google Gemini 2.0 Flash, supports automatic Norwegian and English language detection, and can hand off to a human agent on Telegram

02

Online booking system with email confirmation and two-way sync via Google Calendar API

03

Admin panel at /admin, password must be changed immediately after first login

04

RAG knowledge base driven by Markdown files under /data, editable and hot-updatable via docker cp without a full rebuild

05

Tech stack includes Next.js 14 App Router, TypeScript, Tailwind CSS, SQLite/Prisma 7, NextAuth.js v4

06

Deployed via Docker Compose, site runs on port 8081, credentials stored in a gitignored .env

Template Details

This repository is the private production website for Constance's Hair Art, an African hair salon in Stavanger, Norway, and it also publishes an open-source template without credentials. The README states the tech stack is Next.js 14 (App Router), TypeScript, Tailwind CSS, SQLite (via Prisma 7), NextAuth.js v4, Google Gemini 2.0 Flash, Telegram Bot API, Nodemailer (Gmail SMTP), Google Calendar API, and containerized with Docker and Docker Compose. Features include: an AI chatbot with automatic Norwegian and English language detection that can hand off conversations to a human agent on Telegram; an online booking system with email confirmation; two-way Google Calendar sync; Instagram feed integration; an admin panel at /admin; and a Markdown RAG knowledge base at /data. The README also mentions rate limiting, security response headers, and httpOnly session cookies.

For deployment, the README provides commands: docker compose up -d --build to build and start, docker compose restart to restart, and docker logs hair-art -f to view logs, and notes the site runs on port 8081. All credentials go in a gitignored .env, and you can refer to .env.example to fill in the required variables. The Telegram Webhook must be registered once via curl after deployment or domain changes, and support staff can reply to customers in Telegram using /reply <session-id-8-chars>. The knowledge base can be edited directly in /data under services.md, prices.md, faq.md, opening_hours.md, contact.md, and a single file can be hot-updated via docker cp without a full rebuild. Local development steps are npm install, copy .env.example to .env and fill it in, npx prisma migrate dev, npm run db:seed, npm run dev. The admin panel is at /admin, and the password should be changed immediately after first login.

The README does not provide information on performance, scalability, test coverage, browser compatibility, or production readiness, nor does it list specific dependency version numbers (beyond the major versions of frameworks and libraries). The preview screenshots only demonstrate that desktop and mobile pages exist, not specific functionality.

Next.jsAdmin panel

Is it right for your project?

Use Cases

  • Building a website for an African hair salon with online booking and AI customer service
  • Scenarios where issues the chatbot cannot handle need to be handed off to a human agent on Telegram
  • Wanting to maintain knowledge base content such as services, prices, and FAQs in Markdown files to avoid code changes
  • Salons or studios that need to sync bookings two-way with Google Calendar
  • Deploying a Next.js application on your own server using Docker Compose

Suitable For

  • Developers familiar with Next.js, TypeScript, and Docker
  • Salons or service businesses that need booking, AI customer service, and human handoff features
  • Operations teams that want to maintain knowledge base content in Markdown and reduce code changes
  • Businesses that need to sync bookings to Google Calendar

Getting started & customization

Use these recorded setup notes alongside the repository instructions for your chosen version.

  1. 1

    Local development: npm install, copy .env.example to .env and fill it in, run npx prisma migrate dev, npm run db:seed, npm run dev

  2. 2

    Deployment: docker compose up -d --build to build and start, docker compose restart to restart, docker logs hair-art -f to view logs, site runs on port 8081

  3. 3

    All credentials go in .env (already gitignored), refer to .env.example to fill in the required variables

  4. 4

    After deployment or domain changes, register the Telegram Webhook via curl, and set secret_token and allowed_updates

  5. 5

    After modifying Markdown files under /data for the knowledge base, you can update a single file via docker cp without a full rebuild; change the admin panel password immediately after first login

Read repository instructions

License & source material

Usage conditions & limitations

Free to use · keep license notice

This listing covers the free version under the MIT license in the public repository; the free scope is the code of that version and does not imply that external services or third-party assets are free.

Must comply with when using

  • Free use, modification, commercial use, and distribution of this version's code are permitted.
  • When distributing copies or substantial portions of the code, retain the original author's copyright notice and the full MIT license notice.
  • The code is provided as-is; warranties and limitations of liability are governed by the original license and applicable law.

Additional costs & items to verify

  • Demo images, fonts, icons, and other third-party assets must be checked against their respective licenses and cannot be judged solely by the code's MIT license.
  • External services such as domain, hosting, database, payment, or AI may incur additional charges.
  • All credentials must be placed in the .env file, which is gitignored and will not be committed to the repository; you must prepare and fill in the required environment variables yourself.
  • Refer to .env.example to fill in the required environment variables; without these credentials, the application will not run properly.
  • After deployment or domain changes, you must register the Telegram Webhook via curl to use the human handoff feature.
  • Change the default admin password immediately after first login to the admin panel.
  • For local development, copy .env.example to .env and fill in actual values.
View Original Text Basis

Permission is hereby granted, free of charge

Original License Text

All credentials are in `.env` (gitignored — never committed).

Original README

Copy `.env.example` for reference on required variables.

Original README

Register once after deploy or domain change:

Original README

Change password immediately after first login.

Original README

cp .env.example .env # fill in values

Original README
https://github.com/therealodineye/afro-hair-salon-website/blob/main/LICENSEhttps://github.com/therealodineye/afro-hair-salon-website/blob/main/README.md

Compiled by DeepSeek based on repository license and README ·2026-10-14. Results only cover the materials read; dependencies, images, fonts, and subsequent term changes are subject to their respective original texts.

Project checks & description sources

Template Information

Source platforms
GitHub
Documentation and maintenance reference score
More documented · 80 / 100
Technologies
Next.js · React
Website type
Admin dashboard
How this score is calculated

Our heuristic uses license records (up to 30), a demo link (12), a preview (10), stars (15), recorded maintenance (15), description completeness (8), feature records (5) and classification data (5). It is not a code, security or performance test, or a Google score. A link does not establish tested functionality.

What to verify for this project

Repository update recorded
2026-09-08
Screenshot last checked
2026-10-14

A demo link is listed. Check it with your own content and viewport sizes; its presence does not confirm that forms, authentication or payments work.

The catalog identifies Next.js as the primary stack. Check the actual dependency manifest and lockfile for versions and hosting requirements. These notes use recorded metadata, not a code audit or a deployment test.

Use a selection guide →

How this description was prepared

AI-assisted description based on catalog records and repository material. Repository authors are not automatically the reviewers of this description.

Review declaration: codex-user-requested-batch-review-20261015 · 2026-10-15

Inspect the recorded source material

SHA-256: e04c0d97092c8b43d97da47d31e8313549af173eb505d3bce6625dd98c588240

2026-10-14T19:03:12.542Z

Source file / repository
# Constance's Hair Art — Production Website

> **Live site:** [constancehairart.com](https://constancehairart.com)

Private production repository for **Constance's Hair Art** — a premium African hair salon in Stavanger, Norway.

**Developed by [TheRealOdinEYE](https://github.com/TheRealOdinEYE)**

> Public open-source template (no credentials): [afro-hair-salon-website](https://github.com/therealodineye/afro-hair-salon-website)

---

## Stack

| Layer | Technology |
|---|---|
| Framework | Next.js 14 (App Router) |
| Language | TypeScript |
| Styling | Tailwind CSS |
| Database | SQLite via Prisma 7 |
| Auth | NextAuth.js v4 |
| AI Chatbot | Google Gemini 2.0 Flash |
| Human Handoff | Telegram Bot API |
| Email | Nodemailer (Gmail SMTP) |
| Calendar | Google Calendar API |
| Container | Docker + Docker Compose |

---

## Features

- AI chatbot (Norwegian + English auto-detect) with human handoff to Telegram
- Online booking system with email confirmations
- Google Calendar two-way sync
- Instagram feed integration
- Admin panel at `/admin`
- RAG knowledge base (markdown files in `/data`)
- Rate limiting, security headers, httpOnly session cookies

---

## Deployment

```bash
# Build and start
docker compose up -d --build

# Restart without rebuild
docker compose restart

# View logs
docker logs hair-art -f
```

Site runs on **port 8081**.

---

## Environment

All credentials are in `.env` (gitignored — never committed).  
Copy `.env.example` for reference on required variables.

---

## Telegram Webhook

Register once after deploy or domain change:

```bash
curl -X POST "https://api.telegram.org/bot<TOKEN>/setWebhook" \
  -d "url=https://constancehairart.com/api/chat/telegram-webhook" \
  -d "secret_token=<TELEGRAM_WEBHOOK_SECRET>" \
  -d "allowed_updates=[\"message\"]"
```

Reply to customers from Telegram:
```
/reply <session-id-8-chars> Your message here
```

---

## Knowledge Base

Edit markdown files in `/data` — no code changes needed:

| File | Contents |
|---|---|
| `data/services.md` | Services and descriptions |
| `data/prices.md` | Pricing table |
| `data/faq.md` | FAQ (Norwegian + English) |
| `data/opening_hours.md` | Hours and booking policy |
| `data/contact.md` | Address and directions |

Apply changes without full rebuild:
```bash
docker cp data/services.md hair-art:/app/data/services.md
```

---

## Admin Panel

URL: `/admin`  
Change password immediately after first login.

---

## Local Development

```bash
npm install
cp .env.example .env   # fill in values
npx prisma migrate dev
npm run db:seed
npm run dev
```

---

## License

MIT © [TheRealOdinEYE](https://github.com/TheRealOdinEYE)
Report a correction

Explore similar templates

Compare previews and descriptions within the same stack and category.