๐ Technical Test: Inventory Management System
Solution provided by : Manuela Cortรฉs Granados
This technical test is designed to evaluate your full-stack development skills, your understanding of software architecture, and your ability to build a robust, production-ready application.
Your task: Develop a comprehensive inventory management system.
๐ The Challenge
- Create a full-stack application that provides users with a secure platform to manage product inventory.
- The system must support user authentication and provide a complete set of features for managing assets in a store or warehouse.
๐๏ธ System Architecture
Your solution should be composed of distinct and well-defined layers to demonstrate a clear separation of concerns.
The system consists of a backend API and a frontend user interface.
1. Backend (API)
- Technology Stack:
- Language: Python
- Framework: FastAPI
- Database: A SQL database (e.g., SQLite, PostgreSQL)
- Key Functionality:
- User Authentication: Implement a user management system with secure authentication. A token-based approach (e.g., JWT) is recommended.
- Product Management (CRUD): Develop RESTful API endpoints for:
- Create: Add a new product to inventory.
- Retrieve: List all products or fetch one by its unique identifier.
- Update: Modify product details.
- Delete: Remove a product from inventory.
- Data Models: User and Product. Each Product must have a unique ID, name, description, price, and quantity.
- Repository Pattern: Abstract the data access layer. Service/business logic must interact with repositories, ensuring separation from the underlying database technology.
2. Frontend (User Interface)
- Technology Stack: Use what best showcases your skills:
- A modern JavaScript framework (e.g., React, Vue, Svelte)
- Or plain HTML, CSS, and JavaScript
- Key Functionality:
- Login/Logout: User-friendly authentication interface.
- Inventory Dashboard: Responsive dashboard displaying all products and details.
- CRUD Interface: Intuitive forms and controls for creating, viewing, updating, and deleting products.
๐ก Optional Enhancements
- Design System: Apply a professional and consistent UI design. (Tailwind CSS or a custom system encouraged)
- Asset Management: Support for including an image URL for each product.
- Advanced Features: Implement search, filtering, or sorting for product lists.
- State Management: If using a frontend framework, show clear and efficient state management.
- Unit & Integration Testing: Automated tests for FastAPI endpoints and data repositories to ensure reliability.
๐
Evaluation Criteria
- Architectural Design (40%): Clarity and effectiveness of repository pattern and separation of concerns.
- Functionality (30%): Completeness and correctness of required features (CRUD, authentication).
- Code Quality (20%): Readability, maintainability, best practices (PEP 8), documentation, and tests.
- User Experience (10%): Creativity, usability, and visual appeal of the frontend.
๐
Deliverables provided by Manuela Cortรฉs Granados