NextJs-Messenger-Clone
NextJs-Messenger-Clone copied to clipboard
A messenger clone built with NextJs 13 (app router), MongoDB, Prisma, Tailwind CSS, Pusher and Next-Auth
NextJs-Messenger-Clone
A fully responsive real-time chat app made with NextJs 13 (app router), MongoDB, Tailwind CSS, Pusher, Next-Auth and Cloudinary.
- NextJs (13.4.x)
- React (18.x)
- MongoDB (6.x)
- Tailwind CSS (3.x)
- Pusher (5.x)
- Next-Auth (4.x)
- Typescript (5.x)
- Production build script
Live Demo
See a live demo on Vercel
Features
- Real-time chat update with Pusher
- Group chat
- Delete chat history
- Image hosting with Cloudinary
- Dynamic Theme support (Light and Dark mode)
- Support for both Desktop and Mobile screens
Installation
Setup MongoDB
-
Navigate to https://www.mongodb.com/atlas/database and register
-
Find and Select
Build a Database
Select the Free tier and press onCreate
at the bottom
-
Create a user (note down the password)
Scroll down toAdd entries to your IP Access List
Enter0.0.0.0/0
and pressAdd Entry
-
Press
Go to Databases
-
Click on
Connect
and selectMongoDB for VSCode
Copy the connection string and save it in a notepad
Replace<password>
with your password set on step 3
Addtest
at the end of the connection string (ex.connectionstring/test
)
Setup GitHub Authentication
-
Navigate to https://github.com/
Click on your profile dropdown on the top right
ClickSettings
-
Click
Developer settings
ClickOAuth Apps
ClickNew OAuth App
-
Give a name to your app
Typehttp://localhost:3020/
in theHomepage URL
andAuthorization callback URL
fields.
Click "Register application"
-
Copy the
Client Id
and note it down
Click onGenerate a new client secret
, copy and note it down
Setup Google Authentication
-
Navigate to https://console.cloud.google.com and create a new project
-
Navigate to the newly created project and search for
API & Services
-
Go to
OAuth consent screen
Click theExternal
field
ClickCREATE
-
Click the
App name
field and give it a name
On User Mail field, select your email
Scroll down toDeveloper contact information
and type your email
ClickSAVE AND CONTINUE
until you're on theSummary
step
-
Go to
Credentials
ClickCREATE CREDENTIALS
SelectOAuth client ID
-
Select
Web application
as Application Type
Scroll down toAuthorized redirect URIs
and addhttp://localhost:3020/api/auth/callback/google
ClickCREATE
Copy theCLient ID
andClient Secret
and note it down
Setup Cloudinary
-
Navigate to https://console.cloudinary.com and login
Go toDashboard
and note down theCloud name
-
Go to settings
Then go toUpload
-
Click
Add upload preset
ChangeSigning Mode
toUnsigned
ClickSave
Copy the newly added preset name and note it down
Setup Pusher
-
Navigate to https://dashboard.pusher.com/channels
ClickCreate app
(orGet Started
)
Give the app a name
SelectReact
for Frontend andNode.js
for Backend
Create the app
-
Go to
App Keys
Note down values
Setup Project
- Clone/download repo
- Create a file called .env.local in the root directory of your project, type the following in cmd/powershell
cp env.example .env.local
- Inside the
.env.local
file, add the MongoDB, Pusher, Cloudinary, GitHub and Google keys from the previous steps -
yarn install
to install the dependencies (runnpm install yarn
if you don't have yarn installed) -
yarn prisma db push
to create the DB collections -
prisma generate
to create the prisma client
Usage
Development
yarn dev
- Build app continuously (HMR enabled)
Production
yarn build
yarn start
- Build app once (HMR disabled) to
/.next/
All commands
Command | Description |
---|---|
yarn dev |
Build app continuously (HMR enabled) |
yarn build |
Build app once (HMR disabled) to /.next/ |
yarn start |
Run production build |
See also
- Some Design ideas were taken from Facebook Messenger
- Some Implementation Ideas for this project are taken from Josh and Antonio
- Project was bootstrapped with create-next-app