Note, this project is under construction 🚧 🏗️ ⛔
- Clone the repository.
- Change directory to backend
- Run
npm install
to install dependencies. - Install Docker for your operating system.
- Install the Docker Compose tool.
- Run docker-compose
docker-compose up -d
This will start container with PostgreSQL, Redis and Redis Commander.
- Run the following command
npx prisma db push
- Create a
.env
file in the root directory and paste the following:
DATABASE_URL=
SESSION_SECRET=
CLOUDINARY_CLOUD_NAME=
CLOUDINARY_API_KEY=
CLOUDINARY_API_SECRET=
MAILGUN_API_KEY=
MAILGUN_DOMAIN=
PREFIX=
CLIENT_URL=http://localhost:5173
DATABASE_URL
The hostname for your PostgreSQL database server (you can use the one from the example file)SESSION_SECRET
Can be any string that can be used to encrypt & decrypt your cookie for sessions.CLOUDINARY_CLOUD_NAME
Cloudinary API CredentialsCLOUDINARY_API_KEY
Cloudinary API CredentialsCLOUDINARY_API_SECRET
Cloudinary API CredentialsMAILGUN_API_KEY
Mailgun API CredentialsMAILGUN_DOMAIN
Mailgun API CredentialsPREFIX
Can be any string that can be used to encrypt & decrypt your redis data
- Run
npm run start:dev
to start the project in development mode.
- Change directory to frontend
- Run
npm install
to install dependencies. - Run
npm run dev
to start the project in development mode.
As a user, I can
- sign up / sign in / sign out / reset pwd / confirm email
- search for friends / add them / delete them
- create conversations with other users / create group conversations
- send messages to other user(s)
- call other users
- see incoming messages live
- see notifications / friends requests / calls live
- see online users live
- see typing indicator
- maintain privacy (can't read others chats/msgs)
- Node + Nest + TS
- WS + WebRTC
- express-session + Redis
- PostgreSQL + Prisma
- React 18.2+
- Redux Toolkit
- HeadlessUI / TailwindCSS
- Docker + docker-compose
- Switch to
ReactQuery
- Update dependencies
- Switch to yarn
- Add commitizen
- Cover app with tests (
Playwright
,Jest
, etc.) - Add
husky
to run linters and tests before commit - Frontend portion need performance improvement, add
useCallback
,memo
,useMemo
etc. - Implement custom servers
- Implement file upload (avatars, attachments)
- Check app for vulnerabilities (OWASP Top 10)