AssetFlow

Office Asset Management System

Role

Full-stack Developer

Project Type

Personal Project

Stack

Laravel · Livewire · Tailwind CSS

Status

Completed

AssetFlow Landing Page

Overview

AssetFlow is a web-based office asset management system designed to organize asset inventory, borrowing workflows, maintenance, damage reporting, and administrative reporting.

Asset management involves multiple interconnected workflows: identifying available assets, organizing them by category and location, controlling access, requesting assets, approving borrowing requests, tracking active usage, processing returns, reporting damage, managing maintenance, and generating administrative reports.

AssetFlow centralizes these workflows into a single web application, focusing on workflow coordination and business rules.

Goals

  • Centralize asset records.
  • Organize assets using categories and locations.
  • Support controlled asset borrowing.
  • Separate administrator and staff capabilities.
  • Track asset lifecycle states.
  • Support return verification.
  • Track damage and maintenance.
  • Provide administrative visibility through dashboards and reports.
  • Export borrowing reports as PDF documents.

Key Features

User & Asset Management

  • Role-based access control (Admin & Staff)
  • CRUD for users, categories, locations
  • Asset tracking with status and usage types (individu/bersama)
  • Asset photo uploads with validation

Borrowing & Lifecycle

  • Staff asset catalog and borrowing requests
  • Administrative review (Approve/Reject)
  • Return initiation and verification
  • Damage reporting and maintenance workflow

Reporting & Analytics

  • Operational dashboard insights
  • Asset status and category visualization
  • Filtered borrowing reports
  • PDF report export via DomPDF

Users & Roles

Administrator

Administrative routes are protected using custom route middleware. Administrators can:

  • Manage users, categories, locations, and assets
  • Review borrowing requests
  • Verify returns
  • Manage maintenance
  • View dashboard analytics and generate reports

Staff

Staff members interact with the asset catalog and manage their own requests. Staff can:

  • Browse, search, and filter available assets
  • Submit and cancel borrowing requests
  • View personal borrowing history
  • Initiate asset returns
  • Report asset damage

Core Workflows

Borrowing

Available Request Pending Approved/Rejected In Use

Return

In Use Return Initiated Admin Verification Completed Available

Maintenance

Damaged Maintenance Under Maintenance Available

Asset Lifecycle

Explicit asset states and transitions coordinate borrowing, return, damage, and maintenance workflows.

Borrowing Lifecycle

Tersedia Dipakai Tersedia

Maintenance Lifecycle

Tersedia / Dipakai Rusak Dalam Perbaikan Tersedia

Technical Architecture

  • Browser
  • Laravel Application
  • Eloquent ORM
  • Relational Database

Supporting Systems

  • Laravel Storage Asset Photos
  • DomPDF Borrowing Reports
  • Chart.js Dashboard Visualization
  • Vite Asset Compilation

Domain Model

User
├── BorrowingRequest
└── current asset assignment

Asset
├── Category
├── Location
├── current User
├── BorrowingRequest
└── MaintenanceLog

MaintenanceLog
├── Asset
└── User

Technical Decisions

Laravel Framework
Used as the primary application framework for routing, authentication integration, server-side application logic, and database interaction. Integrated Laravel authentication scaffolding for registration, login, password management, and email verification.
Livewire
Used to build reactive server-driven interfaces while keeping application workflows closely integrated with Laravel. Powers interactive workflows like searching, filtering, modal-based interaction, administrative CRUD, and borrowing workflows.
Eloquent ORM
Handles data modeling and relationships, translating the domain model (User, Asset, BorrowingRequest, MaintenanceLog) into relational persistence.
Tailwind CSS
Provides interface styling strictly adhering to the design constraints (light theme, sharp geometry, specific typography tokens) without creating large custom CSS payloads.

Engineering Challenges

1. Asset State Coordination

Challenge:

Managing the state transitions across borrowing, returning, and maintenance to prevent inconsistent states.

Approach:

Implemented explicit asset statuses (`Tersedia`, `Dipakai`, `Rusak`, `Dalam Perbaikan`) and strictly coupled transitions to specific user-initiated or admin-initiated actions.

2. Role Separation

Challenge:

Ensuring administrative functions are securely isolated from staff borrowing interactions.

Approach:

Used custom route middleware to explicitly verify roles before granting access to administrative routes, and prevented self-deletion by administrators as a concrete business rule.

3. Conditional Business Rules

Challenge:

Assets have different behaviors; shared assets have locations while individual assets have user assignments, and only certain assets can be borrowed.

Approach:

Implemented application-level business rules restricting the staff catalog to assets with status `Tersedia` and usage type `individu`.

Technical Limitation

The current borrowing approval flow validates asset availability at the application level but does not yet use database transactions or row-level locking for concurrent approval scenarios.

Future direction:

Introduce transactional approval with appropriate row-level locking to make asset state transitions atomic.

Testing

Authentication workflows are covered by existing automated tests, while core domain workflows currently have limited automated test coverage.

Lessons Learned

  • Business rules extend beyond CRUD.
  • Domain relationships strongly affect workflow design.
  • Shared-state workflows require attention to data integrity.
  • Framework infrastructure can be reused to focus effort on domain-specific functionality.
  • Workflow-heavy interfaces benefit from reactive UI patterns.

Future Improvements

  • Transactional borrowing approval
  • Row-level locking where appropriate
  • Automated tests for core domain workflows
  • Broader authorization tests
  • Asset history/audit trail
  • Expanded reporting
  • Operational observability

Interested in the code?