Skip to content

Day 11 — Setup Project & Perancangan ERD

Fase: 2 — Mini Project Asset Management | Minggu: 3 | Hari: Senin


🎯 Tujuan Hari Ini

Tim memulai Mini Project Asset Management System dengan merancang ERD (Entity Relationship Diagram), setup repository baru, dan membuat migrasi tabel categories dan assets.


📋 Task Wajib

1. Kickoff Meeting Tim (09:00 – 09:45)

Seluruh tim berkumpul untuk kickoff project. Bahas:

  • Nama aplikasi: "SIMAS" (Sistem Manajemen Aset Sederhana)
  • Siapa mengerjakan apa (sesuai role masing-masing)
  • Target fitur per hari

Timeline Mini Project:

DayTarget
11ERD + Setup + Migration
12CRUD Category
13CRUD Asset
14Relasi Category ↔ Asset
15Styling & Code Review
16Modul Peminjaman
17Pengembalian & Stock Update
18Dashboard Analytics
19Bug Fixing & QA
20Final Demo

2. Rancang ERD

Gambar diagram Entity Relationship berikut di kertas terlebih dahulu, baru presentasikan ke mentor:

┌─────────────────────┐         ┌──────────────────────────────┐
│      categories     │         │           assets             │
├─────────────────────┤         ├──────────────────────────────┤
│ id (PK)             │◄──────┐ │ id (PK)                      │
│ name                │       └─┤ category_id (FK)             │
│ description         │         │ name                         │
│ created_at          │         │ code (kode unik aset)        │
│ updated_at          │         │ description                  │
└─────────────────────┘         │ stock (jumlah tersedia)      │
                                │ condition (baik/rusak)       │
                                │ created_at                   │
                                │ updated_at                   │
                                └──────────────────────────────┘

                                           │ 1 asset bisa dipinjam banyak

                                ┌──────────────────────────────┐
                                │           loans              │
                                ├──────────────────────────────┤
                                │ id (PK)                      │
                                │ asset_id (FK)                │
                                │ borrower_name                │
                                │ borrow_date                  │
                                │ return_date                  │
                                │ quantity                     │
                                │ status (pending/returned)    │
                                │ notes                        │
                                │ created_at                   │
                                │ updated_at                   │
                                └──────────────────────────────┘

Relasi:

  • categories hasMany assets (1 kategori punya banyak aset)
  • assets belongsTo categories (1 aset punya 1 kategori)
  • assets hasMany loans (1 aset bisa dipinjam berkali-kali)
  • loans belongsTo assets (1 pinjaman untuk 1 aset)

3. Setup Repository Baru di GitHub

PM/Lead membuat repository baru bernama simas-asset-management di GitHub.

Di laptop masing-masing, buat project Laravel baru:

bash
composer create-project laravel/laravel simas
cd simas
git init
git remote add origin https://github.com/[username]/simas-asset-management.git

Setup .env masing-masing untuk database baru:

ini
DB_DATABASE=simas_db
APP_NAME="SIMAS - Sistem Manajemen Aset"

Buat database simas_db di phpMyAdmin.

4. Buat Migration: Categories

Backend Dev mengerjakan ini:

bash
php artisan make:migration create_categories_table

Isi method up():

php
public function up(): void
{
    Schema::create('categories', function (Blueprint $table) {
        $table->id();
        $table->string('name', 100)->unique();
        $table->text('description')->nullable();
        $table->timestamps();
    });
}

5. Buat Migration: Assets

bash
php artisan make:migration create_assets_table

Isi method up():

php
public function up(): void
{
    Schema::create('assets', function (Blueprint $table) {
        $table->id();
        $table->foreignId('category_id')->constrained('categories')->onDelete('restrict');
        $table->string('name', 150);
        $table->string('code', 50)->unique()->comment('Kode unik aset, contoh: LAP-001');
        $table->text('description')->nullable();
        $table->unsignedInteger('stock')->default(0);
        $table->enum('condition', ['baik', 'rusak', 'perbaikan'])->default('baik');
        $table->timestamps();
    });
}

6. Jalankan Migration

bash
php artisan migrate

Cek phpMyAdmin: kedua tabel harus muncul dengan relasi yang benar.

7. Buat Seeder untuk Data Dummy

bash
php artisan make:seeder CategorySeeder

Isi database/seeders/CategorySeeder.php:

php
use App\Models\Category;

public function run(): void
{
    $categories = [
        ['name' => 'Elektronik', 'description' => 'Perangkat elektronik seperti laptop, proyektor, dll'],
        ['name' => 'Furniture', 'description' => 'Meja, kursi, lemari, dan furniture kantor lainnya'],
        ['name' => 'Alat Tulis', 'description' => 'Pena, kertas, spidol, dan perlengkapan kantor'],
        ['name' => 'Kendaraan', 'description' => 'Kendaraan operasional kantor'],
    ];

    foreach ($categories as $cat) {
        Category::create($cat);
    }
}

Jalankan:

bash
php artisan db:seed --class=CategorySeeder

📝 Laporan ke Mentor

📌 LAPORAN HARIAN — Day 11
Nama     : [Nama Lengkap]
Role     : [Role Kamu]

✅ Yang saya kerjakan hari ini:
- [ ] Mengikuti kickoff meeting dan memahami roadmap project
- [ ] Menggambar ERD di kertas dan didiskusikan dengan tim
- [ ] Setup repository GitHub baru (simas-asset-management)
- [ ] Migration tabel categories berhasil
- [ ] Migration tabel assets berhasil
- [ ] Seeder CategorySeeder berhasil mengisi data dummy

📸 Screenshot Wajib:
1. Foto/scan ERD yang dibuat di kertas
2. phpMyAdmin menampilkan tabel categories dan assets dengan relasi FK
3. Isi tabel categories setelah seeder dijalankan

💬 Catatan dari Kickoff Meeting:
[Tulis kesepakatan tim: siapa ngerjain apa hari ini dan besok]

❓ Kendala:
[Tulis jika ada]

Catatan Mentor

Pastikan ERD sudah direview dan disetujui mentor sebelum peserta mulai coding. Salah desain di awal akan berdampak besar di hari-hari selanjutnya.

Perhatikan kolom code di tabel assets: ini adalah kode unik seperti "LAP-001" untuk Laptop pertama. Peserta perlu memahami mengapa unique() penting di sini.

Program Magang SMK RPL — Rekayasa Perangkat Lunak