The project is a boilerplate for building real-time chat applications using Next.js 13(app router) and Socket.IO.
It can automatically switch API based on npm run prod
or npm run dev
.
On the backend, It provides a simple Express server-side setup to simulate a production environment when using npm run prod
. Or it will use mocked Socket.io API in development enviroment.
On the frontend, I encasulate Socket.IO hander into a lightweight state management library Zustand and invoke them in chatroom components.
The project aims to streamline the development of real-time chat applications by providing a foundation with essential features and integrations.
- Clone the nextjs-13-socketio-boilerplate repository:
git clone https://github.com/ttpss930141011/nextjs-13-socketio-boilerplate
- Change to the project directory:
cd nextjs-13-socketio-boilerplate/frontend
# and
cd nextjs-13-socketio-boilerplate/backend
- Install the dependencies:
pnpm install
On the backend, you need to customize your enviroment variables certainly based on OS in package.json. For me, my os is windows, so in the dev command it have a SET NODE_ENV=development command but it don't need it Linux/Mac.
In development, frontend will rise a request to its mocked api server but backend server.
Hint: Or you can use
npm run prod
in frontend and change NEXT_PUBLIC_SOCKET_URL asws://localhost:3001
in .env.production to rise a request to backend server.
# frondend
npm run dev
# backend
npm run dev
In production, frontend will rise a request to express backend server.
# frondend
npm run prod
# backend
npm run prod
I deploy the backend project in Render.
Render is a cloud application hosting service company designed for developers. It provides a simple and easy-to-use platform that allows developers to quickly and easily deploy their applications to the cloud. Render's services include:
- Automatic deployment: Render can automatically deploy your application to the cloud without any manual intervention.
- Automatic scaling: Render can automatically scale your application to meet your needs without any manual management.
- Automatic monitoring: Render can automatically monitor your application and notify you when problems occur.
- Automatic backup: Render can automatically backup your application to prevent accidental loss.
The following is the parameters suggestions when setting backend project.
Type | Parameter |
---|---|
Name |
<your-project-name> |
Branch |
main |
Root Directory |
./backend |
Build Command |
yarn build |
Start Command |
NODE_ENV=production node build/server.js |
Finally, you need to set the CORS_URL in enviroment variable in Render enviroment varible in project's tab.
You can just deploy on Vercel by clicking the following buttom,and set NEXT_PUBLIC_SOCKET_URL as your backend server url on Render.
This project is licensed under the MIT License. See the LICENSE file for additional info.