This project is a technical test implementation for a job offer. It's a CRUD (Create, Read, Update, Delete) system for managing products, built with Laravel, Inertia, and Vue.js. The system includes a bulk update feature and implements proper validations.
- Full CRUD operations for products
- Bulk update functionality
- Form validations
- Responsive design
- Backend: Laravel
- Frontend: Vue.js
- Routing: Inertia.js
- Styling: Tailwind CSS (optional, adjust if you're using a different CSS framework)
- PHP >= 7.4
- Composer
- Node.js >= 14.x
- NPM or Yarn
-
Clone the repository: git clone https://github.com/your-username/product-management-system.git
-
Navigate to the project directory: cd product-management-system
-
Install JavaScript dependencies: npm install
-
Copy the .env.example file to .env and configure your environment variables: cp .env.example .env
-
Generate an application key: php artisan key:generate
-
Run database migrations: php artisan migrate
-
(Optional) Seed the database with sample data: php artisan db:seed
-
Start the Laravel development server: php artisan serve
-
In a separate terminal, compile and hot-reload frontend assets: npm run dev
-
Visit
http://localhost:8000
in your browser to access the application.
- Navigate to the Products page to view all products
- Use the "Add Product" button to create a new product
- Click on a product to view its details
- Use the "Edit" button to modify a product
- Use the "Delete" button to remove a product
- On the Products page, select multiple products using the checkboxes
- Click the "Bulk Update" button
- Modify the desired fields in the bulk update form
- Submit the form to update all selected products simultaneously
The application implements the following validations:
- Product name: Required, maximum 255 characters
- Description: Optional, maximum 1000 characters
- Price: Required, numeric, minimum value 0
- Stock: Required, integer, minimum value 0
Run the test suite with: php artisan test
This project is a technical test and is not open for contributions. However, feedback and suggestions are welcome.
This project is open-sourced software licensed under the MIT license.