ReactStarter

bitmutex-website — React Starter Template

By aamitn

BM Site is a business website starter template built on Strapi 5, Next.js, and React, with a decoupled frontend and backend. It includes built-in SEO, reusable blocks, real-time visitor counting, and Discord real-time chat, and provides Docker, K8s/Helm, and PM2 deployment scripts.

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-02View source

What stands out

A quick read of the recorded project description.

01

Decoupled frontend and backend: Strapi 5 as the headless CMS backend, Next.js as the frontend, and PostgreSQL 17 for data storage

02

Built-in Strapi SEO plugin for site-wide dynamic SEO, plus multiple custom collection types, reusable blocks, and single types

03

Real-time chat integrated with Discord implemented within Strapi via Socket.IO, without relying on third-party chat components or embedded widgets

04

Provides real-time website visitor counting, automatic Strapi admin user creation on first run, health checks, and automatic restarts

05

Deployment options cover docker compose, Kubernetes/Helm documentation, PM2 configuration, and single-command installation scripts install.sh / install.ps1

06

Root-level pnpm scripts uniformly manage frontend and backend dependency installation, development, building, startup, seed import/export, and backup

Template Details

BM Site (bitmutex-website) is a starter template for corporate websites, using a decoupled frontend and backend structure: the server directory is a Strapi 5 headless CMS backend, the client directory is a Next.js frontend, the database uses PostgreSQL 17, and real-time chat integrated with Discord is implemented within Strapi via Socket.IO, without relying on third-party chat components. The repository root provides pnpm scripts to uniformly manage installation, development, building, and startup for both frontend and backend, and includes seed-data.tar.gz for importing initial database content.

Built-in features include: site-wide dynamic SEO driven by the Strapi SEO plugin, multiple custom collection types and reusable blocks, single types, automatic creation of a Strapi admin user on first run, health checks and automatic restarts, and real-time website visitor counting. Deployment options cover one-click startup with docker compose, Kubernetes and Helm documentation, PM2 configuration via ecosystem.config.cjs, and single-command installation scripts executed through install.sh / install.ps1.

Before use, note: for local development, comment out the url configuration pointing to the production domain in server/config/server.ts; fill in database connection information in server/config/database.ts; versions below 2.8.40 require manually downloading and placing seed data in the repository root. The repository is released under the Apache-2.0 license, but the licenses for third-party assets such as demo images, fonts, and icons must be checked separately, and external services such as domains, hosting, and databases may incur additional costs.

ReactStarter

Is it right for your project?

Use Cases

  • Building a corporate website or business showcase site that requires backend content management
  • Needing to provide website content to a frontend for rendering as a headless CMS
  • Wanting to integrate real-time customer service chat connected to Discord into the website
  • Needing to deploy frontend and backend applications via Docker, Kubernetes, or PM2

Suitable For

  • Corporate website projects that need a combination of Strapi and Next.js
  • Teams that want to manage content with a headless CMS and control the frontend themselves
  • Developers who need a containerized or cloud-native deployment path
  • Site builders who need built-in SEO and reusable content blocks

Getting started & customization

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

  1. 1

    After cloning the repository, run pnpm spawn to install frontend and backend dependencies and automatically generate the .env file, then fill in environment variables as needed

  2. 2

    Configure database credentials in server/config/database.ts, and set DATABASE_CLIENT to postgres, mysql, or sqlite

  3. 3

    For local development, comment out the url configuration pointing to the production domain in server/config/server.ts

  4. 4

    Versions below 2.8.40 require manually downloading seed-data.tar.gz and placing it in the repository root, then running pnpm seed to import

  5. 5

    For production, start with pm2 start ecosystem.config.cjs, and configure startup on boot via pm2 save and pm2 startup

Read repository instructions

License & source material

Usage conditions & limitations

Free to use · keep license notice

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

