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! βοΈ