Skip to content

Maintainers

  • Anthuan Vasquez
  • Isaac Martinez
  • Jose Genao

Recruitment Test for Full-Stack (Node JS) Position ​

Welcome to the recruitment test for the Full Stack position at our company! The test aims to assess your programming skills, problem-solving abilities, and understanding of web development concepts. Please read the instructions for each task carefully before starting.

Keep in mind ​

  • Please use real Github accounts, we want to check your contributions history. Since we use, create, and contribute to open source.
  • Everyone work with the same set of information, to let us fairly judge your work.
  • We are answering questions only when it's strictly necessary.
  • The test is designed in a way, that can confuse you or seems weird because we want to test you in a way worse environment than you will work on a daily basis. It's also not a representation of the tech stack we are using in real projects.
  • You can use any programming language you want, but we prefer web technologies (JavaScript, TypeScript, Node.js, React, Vue, etc.).

Before you start ​

  • Create a repository on GitHub. Keep it publicly available.
  • Complete each task in its designated folder and provide clear instructions on how to run your code.
  • Take into account User Experience (UX) and ensure the user interface is usable and responsive.
  • Include all assets and resources necessary to run your project.

Evaluation ​

We will evaluate your solutions based on the following criteria:

  • Code quality and readability.
  • Functionality and correctness of the implemented tasks.
  • User Experience (UX) design in Task 2 and Task 3.
  • Proper validation and error handling.

Let's get started! πŸš€

πŸ“š Task 1 - Fundamental Programming ​

Write a function to reverse the elements of a given array while keeping special characters in their original positions. The function should handle dynamic changes in the array and special character positions. For example:

Input:

js
['n', 2, '&', 'a', 'l', 9, '$', 'q', 47, 'i', 'a', 'j', 'b', 'z', '%', 8]

Expected Output:

js
[8, 'z', '&', 'b', 'j', 'a', '$', 'i', 47, 'q', 9, 'l', 'a', 2, '%', 'n']

Note:

Your solution must possess the arcane art of dynamic adaptability. Even as the positions of special characters shift, their places must remain unchanged in your solution's wake.

🐾 Task 2 - Fetching Canine Insights 🐢 ​

Meet Kennim, our customer. He's a wizard who's passionate about dogs and their sub-breeds. He's have a new project in mind, and he's seeking your assistance to bring it to fruition. πŸ§™β€β™‚οΈ

I, Kennim, seek to weave a web tapestry showcasing the grandeur of dog breeds and their intricate sub-categories. Picture this: a realm where dog images and names grace the canvas, and the magic of hovering reveals all the sub-breeds.

But wait, there's more enchantment to be had! Behold, a table unveiling all dog breeds and their sub-categories, complete with the power to summon search and filter spells, custom-tailored for dog names and sub-breeds. πŸ•βœ¨


Create a web page that fetches data from the Dog API, display the following information:

πŸ“œ Page 1 - Glimpse of Wonders ​

Task 2This image is just a mockup, you should use your creativity to make it look better.

  • List all the dog breeds
  • Show the dog image and name
  • Add hover state to dog image to show dog sub-breeds
  • Don’t use any CSS library or framework
  • Follow the UI Mockup to complete this task.

| The grid needs to be responsive.

πŸ“œ Page 2 - Command and Conquer: Manage, Search, and Filter ​

  • Create a table with all dogs and sub-breeds (no image needed)
  • Create a search input to filter the data by dog's name or sub-breeds
  • Add a way to sort the data by dog's name or sub-breeds
  • Create a simple CRUD based on API (save data locally, you can use a variable, local storage, session or cookie, whatever you think is the better option)

May your journey be filled with bountiful discoveries, and your creation kindle the brilliance of canine revelation! 🌟

πŸš€ Task 3 - Elevate Your Craft: User Authentication, Data Display, and Deployment ​

Greetings once again, it's Kennim with a fresh chapter! 🐢 I'm thrilled to enhance the dog application you crafted in Task 2. Our next feat is to usher in a new feature – the ability to manage dogs and sub-breeds right within our realm. Imagine, no longer reliant on the Dog API! Your task is to manifest this new application that empowers me to command the canine kingdom, handling dogs and sub-breeds. (No need to move data from the Dog API; let's birth a separate application for our task.) Much gratitude in advance!

πŸ“œ Requirements ​

  1. Use a database or service of your choice to store the data. (e.g., MongoDB, Firebase, MySQL, etc.)
  2. Create a login and registration system for the application: Users should be able to register and log in to the application. (Keep in mind the good practices and security measures).
  3. Create a dog management system: Only Authenticated users can add new dogs with the following details: Dog Name, Breed, Sub-Breed, and Dog Image (do not store the URL, store the image itself).
  4. Create a carousel of the last 10 dogs added to the system. Display the dog image and name based on the provided design mockup.
  5. Testing:
    • Add at least 1 (one) unit test for the backend.
    • Add at least 3 (three) unit tests for different components of the frontend.
    • Extra Point: add an E2E test for the frontend. (e.g., Cypress, Selenium, etc.)
  6. Deploy the application to a cloud platform (e.g., Vercel, AWS, etc.).

Important: All page routes with the exception of the login and registration pages should be protected. Users should not be able to access the application without logging in.

Task 3

🌟 Engage in the Bonus Challenge - The Spotlight is on You (Optional) ✨ ​

Here's your chance to illuminate your thought processes and problem-solving finesse. We invite you to craft a novel task, allowing us to witness firsthand your exceptional skill set. πŸš€ While conceiving this task, align it with the position you're aspiring for to ensure its relevance.

Feel free to provide your response within a dedicated readme file or establish a fresh folder to encapsulate the task. πŸ“ This endeavor offers you a platform to radiate your creativity and capabilities. 🌈

🌟 Showcase Your Projects or Contributions (Optional) ✨ ​

We are enthusiastic about getting a glimpse into a project that fills you with pride or one you consider truly remarkable. Whether it's a personal endeavor, a contribution to an open-source initiative, or a past project you've been a part of, we're eager to witness your coding prowess in action. This is an opportunity to reveal your approach to organizing code, your adeptness at problem-solving, and your collaborative skills when working within a team. 🀝

| Don't be concerned if you currently lack publicly accessible projects or contributions. You can freely bypass this step without any worries. 😊

πŸ“¨ Submit Your Brilliance! ​

Once you've conquered the tasks, spread the magic by sharing the repository URL with us via email. πŸ’Œ Kindly ensure that the repository remains open for all to access.

Best of luck! We're eagerly anticipating the privilege of delving into your work. 🌟

- Created with heartfelt affection ❀️ from the Minnek's Team

Interested to join the team?

Learn more about our recruitment process and open positions.

Join

Join in and collaborate to make our Handbook an even better tool!