Skip to content

Responsive web app to play chess with other players matched based on rankings, real-time notifications, and chat with friends.

License

Notifications You must be signed in to change notification settings

AkashSDas/knightfall

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Knightfall

Play online chess with other players and make friends.

Cover image

Demo

Features

  • 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)

Getting Started

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

Technologies

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

Next Steps

  • 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"

License

MIT License

Releases

No releases published

Packages

No packages published

Languages