Introduction to the Job-Dev-Backend Interview Project
The "Goomer Lista Rango" project is a backend development challenge designed for developers of all skill levels. This challenge is part of a recruitment process and focuses on creating a RESTful API using Node.js and a relational database, either MySQL or PostgreSQL.
Project Objective
The main goal of the project is to develop an API that can efficiently manage restaurants and their menu items. The API should handle various operations such as listing, adding, modifying, and deleting both restaurant and product details.
Key Requirements
-
Restaurant Management:
- The API should list all available restaurants.
- It should allow the addition of new restaurants.
- Users should be able to retrieve, update, or delete specific restaurant details.
- Essential data fields for restaurants include:
- Restaurant’s image
- Name
- Address
- Operating hours which should specify opening and closing times for each day.
-
Product Management:
- The API should list all products available at a restaurant.
- It should allow the addition of new products.
- Users should be able to update or delete product information.
- Essential data fields for products include:
- Product’s image
- Name
- Price
- Category (for example: Sweets, Salty, Beverages)
- If a product is on promotion, additional information required includes:
- A description of the promotion
- The promotional price
- The days and times the promotion is available
Time and Date Formatting
- Time fields should follow the
HH:mm
format ensuring a minimum interval of 15 minutes. - Proper handling of restaurant operating hours and product promotion times is crucial.
Evaluation Criteria
Participants will be assessed on the simplicity, readability, and implementation of the functionalities of their code. They are encouraged to carefully consider:
- Code quality and structure
- The inclusion of a comprehensive README file detailing challenges faced, potential improvements in terms of performance or design, and clear setup instructions for the project
Technical Considerations
- Developers have the freedom to make technical choices but should be prepared to justify them.
- Using libraries like Express is permissible, but imposing frameworks should not dictate the project architecture.
- While ORM usage for database connections is allowed, SQL knowledge is essential; raw SQL queries are preferred for data operations.
Best Practices
Developers are encouraged to:
- Document project structure and set-up processes clearly.
- Maintain a mindset oriented towards usability, scalability, and collaboration.
- Implement unit tests and aim for a design that is ready for production.
- Follow coding principles like SOLID, KISS, YAGNI, and DRY.
Frequently Asked Questions (FAQs)
- Framework/Bibliary Use: Libraries such as Express can be used, but frameworks dictating architecture should be avoided.
- Time Allocation: The duration taken for the project will impact the level of scrutiny during evaluation.
- Database Choice: Developers can choose between MySQL and PostgreSQL.
- ORM Usage: Allowed only for connections; raw SQL queries should be used for operations.
This project is an excellent opportunity for developers to showcase their backend development skills, emphasizing modularity, maintainability, and clarity in code. It also serves as a practical exercise in managing restaurant data efficiently through a well-structured API.