📝 Mini Project: Sistem Manajemen Tugas

Level: Advanced

Pada mini project ini, kita akan membangun sistem manajemen tugas sederhana. Proyek ini menggabungkan konsep database relasional, transaksi, index, dan integrasi aplikasi. Bayangkan seperti aplikasi to-do list namun dengan fitur multi-user dan status tugas.

📖 Desain Database

Kita akan membuat 3 tabel utama:

🛠️ Implementasi

-- Membuat database
CREATE DATABASE manajemen_tugas;
USE manajemen_tugas;

-- Tabel users
CREATE TABLE users (
    id INT PRIMARY KEY AUTO_INCREMENT,
    username VARCHAR(50) UNIQUE NOT NULL,
    email VARCHAR(100) UNIQUE NOT NULL
);

-- Tabel tasks
CREATE TABLE tasks (
    id INT PRIMARY KEY AUTO_INCREMENT,
    user_id INT,
    judul VARCHAR(100) NOT NULL,
    deskripsi TEXT,
    status ENUM('pending','in_progress','done') DEFAULT 'pending',
    deadline DATE,
    FOREIGN KEY (user_id) REFERENCES users(id)
);

-- Tabel activity_log
CREATE TABLE activity_log (
    id INT PRIMARY KEY AUTO_INCREMENT,
    task_id INT,
    aksi VARCHAR(50),
    waktu TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (task_id) REFERENCES tasks(id)
);

-- Tambah user
INSERT INTO users (username, email) VALUES ('doddy', 'doddy@mail.com');

-- Tambah tugas
INSERT INTO tasks (user_id, judul, deskripsi, deadline)
VALUES (1, 'Belajar Database', 'Selesaikan modul Database hingga Advanced', '2025-11-10');

-- Update status tugas + catat log
START TRANSACTION;
UPDATE tasks SET status = 'in_progress' WHERE id = 1;
INSERT INTO activity_log (task_id, aksi) VALUES (1, 'Status diubah ke in_progress');
COMMIT;

-- Lihat daftar tugas dengan user
SELECT t.judul, t.status, u.username
FROM tasks t
JOIN users u ON t.user_id = u.id;

👉 Dengan desain ini, kita bisa mengelola tugas per user, melacak status, dan mencatat riwayat aktivitas.

🎮 Mini Challenge

Kembangkan sistem manajemen tugas dengan fitur tambahan:

Tugas tambahan: Integrasikan dengan aplikasi sederhana (misalnya Python/Node.js) untuk menampilkan daftar tugas dan memperbarui status melalui antarmuka.