Must comply with when using

  • Free use, modification, commercial use, and distribution are permitted; the Apache-2.0 license must be included when distributing.
  • Modified files must be prominently marked as changed, and relevant copyright, patent, trademark, and attribution notices must be retained.
  • If the original project includes a NOTICE file, applicable attribution notices in it must be retained when distributing derivative works.
  • The license includes an applicable contributor patent grant; initiating patent litigation as described in the license terminates that patent grant, and no trademark use rights are granted.
  • 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

  • Versions below 2.8.40 must manually download seed-data.tar.gz and place it in the repository root, otherwise initial data cannot be imported.
  • Local development requires manually editing server/config/server.ts to comment out the url configuration pointing to the production domain, otherwise local access will be affected.
  • You must prepare your own database and fill in credentials in server/config/database.ts; the template does not include a hosted database service.
  • First login uses the default admin account [email protected] / strapiadmin, and the password must be changed immediately.
  • The real-time chat feature depends on Discord as an external service, and Discord-related credentials must be configured to use it.
  • The backup command depends on Cloudflare R2 storage service; using this feature requires your own R2 account and may incur costs.
  • 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 Apache-2.0 license.
  • External services such as domains, hosting, databases, payments, or AI may incur additional charges.
View Original Text Basis

no-charge, royalty-free, irrevocable copyright license

Original License Text

