➥ Visit NexuTalk App
-
Real-time Messaging: Instant messaging with real-time updates.
-
Group Conversations: Create and manage group chats.
-
Single Conversations: One-on-one messaging.
-
Online Status: See who's online.
-
Responsive Design: Optimized for mobile, tablet, and desktop views.
-
Image Sharing: Share images within conversations.
-
Dark/Light Mode: Switch between dark and light themes.
-
and many more, including code architecture and reusability.
-
Frontend: Next.js 14, React, Tailwind CSS, Shadcn
-
Backend: Next.js, Prisma, MongoDB, Pusher
-
Authentication: NextAuth
-
Validation: Zod
-
Image Upload: Cloudinary
Follow these steps to set up the project locally on your machine.
Make sure you have the following installed on your machine:
git clone https://github.com/Mahmud0808/NexuTalk.git
cd NexuTalkInstall the project dependencies using npm:
npm installCreate a new file named .env in the root of your project and add the following content:
DATABASE_URL=
GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=
GITHUB_ID=
GITHUB_SECRET=
NEXTAUTH_URL="http://localhost:3000/"
NEXTAUTH_SECRET=
NEXTAUTH_JWT_SECRET=
NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME=
PUSHER_APP_ID=
NEXT_PUBLIC_PUSHER_APP_KEY=
PUSHER_SECRET=
NEXT_PUBLIC_PUSHER_CLUSTER=Replace the placeholder values with your actual credentials. You can obtain these credentials by signing up for the corresponding websites on MongoDB, Google Cloud Console, GitHub, Cloudinary, and Pusher.
-
Go to Google Cloud Console > Create new project > Select the project > Search for APIs & Services > OAuth consent screen > Make sure to select External User Type > Continue, add app domain, authorized domain and developer contact information.
-
Then go to Credentials > Create Credentials > OAuth client ID:
-
Application type: Web application
-
Add your site home page URL without any forward slash
/at the end in Authorized JavaScript origins field, skip this if you are not deploying your site and using it in localhost. e.g:https://nexutalk.vercel.app -
Add your site URL in this format
{site_url}/api/auth/callback/google. e.g:http://localhost:3000/api/auth/callback/google
-
-
Go to GitHub > Settings > Developer settings > OAuth Apps > New OAuth App:
- Add your site URL in Homepage URL and Authorized callback URL fields.
-
Go to Cloudinary > Settings > Upload > Add upload preset:
-
Signing Mode: Unsigned
-
Copy the name and use it in environment variables.
-
-
Go to Pusher > Channels:
-
Front end: React
-
Back end: Node.js
-
Get the environment variables from App Keys page.
-
Run the following commands in terminal:
npx prisma db push
npx prisma generatenpm run devOpen http://localhost:3000 in your browser to view the project.
Contributions are welcome! Here's how you can contribute:
- Fork the repository.
- Create your feature branch (
git checkout -b feature/AmazingFeature). - Commit your changes (
git commit -m 'Add some AmazingFeature'). - Push to the branch (
git push origin feature/AmazingFeature). - Open a pull request.
Wanna reach out to me? DM me at 👇
Email: mahmudul15-13791@diu.edu.bd