A website template using the MERN stack. It is geared towards Persistent Browser Based Games (think neopets), but is flexible enough for a number of different uses.
The primary technology involved is:
- React
- Nodejs
- MariaDB (with Sequelize)
- Docker (with docker compose)
This template is designed to support the development of persistent browser based games (PBBGs), but it, and it's component microservices, can be used elsewhere.
This template is released under the zlib license (see LICENSE).
See the github wiki for full documentation.
There are external components to this template referred to as "microservices". These can be omitted entirely by simply removing the React components that access them. These are also available via docker hub.
- News Server: https://github.com/krgamestudios/news-server
- Auth Server: https://github.com/krgamestudios/auth-server
- Chat Server: https://github.com/krgamestudios/chat-server
A clean install is this easy:
git clone https://github.com/krgamestudios/MERN-template.git
cd MERN-template
node configure-script.js
docker compose up --build
To set up this template in development mode:
- Ensure mariadb is running in your development environment
- Run
mariadb tools/create_database.sql
as the root user - Run
npm install
- Run
cp .envdev .env
and enter your details into the.env
file - Execute
npm run dev
- Navigate to
http://localhost:3001
in your web browser
- Mainly one language across the codebase (JavaScript)
- Full documentation
- Setup tutorial
- Fully Featured Account System (as a microservice)
- Email validation
- Logging in and out
- Account deletion
- Password management
- JSON web token authentication
- HttpOnly cookies for security
- Optional post validation hook
- Fully Featured News Blog (as a microservice)
- Publish, edit or delete articles as needed
- Secured via admin panel
- Fully Featured Chat System (as a microservice)
- Available when logged in
- Chat logs saved to the database
- Room-based chat (type
/room name
to access a specific room)
- Moderation tools
- Permanently banning users
- Chat-muting users for a time period
- Users reporting offensive chat-content
- Easy To Use Configuration Script
- Sets up everything via docker
- A default admin account (if desired)
- Full documentation
- Modding tutorials
- Fully Featured News Blog (as a microservice)
- Individual pages for news articles
- Fully Featured News Blog (as a microservice)
- Restore deleted articles
- Undo edits
- Fully Featured Chat System (as a microservice)
- Custom emoji
- Private messaging
- Broadcasting to all channels
- Badges next to usernames
- Backend for leaderboards (modding tutorial?)
- Backend for energy systems (modding tutorial?)
- Backend for items, shops, trading and currency (modding tutorial?)