Manually [DOWNLOAD](https://github.com/aamitn/bitmutex-website/releases/download/INTERNAL-0/seed-data.tar.gz) INIT SEED DATA and `must be placed in repo root` for versions below `2.8.40`

Original README

For Local Dev , in /server (Strapi) folder , edit `config/server.ts` and comment out the below line:

Original README

- Set `DATABASE_CLIENT=postgres/mysql/sqlite` - Go to `/server/config/database.ts` and provide DB Credentials there

Original README

- **Email**: `[email protected]` - **Password**: `strapiadmin` 🚨 **Change the default password after the first login!**

Original README

- **Native Built-In Live Chat to Discord** (Powered by Socket.io integrated within strapi, No 3rd Party Service/Embed/Widgets)

Original README

| | `pnpm backup` | Uploads Strapi export `seed-data.tar.gz` to Cloudflare R2 Storage |

Original README
https://github.com/aamitn/bitmutex-website/blob/main/LICENSEhttps://github.com/aamitn/bitmutex-website/blob/main/README.md

Compiled by DeepSeek based on repository license and README ·2026-10-02. 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 · 87 / 100
Technologies
React
Website type
Starter
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-05-23
Screenshot last checked
2026-10-02

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 React 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.

Automatically checked against source and license rules; no manual editorial review.

Inspect the recorded source material

SHA-256: c86877e704f82d4750a4ff601e08e97381bfead8defe93ec43ab062e9587c154

2026-10-02T08:17:27.470Z

Source file / repository
# BM Site - Batteries Included Business Starter Template : Strapi5 + Next16 + React19 +  Postgres17 + SocketIO + SSR & RSC Goodness

**Bitmutex-Website** - A **`modern`**, **`cloud-native`** **`ready-to-use`** business website **`starter template`** with all the batteries included from SEO to Reusable Blocks. Built using **`Strapi 5`** at Backend and **`NextJs 16 SSR/AppRouter/RSC`** with **`React 19`** in Frontend as a BFF (Backend For Frontend) alongside **`Postgres17`** as DB. Supports Latest Node 24 LTS with cloud native(Docker, K8s, Helm) and bare-metal deployment options.

[![Better Stack Badge](https://uptime.betterstack.com/status-badges/v1/monitor/1mjch.svg)](https://uptime.betterstack.com/?utm_source=status_badge)
[![Deploy Strapi & Next.js via SSH](https://github.com/aamitn/bitmutex-website/actions/workflows/deploy.yml/badge.svg)](https://github.com/aamitn/bitmutex-website/actions/workflows/deploy.yml)
[![Build & Publish Docker Image](https://github.com/aamitn/bitmutex-website/actions/workflows/docker_publish.yml/badge.svg)](https://github.com/aamitn/bitmutex-website/actions/workflows/docker_publish.yml)
[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=aamitn_bitmutex-website&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=aamitn_bitmutex-website)
[![Bugs](https://sonarcloud.io/api/project_badges/measure?project=aamitn_bitmutex-website&metric=bugs)](https://sonarcloud.io/summary/new_code?id=aamitn_bitmutex-website)
[![Code Smells](https://sonarcloud.io/api/project_badges/measure?project=aamitn_bitmutex-website&metric=code_smells)](https://sonarcloud.io/summary/new_code?id=aamitn_bitmutex-website)
[![Docker Hub](https://img.shields.io/badge/Docker%20Hub-bitmutex%2Fbm--site-blue?logo=docker)](https://hub.docker.com/r/bitmutex/bm-site)
![Docker Pulls](https://img.shields.io/docker/pulls/bitmutex/bm-site)
![Docker Image Size](https://img.shields.io/docker/image-size/bitmutex/bm-site/latest)
[![Duplicated Lines (%)](https://sonarcloud.io/api/project_badges/measure?project=aamitn_bitmutex-website&metric=duplicated_lines_density)](https://sonarcloud.io/summary/new_code?id=aamitn_bitmutex-website)
[![GitHub release](https://img.shields.io/github/v/release/aamitn/bitmutex-website)](https://github.com/aamitn/bitmutex-website/releases/latest)
[![TEST](https://img.shields.io/badge/TEST-View_Report-blue)](https://aamitn.github.io/bitmutex-website/)
[![Vitest Framework Coverage](https://aamitn.github.io/bitmutex-website/coverage-badge.svg)](https://aamitn.github.io/bitmutex-website/unit-coverage)

<!--

[![Coverage](https://sonarcloud.io/api/project_badges/measure?project=aamitn_bitmutex-website&metric=coverage)](https://sonarcloud.io/summary/new_code?id=aamitn_bitmutex-website)
-->

 Manually [DOWNLOAD](https://github.com/aamitn/bitmutex-website/releases/download/INTERNAL-0/seed-data.tar.gz) INIT SEED DATA and `must be placed in repo root` for versions below `2.8.40` . Data in [this](https://github.com/aamitn/bitmutex-website/releases/tag/INTERNAL-0) internal releae

## SINGLE COMMAND DEPLOY 🛠️📦🚀

- For  macOS / Linux(Bash)
```sh
curl -sL https://raw.githubusercontent.com/aamitn/bitmutex-website/main/scripts/install.sh | bash
```

- For Windows (PowerShell)
```sh
irm https://raw.githubusercontent.com/aamitn/bitmutex-website/main/scripts/install.ps1 | iex
```

- For Windows (CMD)
```sh
powershell -ExecutionPolicy Bypass -NoProfile -Command "irm https://raw.githubusercontent.com/aamitn/bitmutex-website/main/scripts/install.ps1 | iex"

OR

curl -fsSL https://raw.githubusercontent.com/aamitn/bitmutex-website/main/scripts/install.ps1 | powershell -ExecutionPolicy Bypass -NoProfile -
```

### **Lighthouse Performance :**

<img src="https://gitlab.com/aamitn/assets/-/raw/main/bm-site-data/lighthouse.png" width="450" height="auto">


| Screenshot | Illustration |
|------------|--------------|
| <img src="https://gitlab.com/aamitn/assets/-/raw/main/bm-site-data/ss.png" width="450" height="250"> | <img src="https://github.com/aamitn/bitmutex-website/releases/download/INTERNAL-0/illustration.gif" width="450" height="250"> |

<img src="https://gitlab.com/aamitn/assets/-/raw/main/bm-site-data/ER_Diagram.png" width="800" height="auto">


## 🚀 Features
-  **Strapi 5 CMS** (Headless API-driven backend)
-  **Next.js 16** (Fast, SSR-capable frontend)
-  **PostgreSQL 17** (Database for Strapi)
-  **Docker-Compose Support** (For seamless development & deployment)
-  **Native Built-In Live Chat to Discord** (Powered by Socket.io integrated within strapi, No 3rd Party Service/Embed/Widgets)
-  **Strapi Auto-Admin User Creation** (Creates admin user on first run)
-  **Health Check & Auto-Restart** (Ensures services stay healthy)
-  **Sitewide Dynamic SEO** (with Strapi SEO Plugin Integration)
-  **Multiple Custom Collections, Reusable Blocks and Single Types**
-  **Real-Time Features** (Provides live website visitor count)


## 📂 Project Structure
```
📦 bitmutex-website
├── 📂 client # Next.js frontend
		├── Dockerfile
├── 📂 server # Strapi backend (Backend CMS)
		├── Dockerfile
├── 📜 copy-env.mts # Used by root level project package.json for auto copying of .env.example to .env in both `client` and `server` folders
├── 📜 docker-compose.yml # Container configuration
├── 📜 seed-data.tar.gz # Database seed (must be imported manually for data reproducability)
├── 📜 ecosystem.config.cjs (Used for production deployments with PM2)
├── 📜 package.json (root level dependencies to initialize setup of client and server apps)
├── 📜 package.lock.json (npm lockfile)
├── 📜 yarn.lock(yarn lockfile, YARN is preferred for this project )
└── 📜 README.md # This file
```

## Available Commands

| Location        | Command              | Description |
|-----------------|----------------------|-------------|
| **Project Root** | `pnpm client`        | Run the **client** development server from the project root. |
|                 | `pnpm server`        | Run the **server** development server from the project root. |
|                 | `pnpm setup:client`  | Install dependencies for the client and copy `.env` file. |
|                 | `pnpm setup:server`  | Install dependencies for the server and copy `.env` file. |
|                 | `pnpm spawn`         | Install dependencies for root, client, and server in one go. |
|                 | `pnpm dev`           | Start **Strapi** (server) and **Next.js** (client) in parallel for development. |
|                 | `pnpm build`         | Build both server and client in parallel, start server, and exit on build result. |
|                 | `pnpm start`         | Start server and client in parallel (production mode). |
|                 | `pnpm seed`          | Import seed data into Strapi from `seed-data.tar.gz`. |
|                 | `pnpm export`        | Export Strapi data without encryption to `seed-data`. |
|                 | `pnpm repo:upstream` | Fetch and merge latest changes from `upstream/main`. |
|                 | `pnpm repo:sync`     | Pull the latest changes from `origin/main`. |
|                 | `pnpm backup`        | Uploads Strapi export `seed-data.tar.gz` to Cloudflare R2 Storage |
|                 | `pnpm clean`        | Removes root and client , server folder's node_modules, dist, build, .turbo and other static folders |
|                 | `pnpm deepclean`        | Same as clean with added lockfile removal |
| **Backend Server**      | `pnpm develop`       | Start Strapi in development mode. |
|                 | `pnpm start`         | Start Strapi in production mode. |
|                 | `pnpm build`         | Build Strapi project. |
|                 | `pnpm strapi`        | Run Strapi CLI commands. |
|                 | `pnpm deploy`        | Deploy the Strapi project. |
| **Frontend Client**      | `pnpm dev`           | Start Next.js in development mode using Turbopack. |
|                 | `pnpm build`         | Build the Next.js application for production. |
|                 | `pnpm start`         | Start Next.js in production mode. |
|                 | `pnpm lint`          | Run ESLint to check for code quality issues. |

  
## ⚙️Setup Instructions

 0️⃣ 1-Step Docker Deploy 
 ```sh
 git clone --depth=1 https://github.com/aamitn/bitmutex-website.git && cd bitmutex-website && docker compose up
```
##### Read docker build instructions [DOCKER.md](/DOCKER.md) , for Kubernetes Deployments and Helm Charts Read [K8S.md](/K8S.md)  


### 1️⃣ **Clone the Repository**
```sh
git clone --depth=1 https://github.com/aamitn/bitmutex-website.git
cd  bitmutex-website
```
##### omit the `--depth=1` if you want to download the repo with lifetime git history , genrally required for devs contributing to this project


### 2️⃣ **Install Dependencies and Setup Env File**

```sh
pnpm spawn
```
This will run pnpm install  and also copies .env.example to .env on both `client` and `server` directories. After this step `setup your .env` vars accordingly on the auto-generated file.  Create your databases as required. Schema will be auto-generated by Strapi.
- Set `DATABASE_CLIENT=postgres/mysql/sqlite`
- Go to `/server/config/database.ts` and provide DB Credentials there


### 3️⃣ **Run Strapi and Next initially to create strapi DB schemas**
  ```
 pnpm dev
  ```
- After running this strapi should start, go to `http://localhost:1337` and create admin user
- Ctrl-C to stop both strapi and next
- For Local Dev , in /server (Strapi) folder , edit `config/server.ts` and comment out the below line:
```bash
url: 'https://strapiadmin.bitmutex.com', //backend fqdn url //comment for local-dev
```

### 4️⃣ **Import/Seed DB**
You may run this on the project root,
  ```
 pnpm seed
  ```
  or you may run this in `server` directory by doing `cd server`
  ```sh
 pnpm strapi import -f ../seed-data.tar.gz --force
  ```
 After running this strapi should strart, go to `http://localhost:1337` and create admin user


### 5️⃣.1️⃣  **Finally Start the application for development**
  ```sh
pnpm dev
  ```
  This will start both strapi and nextjs  in development mode (next will have `live refresh` and `watch` enabled)

### 5️⃣.1️⃣  **Start the application in prod mode**
  ```sh
pnpm build  OR pnpm turbo build --no-cache
pnpm start
  ```
  This will start both strapi and nextjs  in production mode, no debugging.
 
### 6️⃣  **Build for Production**
- Change your .env vars accordingly for production use case
- Go to project root and run `pnpm build`
- Ensure build is successful adn run `pnpm start`
> To run in cloud VPS/Hosting, use `pm2` , just close any other running instances
  -- Navigate to project root and run `pm2 start ecosystem.config.cjs`
  -- Run `pm2 list` to check status and go to [`http://localhost:1337] and [http://localhost:3001]`
  -- If all started successfully, then autostart the app on machine restart using `pm2 save` and `pm2 startup`
> If using  `oxmgr` , just close any other running instances
  -- Navigate to project root and run `oxmgr apply oxfile.toml`
  -- Run `pm2 list` to check status and go to [`http://localhost:1337] and [http://localhost:3001]`
  -- If all started successfully, then autostart the app on machine restart using `oxmgr service install` and `oxmgr ui` to monitor. 
  commands.
> Use `/server/src/admin/vite.config.ts` `/server/config/server.ts` to control admin dashboard domain access

### 7️⃣  **Upgrade Strapi to Latest Version**
  ```sh
  npx @strapi/upgrade latest 
  OR
  pnpx @strapi/upgrade latest 
  ```
  This will upgrade  strapi to its latest version. More info [here](https://docs.strapi.io/cms/upgrade-tool)

### 8️⃣ **Export DB**
You may run this on the project root,
  ```
 pnpm export
  ```
  or you may run this in `server` directory by doing `cd server`
  ```sh
  pnpm strapi export --no-encrypt -f ../seed-data
  ```
 After running this a file named `seed-data.tar.gz` will be created at project root


## ☁️ Cloud Native Setup Instructions

```sh
docker-compose  up  --build
```

This will start:
- PostgreSQL at `localhost:5432`
- Strapi CMS at `http://localhost:1337`
- Next.js Frontend at `http://localhost:3000`


## 🔑 Default Admin Credentials
> These credentials are created automatically when `AUTO_CREATE_ADMIN=true` in `docker-compose.yml` or `.env` inside `server` directory.

-  **Email**: `[email protected]`
-  **Password**: `strapiadmin`   
🚨 **Change the default password after the first login!**


## 📞 Support
If you encounter issues, feel free to [ open an issue](https://github.com/aamitn/bitmutex-website/issues/new/choose).
Designed, Developed and Maintained by `Bitmutex Technologies`
Report a correction

Explore similar templates

Compare previews and descriptions within the same stack and category.

ant-design-pro

ant-design-pro

Ant Design Pro is an enterprise-grade React admin scaffold built on React 19, Umi Max 4, and antd 6 with TypeScript.

React · Admin dashboard

react-boilerplate

react-boilerplate

A production-grade React + Redux starter for experienced developers, integrating Redux, redux-saga, styled-components, and react-router, with offline-first and PWA support, CLI code generation, and built-in testing and CI configuration. Requires Node.js v8.15.1 and npm v5 or higher; not suitable for beginners.

React · Starter

fastapi-react

fastapi-react

A Cookiecutter template for FastAPI + React (TypeScript) full-stack projects, integrating PostgreSQL, SQLAlchemy, Alembic, Celery, Redis, JWT authentication, a react-admin admin panel, and a Docker Compose development environment with Nginx reverse proxy.

React · Admin dashboard

shadcn-landing-page

shadcn-landing-page

A free React landing page template built with TypeScript, Tailwind and Shadcn/UI, offering 16 ready-to-use sections such as Navbar, Hero, Pricing, FAQ and Footer, with responsive layout, dark mode and meta tags.

React · Corporate Website

start-ui-web

start-ui-web

Start UI [web] is an opinionated full-stack starter from the BearStudio team, built on Node.js, TypeScript, React, and TanStack Start, with Tailwind CSS, shadcn/ui, React Hook Form, oRPC, Prisma, and Better Auth.

React · Starter

React-Landing-Page-Template

React-Landing-Page-Template

A React single-page landing page template for startups and service businesses, with copy and image references centralized in data.json, assets in public/img/, styles in public/css/, and a contact form that requires your own EmailJS service ID, template ID, and Public Key.

React · Corporate Website