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 installOn 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 prodin frontend and change NEXT_PUBLIC_SOCKET_URL asws://localhost:3001in .env.production to rise a request to backend server.
# frondend
npm run dev
# backend
npm run devIn production, frontend will rise a request to express backend server.
# frondend
npm run prod
# backend
npm run prodI 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.
