Aplikasi Web Pengingat Tugas Ringan, Responsif, dan Cerdas untuk Siswa.
Dikembangkan oleh Siswa RPL SMKN 40 sebagai bagian dari Proyek Pembelajaran End-to-End SDLC (Software Development Life Cycle).
- 1. Ringkasan Proyek (Executive Summary)
- 2. Fitur Utama & User Stories
- 3. Arsitektur & Desain Sistem (SDD)
- 4. Spesifikasi Kebutuhan (SRS)
- 5. Rencana Pengembangans & Sprint Backlog
- 6. Panduan Instalasi & Penggunaan
- 7. Batasan Sistem (Out of Scope MVP)
- 8. Kontributor & Tim Penyusun
Selama ini, mayoritas siswa mengandalkan metode manual untuk mengingat tugas sekolah, seperti sekadar mengandalkan ingatan atau catatan acak di kertas. Metode ini terbukti tidak reliabel, terutama ketika siswa dihadapkan pada banyak mata pelajaran produktif maupun normatif dengan jadwal deadline yang berdekatan.
Dampak buruk dari keterlambatan pengumpulan tugas antara lain:
- Penurunan nilai akademik dan kredibilitas di mata guru.
- Menumpuknya beban pengerjaan tugas (snowball effect).
- Meningkatnya tingkat stres dan berkurangnya motivasi belajar.
TugasIn hadir sebagai solusi berbasis web client-side yang memungkinkan siswa mencatat, mengorganisasi, memantau hitung mundur (countdown), dan menerima notifikasi pengingat otomatis secara real-time.
Keunggulan Utama TugasIn:
- β‘ Tanpa Instalasi & Ringan: Cukup buka di browser (Chrome, Firefox, Edge).
- π Privasi Terjamin: Seluruh data tersimpan secara lokal di browser (
localStorage/IndexedDB). - π Pengingat Cerdas: Memanfaatkan Web Notification API untuk memberi peringatan sebelum waktu habis.
- π― Visualisasi Progres: Fitur progress tracker dan dashboard ringkasan untuk meningkatkan motivasi.
- Utama: Siswa SMK Jurusan Rekayasa Perangkat Lunak (RPL) SMKN 40 Jakarta.
- Sekunder: Seluruh siswa SMA/SMK dan mahasiswa yang membutuhkan sistem manajemen tugas personal yang simpel tanpa perlu login atau server backend.
| Fitur | Ikon | Deskripsi | Manfaat Utama |
|---|---|---|---|
| Reminder System | π | Notifikasi browser otomatis menjelang deadline | Mencegah lupa pengerjaan tugas |
| Countdown Real-time | β³ | Hitung mundur sisa waktu secara presisi (jam & menit) | Menciptakan rasa urgensi pengerjaan |
| Warning System | Perubahan visual (kuning/merah) saat tugas mendekati deadline | Menyoroti tugas kritis secara instant | |
| Progress Tracker | π | Visualisasi % pengerjaan dan status (Belum/Proses/Selesai) | Menjaga motivasi dan kepuasan belajar |
| Dashboard Ringkasan | π | Widget statistik jumlah tugas aktif, telat, dan selesai | Memberikan gambaran umum kondisi tugas |
| Penyimpanan Lokal | πΎ | Integrasi localStorage / IndexedDB |
Data tetap aman meskipun browser ditutup |
| ID | Peran | Keinginan | Tujuan / Alasan |
|---|---|---|---|
| F-01 | Siswa | Menambah, mengedit, dan menghapus tugas beserta deadline | Agar seluruh daftar tugas terstruktur dan tercatat rapi |
| F-02 | Siswa | Menerima notifikasi pop-up otomatis menjelang deadline | Agar tidak ketinggalan batas waktu pengumpulan |
| F-03 | Siswa | Melihat hitung mundur waktu tersisa pada setiap kartu tugas | Agar merasakan tingkat urgensi pengerjaan |
| F-04 | Siswa | Melihat warna khusus (merah/peringatan) pada tugas hampir telat | Agar dapat mengambil tindakan secepatnya |
| F-05 | Siswa | Memperbarui persentase progres dan status pengerjaan | Agar dapat memantau sejauh mana tugas dikerjakan |
| F-06 | Siswa | Melihat ringkasan total tugas di halaman utama | Agar mendapat gambaran umum status seluruh beban tugas |
TugasIn dirancang menggunakan pendekatan Client-Side Layered Architecture murni tanpa ketergantungan pada server-side backend.
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β PRESENTATION LAYER β
β (HTML5 Layout + CSS3 Styling + DOM) β
ββββββββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββ
β
ββββββββββββββββββββββββββββββββΌβββββββββββββββββββββββββββββββ
β LOGIC LAYER β
β (app.js, taskModule, reminderModule, countdownModule, etc.)β
ββββββββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββ
β
ββββββββββββββββββββββββββββββββΌβββββββββββββββββββββββββββββββ
β DATA LAYER β
β (Browser Storage: localStorage / IndexedDB) β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
- Front-End Core: HTML5, CSS3, JavaScript (ES6+ Native)
- Data Persistence:
window.localStorage/IndexedDB API - System Service:
Web Notification API - Timer Execution: JavaScript Timers (
setInterval,setTimeout)
tugasin/
βββ index.html # Halaman utama & dashboard
βββ css/
β βββ style.css # Styling responsive & variabel tema visual
βββ js/
β βββ app.js # Entry point utama aplikasi
β βββ taskModule.js # Logika CRUD tugas
β βββ storageModule.js # Interaksi dengan localStorage/IndexedDB
β βββ reminderModule.js # Pengelolaan izin & penjadwalan Web Notification
β βββ countdownModule.js # Kalkulasi hitung mundur waktu real-time
β βββ warningModule.js # Penentuan ambang status (aman/hampir telat/telat)
β βββ progressModule.js # Pengelolaan status & persentase progres
β βββ uiModule.js # DOM Manipulation & Event Listeners
βββ assets/
βββ icons/ # Ikon & aset visual pendukung
| Modul | Tanggung Jawab Utama |
|---|---|
TaskModule |
Menangani operasi pembuatan, pembaruan, penghapusan, dan filter data tugas. |
StorageModule |
Menangani serialisasi (JSON.stringify/parse) dan penyimpanan data secara persisten. |
ReminderModule |
Meminta izin Web Notification dan memicu popup notifikasi sesuai interval waktu. |
CountdownModule |
Menghitung sisa hari, jam, dan menit dari waktu sekarang ke deadline. |
WarningModule |
Membandingkan sisa waktu terhadap threshold untuk menentukan kelas CSS/warna. |
ProgressModule |
Menghitung total progres dan mengelola perubahan status (belum, proses, selesai). |
UIModule |
Melakukan rendering komponen kartu tugas, modal form, dan dashboard stats. |
Setiap tugas disimpan sebagai objek JavaScript berstruktur berikut:
const TaskSchema = {
id: "task-1721520000000", // Unique ID (timestamp/UUID)
title: "Membuat Laporan SDLC", // Nama tugas
subject: "Pemrograman Web", // Mata pelajaran
deadline: "2026-07-25T23:59:00", // ISO Datetime String
priority: "tinggi", // Options: "rendah" | "sedang" | "tinggi"
status: "proses", // Options: "belum" | "proses" | "selesai" | "telat"
progress: 50, // Integer (0 - 100%)
createdAt: "2026-07-21T08:00:00" // ISO Datetime pembuatan
};function getRemainingTime(deadline) {
const diff = new Date(deadline) - new Date();
if (diff <= 0) {
return { status: "telat", text: "Waktu Habis", isExpired: true };
}
const hours = Math.floor(diff / (1000 * 60 * 60));
const minutes = Math.floor((diff % (1000 * 60 * 60)) / (1000 * 60));
return {
status: "berjalan",
text: `${hours} jam ${minutes} menit`,
isExpired: false
};
}function checkWarning(deadline, thresholdHours = 24) {
const diffHours = (new Date(deadline) - new Date()) / (1000 * 60 * 60);
if (diffHours <= 0) return "telat"; // Status Merah/Expired
if (diffHours <= thresholdHours) return "hampir-telat"; // Status Kuning/Warning
return "aman"; // Status Hijau/Normal
}- FR-01 (Tambah Tugas): Memungkinkan penginputan nama, mata pelajaran, deadline, dan prioritas.
- FR-02 (Edit/Hapus Tugas): Memungkinkan pengubahan detail tugas atau penghapusan permanen.
- FR-03 (Penyimpanan Persisten): Otomatis menyimpan state tugas ke
localStorage. - FR-04 (Notifikasi Browser): Memicu
Notificationpada H-1 hari dan H-3 jam sebelum deadline. - FR-05 (Real-time Countdown): Memperbarui tampilan sisa waktu setiap 60 detik.
- FR-06 (Visual Warning): Mengubah warna batas kartu menjadi kuning/merah sesuai sisa waktu.
- FR-07 (Update Progress): Memungkinkan penggeseran slider / input percentage progres 0-100%.
- FR-08 (Dashboard Ringkasan): Menyediakan kaji cepat jumlah tugas Aktif, Hampir Telat, dan Selesai.
- FR-09 (Auto-Detect Overdue): Menandai tugas sebagai "Telat" jika deadline terlampaui dan progres < 100%.
- NFR-01 (Usability): Antarmuka intuitif tanpa memerlukan pelatihan khusus bagi pengguna baru.
- NFR-02 (Performance): Eksekusi pembaruan timer tidak melebihi 1% penggunaan CPU browser.
- NFR-03 (Reliability): Data tetap utuh dan terisi kembali saat halaman di-refresh.
- NFR-04 (Compatibility): Kompatibel penuh dengan browser modern berbasis Chromium, Gecko, dan WebKit.
- NFR-05 (Maintainability): Struktur koding modular sesuai standar ES6 Modules.
Pengembangan menggunakan kerangka kerja Scrum Sederhana selama 3 minggu (3 Sprint):
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β SPRINT 1 (Minggu 1): Fondasi & CRUD Tugas β
βββββββββββ¬βββββββββββββββββββββββββββββββββββββββββββββββ¬βββββββββββ¬ββββββ€
β ID β Deskripsi Tugas β Prioritasβ Est.β
βββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββΌβββββββββββΌββββββ€
β S1-01 β Setup struktur proyek (HTML, CSS, JS) β Tinggi β 3j β
β S1-02 β Membuat form input tambah & edit tugas β Tinggi β 4j β
β S1-03 β Implementasi StorageModule (localStorage) β Tinggi β 4j β
β S1-04 β Implementasi TaskModule (Fungsi CRUD) β Tinggi β 5j β
β S1-05 β Render daftar tugas awal pada dashboard UI β Sedang β 4j β
βββββββββββ΄βββββββββββββββββββββββββββββββββββββββββββββββ΄βββββββββββ΄ββββββ€
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β SPRINT 2 (Minggu 2): Countdown, Reminder, & Warning System β
βββββββββββ¬βββββββββββββββββββββββββββββββββββββββββββββββ¬βββββββββββ¬ββββββ€
β ID β Deskripsi Tugas β Prioritasβ Est.β
βββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββΌβββββββββββΌββββββ€
β S2-01 β Implementasi CountdownModule (Interval 1m) β Tinggi β 5j β
β S2-02 β Implementasi ReminderModule & Web Notif API β Tinggi β 5j β
β S2-03 β Implementasi WarningModule (Threshold 24h) β Tinggi β 4j β
β S2-04 β Styling status warna kartu (Aman/Kuning/Merahβ Sedang β 3j β
β S2-05 β Testing trigger notifikasi & simulasi waktu β Sedang β 3j β
βββββββββββ΄βββββββββββββββββββββββββββββββββββββββββββββββ΄βββββββββββ΄ββββββ€
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β SPRINT 3 (Minggu 3): Progress Tracking, Dashboard, & Polishing β
βββββββββββ¬βββββββββββββββββββββββββββββββββββββββββββββββ¬βββββββββββ¬ββββββ€
β ID β Deskripsi Tugas β Prioritasβ Est.β
βββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββΌβββββββββββΌββββββ€
β S3-01 β Implementasi ProgressModule (0-100%) β Tinggi β 4j β
β S3-02 β Komponen visual progress bar pada tiap kartu β Sedang β 3j β
β S3-03 β Widget Dashboard Ringkasan statistik tugas β Sedang β 4j β
β S3-04 β Fitur deteksi otomatis status "Telat" β Tinggi β 3j β
β S3-05 β End-to-end Integration Testing & Bug Fixing β Tinggi β 5j β
β S3-06 β Finalisasi UI/UX, Aksesibilitas, & Dokumen β Sedang β 3j β
βββββββββββ΄βββββββββββββββββββββββββββββββββββββββββββββββ΄βββββββββββ΄ββββββ€
- Browser web modern (Google Chrome v90+, Mozilla Firefox v88+, atau Microsoft Edge v90+).
- Web Server Lokal (Opsional, misalnya VS Code Extension Live Server) untuk pengalaman pengujian modul ES6 terbaik.
- Clone repository ini (atau unduh file ZIP):
git clone https://github.com/smkn40/tugasin.git
- Masuk ke direktori proyek:
cd tugasin - Buka aplikasi:
- Opsi A (Sederhana): Klik ganda pada file
index.htmluntuk membukanya di browser pilihan Anda. - Opsi B (Disarankan): Jalankan menggunakan Live Server di VS Code atau jalankan perintah HTTP server lokal:
npx serve .
- Opsi A (Sederhana): Klik ganda pada file
Agar fitur Reminder Notifikasi berjalan sempurna:
- Saat pertama kali membuka aplikasi, browser akan menampilkan pop-up permintaan izin notifikasi.
- Klik "Allow" / "Izinkan".
- Jika secara tidak sengaja terblokir, Anda dapat meresetnya dengan mengklik ikon gembok π di sebelah kiri URL browser β Setel Notifikasi ke "Allow".
Untuk rilis versi MVP (Minimum Viable Product) ini, beberapa fitur sengaja belum diimplementasikan:
- β Tidak ada sinkronisasi multi-device atau akun pengguna (tanpa cloud database).
- β Tidak ada integrasi otomatis ke LMS sekolah (Google Classroom / Moodle).
- β Tidak ada fitur kolaborasi grup/tugas kelompok.
Dokumentasi dan proyek ini disusun oleh tim siswa Rekayasa Perangkat Lunak (RPL) SMKN 40 Jakarta:
- Tim Pengembang: Siswa RPL SMKN 40
- Mata Pelajaran: Pemrograman Web & Perangkat Bergerak / SDLC Project
- Tanggal Dokumen: 21 Juli 2026
- Versi Dokumen: 1.0
Dibuat dengan β€οΈ untuk kedisiplinan dan keberhasilan belajar siswa Indonesia.