This project involves building a real-time chat application using Node.js. The backend will utilize either PostgreSQL or MongoDB as the database. The goal is to create a fully functional chat application that allows multiple users to join chat rooms, exchange messages, and view chat history.
- Team Size: <= 4 members per group.
- Collaboration: Use version control (e.g., GitHub) to manage the codebase collaboratively.
-
TypeScript -
Express -
Web Sockets(Socket.io) -
MVC(where applicable) -
Database-Postgres/MongoDB -
ORM / ODM-Prisma/Mongoose -
EJS/HTML(Other tools must be discussed in advance) -
CSS/SASS/Others(Anything) -
Bcrypt+Cookie-Session.
-
User Authentication with session management. (Protected Routes)
-
Real-Time messaging between users.
-
Persistence of chat history in the database.
-
Ability to join and leave groups for chats.
-
Work with additional data per user and per group (Display Picture, Description, etc).
-
Categorize users as either group members or group admins.
-
Add ability to send images or other type of media in chats.
-
Plan and Draw an efficient
ERD(Entity Relationship Diagram)-
Mention the following:
-
Entities
-
Attribute Names
-
Attribute Types
-
Attribute Constraints
-
Relationships
-
-
-
Have at least
4 Entities(Tables/Documents) -
Setup appropriate
MigrationsandSeeds
├── src
│ ├── controllers
│ ├── models
│ ├── routes
│ ├── views
│ ├── app.ts
│ ├── index.ts
│ └── ...
├── public
│ ├── css
│ ├── js
│ └── ...
├── .env
├── package.json
├── tsconfig.json
├── README.md
└── ...- Functionality: How well the features are implemented and work together.
- Code Quality: Adherence to best practices and code organization.
- Design: User interface and user experience.
- Documentation: Clarity and completeness of the README and comments in the code.
- Presentation: Effectiveness and clarity of the presentation.
- and more...
-
Presentation Format:
- Each group will present their project in a 15-minute presentation.
- Use slides to support your presentation (e.g., Google Slides, PowerPoint).
-
Content:
- Introduction: Introduce your team and provide an overview of the project.
- Features: Demonstrate the key features of your e-commerce website.
- Technical Details: Explain the architecture, key technologies used, and any challenges faced.
- Live Demo: Show a live demo of your application, highlighting the main functionalities.
- Conclusion: Summarize the project and discuss any future improvements or additional features.
-
Q&A:
- Be prepared to answer questions from the audience and the instructor.
- To be posted by Instructor.
- Grayce, Career Development Specialist may be with us while you are presenting this project.
- This opportunity may help her to understand better about you for your future job hunting.
- Product with just enough features to satisfy early customers
- Decide which features will be part of the MVP.
- Keep as simple as possible
- Get feedback and continue development
- Low-fidelity,
- Simple sketches of the user interface without graphics or colours.
- Plan the layout and prioritize content and functionalities.
You came to this program to learn how to be a developer, not a designer. However, it is important to have a good design. You can use a tool like Figma to create your design.
- Hi-fidelity
- Websites for inspiration:
Cool idea: Try to talk to UI/UX students and ask some advices for your product design.
- Use a project management tool like GitHub Projects.
- Create a board for your project
- Add tasks/issues based on your user stories
- Allocate tasks to team members
- Estimate tasks and set due dates (it is ok to change them later)
- Use a communication tool like Slack.
- Create a chatroom for your project
- Add team members
- Invite your instructor to the chatroom
- Use the channel to communicate
- Daily standup
- What did you do yesterday?
- What are you going to do today?
- Do you have any blockers?
- if something fails in your team, it is not one of your team members' failures but a WHOLE TEAM.
- if you do not want to lead, follow the lead
- Decide as a team
- Be responsive - no longer than half a day
- Please flag if you think you are behind
- If you are stuck on a problem for more than 1 hour, It is time to ask for help
- Take action instead of thinking too long
Good luck! If you have any questions, feel free to reach out to your instructor.