Quick is a simple and efficient chat application designed to facilitate fast and easy communication between users. Whether you want to chat one-on-one with friends or participate in group conversations, Quick has got you covered.
- Instant Messaging: Send and receive messages in real-time.
- One-on-One Chat: Engage in private conversations with individual users.
- Group Chats: Create or join group conversations with multiple users.
- User Authentication: Secure login system using JWT authentication.
- Customizable Profiles: Personalize your profile with avatars, statuses, and more.
- Notification System: Receive alerts for new messages and updates.
- Lightweight and Fast: Built for speed and efficiency, ensuring a smooth user experience.
- Video Call: Initiate video calls with other users 📹.
- Audio Call: Make voice calls to other users 📞.
- Responsive: Provides a user-friendly experience on various devices.
- Search Functionality: Quickly find users and conversations 🔍.
All key features have been thoroughly tested using Playwright to ensure reliability and performance.
- Next.js: React framework for server-side rendering and static site generation
- Express.js: Web application framework for Node.js
- Prisma: Modern database toolkit
- Docker: Containerization platform
- Tailwind CSS: Utility-first CSS framework
- Pusher: Real-time communication API
- PeerJS: Peer-to-peer communication library
- WebRTC: Real-time communication protocol
- Zustand: Lightweight state management library
- Playwright: Browser automation library
- Dexie: IndexedDB wrapper library for client-side storage
- Nodemailer: Email sending library
From your command line:
# Clone this repository
$git clone https://github.com/SHABIN-K/quick.git
# Go into the repository
$cd quick
Navigate to the server
folder and create a file: .env
. Add the following contents:
APP_PORT='Your server port number'
APP_LOG_LEVEL='log level'
APP_NODE_ENV='prodcution | development mode'
APP_WEB_URL='your frontend url'
APP_SESSION_SECRET='secret_key'
APP_SALT_ROUNDS = 10
APP_LEVEL="development"
# for database purposes
APP_DATABASE_URL='your_Mongodb_database_url'
# for jwt token generation
APP_ACCESS_TOKEN_SECRET='your_access_token_secret'
APP_REFRESH_TOKEN_SECRET='your_access_token_secret'
APP_REFRESH_TOKEN_EXPIRY=30d
APP_ACCESS_TOKEN_EXPIRY=7d
APP_RESET_PASSWORD_TOKEN_SECRET=15m
APP_RESET_PASSWORD_TOKEN_EXPIRY_MINS=15m
# for email config
APP_GMAIL_USERNAME='your_email_id'
APP_GMAIL_PASS="your_email_pass"
# https://pusher.com
APP_PUSHER_ID=""
APP_PUSHER_KEY=""
APP_PUSHER_SECRET=""
APP_PUSHER_CLUSTER="
Navigate to the client
folder and create a file: .env
:
# https://pusher.com/
NEXT_PUBLIC_PUSHER_APP_KEY=''
NEXT_PUBLIC_BACKEND_URL='your backend url'
- Ensure Docker is installed and running on your machine.
- From the project root directory, run the following command to build and start the application:
docker-compose up --build
For development purposes, you can start the client and server separately to benefit from hot reloading:
- Navigate to the
client
directory and run:
npm install
npm run dev
- Open a new terminal, navigate to the server directory, and run:
npm install
npm run dev
All key features have been thoroughly tested using Playwright to ensure reliability and performance. To run the tests, use:
# Run Playwright tests
npx playwright test
Join Our Telegram Group for support and assistance, and our Channel for updates. Report bugs and give feature requests there.
⭐️ Star this Repo if you Liked it! ⭐️