Play online chess with other players and make friends.
- Play chess with others in real-time (socket rooms)
- Lobby for finding players with similar ranks
- Send friend requests, block/accept them
- Chat with friends in real-time (use server state and corn job for quick response)
- Real-time notification system
- OAuth w/ Google, magic email login, access/refresh token system
- Search for players (pagination)
- Fully responsive
- Design system (Figma)
Environment variables:
Create backend/.env
file and then add content of backend/.env.example
in it along with missing env variables. Do the same with frontend/.env
and frontend/.env.example
.
cp ./backend/.env.example ./backend/.env
cp ./frontend/.env.example ./frontend/.env
Starting backend:
cd backend/
pnpm install
pnpm run dev
Starting frontend:
cd frontend/
pnpm install
pnpm run dev
Frontend:
- TypeScript, React, React Router
- React Query, React Hook Form, Redux Toolkit, Zod
- ChakraUI, Framer Motions
- SocketIO
- Storybook, Jest, React Testing Lib
Backend:
- Express, SocketIO, Zod
- PassportJS, JWT
- MongoDB, Mongoose, Typegoose
- Swagger, Cloudinary
- Jest
- Since each move played board state is saved, game play can be added along with player's past games
- Just like chat between friends, global chat could be a place where any user can come in and chat
- Invite friend for a game
- Add test cases and storybook
- Play with "computer"