Your task is to build a Laravel-powered “Timber Structural Project Manager” that allows authenticated users to manage Projects and their associated Building Part. A “Project” represents a physical timber structure (e.g., “House”, “Google Office”), and each Project can contain multiple Building Part(constraint: floors, walls, beams, columns).
/api/suppliers
) to populate its options, emulating real-world HTTP integration.2.1 Project Management (CRUD)
name
(string, required), description
(text, optional).projects
table, redirect to Project detail.name
and description
.2.2 Building Part (Floor, Wall, Beam, Column) Management (Nested CRUD)
project_id
foreign key).name
(string, required)building_part_type
(enum: “floor,” “wall,” “beam,” “column”; required)material_type
(enum, validated according to rules below; required)supplier
(string, selected from a dropdown loaded via API or dummy JSON; required)building_parttype
is “floor” or “wall,” only material_type
= “CLT” is valid.building_part_type
is “beam,” material_type
may be “CLT” or “GLT.”building_part_type
is “column,” only material_type
= “GLT.”name
, building_part_type
, material_type
, supplier
, and action buttons.2.3 Supplier Data (fetch from API)
GET /api/suppliers
, which returns a static JSON array of supplier objects:[
{ "id": 1, "name": "Xlam", "material-type": "CLT" },
{ "id": 2, "name": "CUSP", "material-type": "CLT" },
{ "id": 3, "name": "Kalvasta Timber", "material-type": "GLT" },
{ "id": 4, "name": "Timberlink", "material-type": "GLT" }
]
supplier.name
as options.This is a visual representation of the task. Please note that it is for reference only — there's no need to match the exact style. https://www.figma.com/design/IjHne28E5eQNEA20FJK6bR/Skill-test--Timber-Sturctural-Project-Management-?node-id=0-1&p=f&t=enCpQX3APOHBiyrO-0