Hack to Hire: Internship Recruitment - First
Round Task
Company Tech Stack
At aiRender, we utilize the following technologies:
• Frontend: React, HTML, CSS, JavaScript
• Backend: Node.js
• Database & Hosting: Firebase, Render
• State Management: Redux
Task Overview
For the first round of our internship recruitment, we require you to demonstrate your technical
skills through a practical task. This task involves creating a web application and hosting it
online, showcasing your ability to work with our tech stack.
Objective
Develop a Basic Task Manager application that adheres to the technologies in our stack and
demonstrates your proficiency in building and deploying a web application.
Task Description: Basic Task Manager
Application Overview
The Basic Task Manager is a web application that allows users to manage a list of tasks. Users
should be able to create, view, edit, delete, and track tasks. The application should also support
basic user authentication to manage and retrieve user-specific tasks.
Features
1. Task Creation:
o Users can create tasks by entering a title and a due date.
o Optional: Allow users to add a brief description for each task, enhancing the
task details.
2. Task List:
o Display a comprehensive list of all tasks, showing the task title, due date, and
status (e.g., completed, pending).
o Highlight overdue tasks in a distinct color to make them stand out.
3. Task Management:
o Users can mark tasks as completed, changing their status and appearance.
o Provide functionality to edit existing tasks, allowing users to update the title,
due date, and description.
o Allow users to delete tasks from their list when they are no longer needed.
4. Basic User Account Management:
o Implement a user login system using Firebase Authentication to manage user
sessions.
o Users should be able to register, log in, and log out.
o Ensure that users can view and manage their tasks only after logging in.
Technical Requirements
1. Frontend:
o React: Build the user interface with React. Use React components to manage
different parts of the application.
o HTML/CSS: Use HTML for structuring the content and CSS for styling the
application. Ensure the design is clean and professional.
o Responsiveness: The application must be responsive, ensuring usability on
both desktop and mobile devices. Use media queries and responsive design
techniques to achieve this.
2. Backend:
o Node.js: Develop a backend using Node.js. Implement RESTful API endpoints
to handle CRUD operations (Create, Read, Update, Delete) for tasks.
o Express.js (optional): Utilize Express.js to simplify routing and middleware
integration.
3. Database & Authentication:
o Firebase Firestore: Store task data in Firebase Firestore. Ensure that data is
properly structured and optimized for queries.
o Firebase Authentication: Use Firebase Authentication for managing user
accounts. Implement login and registration features, and ensure user-specific
task data is secure and isolated.
4. Redux (Optional):
o Utilize Redux for state management to enhance the application's scalability
and maintainability, especially if you anticipate handling complex state or
global data management.
5. Hosting:
o Firebase Hosting or Render: Host the application online using Firebase
Hosting or Render. Configure deployment settings to ensure the application is
accessible via a public URL.
Constraints
• Originality: The application should be original. While you can use libraries or
frameworks, the implementation and design must be your own.
• Documentation: Include a comprehensive README file in your GitHub repository:
o Setup Instructions: Detailed steps on how to set up and run the project locally,
including dependencies and configuration.
o Features Overview: A description of the application's features and how they
can be used.
o Assumptions & Limitations: Any assumptions made during development and
limitations of the application.
Bonus Features
• Task Sorting: Implement a feature that allows users to sort tasks by due date or title,
enhancing task management.
• Task Filtering: Provide a filter to display tasks based on their completion status (e.g.,
show only completed tasks or pending tasks).
Submission Requirements
1. Project Files: Upload all project files to a GitHub repository. Ensure the repository is
well-organized with clear file structure and meaningful commit messages.
2. Hosting: Deploy the application using Firebase Hosting or Render. Provide a live link
to the hosted application in your README file.
3. Documentation: Include a detailed README file in your GitHub repository that
covers:
o Running the Project: Instructions for running the project locally, including
any necessary setup steps.
o Application Features: An overview of the application's features and how to
use them.
o Assumptions & Limitations: Any assumptions you made and limitations you
encountered during development.
4. Demo Link: Provide a link to the live hosted application for evaluation.
5. Deadline: Complete and submit the task within 6 days from receiving this document.
Evaluation Criteria
Your submission will be evaluated based on:
• Functionality: Does the application meet all outlined requirements and features?
• Code Quality: Is the code well-organized, clean, and properly documented?
• User Interface: Is the UI intuitive, aesthetically pleasing, and responsive?
• Creativity: Have you implemented any innovative features or designs that enhance the
application?
Next Steps
If your submission meets our criteria, you will be contacted for the second round of the hiring
process. We will provide further details about the next steps at that time.