JS Developer Evaluation Assignment
Task: Building a Real-time Task Management Application
Requirements:
1. User Registration and Authentication:
- Implement user registration and login functionality using Firebase Authentication.
- Users should be able to register with their email and password or sign in with their existing credentials.
- Implement password reset functionality for users who forget their passwords.
2. Task Creation and Management:
- Users should be able to create new tasks with a title, description, and due date.
- Implement real-time task updates using Firebase Realtime Database or Firestore.
- Users should be able to update and delete tasks.
- Provide a list view of all tasks with the ability to filter tasks based on their completion status or due date.
3. User Collaboration:
- Allow users to collaborate on tasks by assigning tasks to other registered users.
- Implement real-time notifications for task assignments and updates.
- Users should be able to comment on tasks and have real-time updates on the comments section.
4. User Interface:
- Design and implement a responsive and intuitive user interface using ReactJS.
- Use React Router for handling different application routes.
- Implement proper form validation for user inputs.
- Utilize reusable and modular components to enhance code maintainability.
5. Security and Authorization:
- Implement appropriate security rules and access controls using Firebase Authentication and
Firestore/Firebase Realtime Database.
- Ensure that users can only access and modify their own tasks and data.
- Implement role-based authorization for administrative tasks (e.g., user management).
6. Testing:
- Write comprehensive unit tests for critical application components and functionality using testing frameworks
such as Jest or React Testing Library.
- Ensure proper code coverage and validate that the application behaves as expected in different scenarios.
7. Performance Optimization:
- Optimize the application's performance by implementing efficient data fetching and rendering techniques.
- Utilize Firebase features like Firestore indexing and caching to improve the application's response time.
- Implement lazy loading or code splitting techniques to optimize the initial page load time.
Evaluation Metrics:
1. Functionality (40%):
- Verify if all the required features have been implemented according to the specifications.
- Test the registration, login, task creation, task management, collaboration, and notification functionalities.
2. Code Quality (20%):
- Evaluate the overall code structure, organization, and adherence to best practices.
- Check if the code is modular, reusable, and follows proper naming conventions.
- Assess the quality of error handling and logging.
3. User Interface (15%):
- Assess the design, layout, and responsiveness of the user interface.
- Evaluate the usability and intuitiveness of the application.
- Check if the interface adheres to the best practices of UI/UX design.
4. Security and Authorization (10%):
- Verify the implementation of secure user authentication and authorization mechanisms.
- Evaluate the effectiveness of security rules and access controls for data protection.
5. Testing (10%):
- Evaluate the completeness and accuracy of unit tests.
- Check the code coverage and the ability of tests to catch potential bugs and issues.
6. Performance (5%):
- Assess the application's responsiveness and speed.
- Verify the implementation of performance optimization techniques.
Deliverables:
1. Source Code:
a. Provide the complete source code of the application, including the ReactJS components, Firebase
configuration, and any other required files.
2. Demonstration:
a. Present a live demonstration of the application showcasing its functionality and user interface. This
can be a recorded video uploaded to google drive, and you can share the link of the same.
b. Keep a ready deployed version to showcase in the next round.
3. Deployment:
a. Deploy the application to a hosting platform such as Firebase Hosting or any other preferred
platform.
b. Provide the deployed URL and/ or any instructions on how to access the deployed application.
4. User Documentation:
a. Create user documentation that explains how to use the application.
b. Include step-by-step instructions for common tasks such as registration, task creation,
collaboration, and task management.
c. Add screenshots in the document or illustrations to enhance understanding.
Submission:
1. URL of the working app to be submitted on the following link :
Submission Link