FOS Motor
FOS Motor is a web-based Content Management System (CMS) built to help a motorcycle dealership manage their day-to-day business operations — from tracking inventory to recording sales and generating reports.
Overview
| |
|
| Type |
Web Application (CMS) |
| Stack |
PHP, Laravel, MySQL |
| Deployment |
Shared Hosting |
| Status |
Completed — January 2021 |
Features
- Stock Management — Add, update, and monitor motorcycle inventory in real time, including unit details and availability status.
- Sales Transactions — Record and manage sales transactions, track buyer information, and maintain a complete transaction history.
- Reports — Generate sales and stock reports to help the business owner monitor performance and make informed decisions.
- User Authentication — Secure login system to ensure only authorized users can access and manage the system.
Tech Stack
| Technology |
Purpose |
| PHP & Laravel |
Backend framework, routing, business logic |
| MySQL |
Relational database for storing all business data |
| Blade Templating |
Server-side rendered frontend views |
| Shared Hosting |
Deployment environment |
Highlights
This project was built as a full-stack solution from scratch — covering database design, backend logic, and frontend UI. It was deployed on a live hosting environment and used by the dealership to replace their manual record-keeping process.
Database Design
Designed with 5 core tables covering users, inventory, transactions, and reporting. All relationships are defined with foreign keys to maintain data integrity.

View full ERD on dbdiagram.io — paste the DBML below to render it.
Show DBML schema
```bash
Table users {
id bigint [pk, increment]
name varchar(100) [not null]
email varchar(100) [unique, not null]
password varchar(255) [not null]
role enum('admin', 'kasir') [not null, default: 'kasir']
created_at timestamp
updated_at timestamp
}
Table motor_stocks {
id bigint [pk, increment]
brand varchar(100) [not null, note: 'e.g. Honda, Yamaha']
model varchar(100) [not null, note: 'e.g. Beat, NMAX']
year int [not null]
color varchar(50)
price decimal(15,2) [not null]
stock int [not null, default: 0]
status enum('available', 'sold', 'reserved') [default: 'available']
created_by bigint [ref: > users.id]
created_at timestamp
updated_at timestamp
}
Table transactions {
id bigint [pk, increment]
invoice_number varchar(50) [unique, not null, note: 'e.g. INV-20210101-001']
customer_name varchar(100) [not null]
customer_phone varchar(20)
customer_address text
total_amount decimal(15,2) [not null]
payment_method enum('cash', 'transfer', 'credit') [not null]
payment_status enum('paid', 'pending', 'cancelled') [default: 'pending']
notes text
created_by bigint [ref: > users.id]
created_at timestamp
updated_at timestamp
}
Table transaction_items {
id bigint [pk, increment]
transaction_id bigint [ref: > transactions.id]
motor_stock_id bigint [ref: > motor_stocks.id]
quantity int [not null, default: 1]
unit_price decimal(15,2) [not null]
subtotal decimal(15,2) [not null]
created_at timestamp
}
Table reports {
id bigint [pk, increment]
title varchar(150) [not null]
type enum('daily', 'monthly', 'yearly', 'custom') [not null]
start_date date [not null]
end_date date [not null]
total_transactions int
total_revenue decimal(15,2)
generated_by bigint [ref: > users.id]
created_at timestamp
}
```