This assignment focuses on building a real-time chat application using Socket.io, implementing bidirectional communication between clients and server.
You will build a chat application with the following features:
- Real-time messaging using Socket.io
- User authentication and presence
- Multiple chat rooms or private messaging
- Real-time notifications
- Advanced features like typing indicators and read receipts
socketio-chat/
├── client/ # React front-end
│ ├── public/ # Static files
│ ├── src/ # React source code
│ │ ├── components/ # UI components
│ │ ├── context/ # React context providers
│ │ ├── hooks/ # Custom React hooks
│ │ ├── pages/ # Page components
│ │ ├── socket/ # Socket.io client setup
│ │ └── App.jsx # Main application component
│ └── package.json # Client dependencies
├── server/ # Node.js back-end
│ ├── config/ # Configuration files
│ ├── controllers/ # Socket event handlers
│ ├── models/ # Data models
│ ├── socket/ # Socket.io server setup
│ ├── utils/ # Utility functions
│ ├── server.js # Main server file
│ └── package.json # Server dependencies
└── README.md # Project documentation
- Accept the GitHub Classroom assignment invitation
- Clone your personal repository that was created by GitHub Classroom
- Follow the setup instructions in the
Week5-Assignment.md
file - Complete the tasks outlined in the assignment
Week5-Assignment.md
: Detailed assignment instructions- Starter code for both client and server:
- Basic project structure
- Socket.io configuration templates
- Sample components for the chat interface
- Node.js (v18 or higher)
- npm or yarn
- Modern web browser
- Basic understanding of React and Express
Your work will be automatically submitted when you push to your GitHub Classroom repository. Make sure to:
- Complete both the client and server portions of the application
- Implement the core chat functionality
- Add at least 3 advanced features
- Document your setup process and features in the README.md
- Include screenshots or GIFs of your working application
- Optional: Deploy your application and add the URLs to your README.md