SyncFlow adalah platform manajemen alur kerja tim (Kanban Board) real-time yang terinspirasi dari estetika Linear, dirancang dengan fokus pada kecepatan performa ekstrem, optimasi kueri Raw SQL murni, dan pengalaman interaktif modern (Zero Perceived Latency).
Proyek ini dilengkapi dengan dokumentasi arsitektur mandiri (self-contained):
| Dokumen | Deskripsi & Isi |
|---|---|
| 🗺️ ROADMAP.md | Panduan Eksekusi Fitur Mandiri (Phase 1 s/d Phase 8) dengan checklist [ ]. |
| 📜 RULES.md | Aturan Baku Pengembangan: Larangan ORM, aturan parameterized query SQL, dan pola Optimistic UI. |
| 📡 API_SPECIFICATION.md | Kontrak REST API & Template Kueri SQL Murni lengkap dengan payload JSON dan kueri json_agg. |
| 🏛️ DESIGN.md | Arsitektur Sistem & Data Dictionary: Diagram Mermaid dan relasi 17 tabel database. |
| 🤖 AGENTS.md | Standar dan batasan teknis bagi developer dan agen AI. |
| 🌐 graphify-out/graph.html | Visualisasi interaktif Knowledge Graph seluruh basis kode. |
- Bebas ORM Overhead: Menggunakan driver
postgres.jsberkinerja tinggi dengan koneksi pooling otomatis. - 17 Tabel Terkunci: Skema database yang dinormalisasi penuh untuk multi-tenancy, RBAC, boards, kolom, tiket, checklist, komentar, audit logs, dan notifikasi.
- Single-Query Hierarchical Fetch: Mengambil seluruh struktur papan (Board ➡️ Columns ➡️ Tasks ➡️ Assignees ➡️ Labels) dalam 1 kali kueri SQL menggunakan fungsi agregasi
json_agg()danjson_build_object().
- Ditenagai oleh
@dnd-kit/coredan@dnd-kit/sortable. - Zero Perceived Latency: Perubahan posisi kartu langsung dirender secara instan di layar lokal melalui Zustand store sebelum request API selesai.
- Instant Rollback: Jika terjadi gangguan jaringan atau kegagalan server, posisi kartu otomatis dikembalikan ke asal dengan notifikasi kesalahan yang ramah pengguna.
- Menggunakan algoritma indeks pecahan (Fractional Indexing) bertipe
DOUBLE PRECISION. - Memindahkan satu kartu di antara ribuan kartu lain hanya membutuhkan satu operasi
UPDATEpada kartu tersebut ($O(1)$ write), tanpa perlu meng-update baris kartu lain di database.
- Menggunakan palet warna Deep Obsidian (
#090d16) dan Slate dengan aksen Sky Blue (#38bdf8). - Komponen micro-interactions halus, keyboard shortcut support (
Cmd + K), dan markdown rich text support.
graph TD
subgraph Client Layer (Browser)
Browser[Client UI - Next.js 15]
ZustandStore[Zustand Board Store]
DndKit[dnd-kit Drag Engine]
Browser <--> ZustandStore
ZustandStore <--> DndKit
end
subgraph API & Edge Layer
RouteHandlers[Next.js App Route Handlers]
ZodValidator[Zod Payload Validator]
Browser -->|Optimistic HTTP PATCH/POST| RouteHandlers
RouteHandlers --> ZodValidator
end
subgraph Database Layer (Raw SQL)
PostgresPool[postgres.js Connection Pool]
PG[(PostgreSQL 16 Enterprise DB)]
ZodValidator --> PostgresPool
PostgresPool <-->|Single-Query json_agg| PG
end
Seluruh skema telah didefinisikan secara komprehensif di migrations/001_initial_schema.sql:
users— Data akun pengguna & avatar.user_preferences— Pengaturan tema & preferensi notifikasi.workspaces— Entitas organisasi/perusahaan (multi-tenancy).workspace_members— Keanggotaan & hak akses RBAC (owner,admin,member,guest).workspace_invites— Token undangan anggota via email.boards— Papan proyek Kanban & identifier tiket (contoh:ENG,DES).board_members— Hak akses spesifik untuk Private Board.columns— Kolom status alur kerja & WIP limits.tasks— Tiket tugas utama (priority, story points, due date, soft delete).task_assignees— Penugasan multi-user per tiket.task_checklists— Sub-item checklist di dalam tiket.labels— Tag warna tingkat workspace (Bug, Feature, Urgent).task_labels— Relasi many-to-many label pada tiket.task_comments— Diskusi & komentar berulir (threaded discussion).task_attachments— Metadata file lampiran.activity_logs— Audit trail riwayat perubahan otomatis (old_value&new_valueJSONB).notifications— Notifikasi pengguna in-app.
- Node.js: versi 20+ atau 22+
- PostgreSQL: versi 14+ atau 16+
git clone https://github.com/Hivzzy/syncflow.git
cd syncflow
npm installSalin template environment:
cp .env.example .env.localSesuaikan DATABASE_URL di file .env.local:
DATABASE_URL=postgres://postgres:postgres@localhost:5432/syncflow
NEXT_PUBLIC_APP_URL=http://localhost:3000Pastikan PostgreSQL berjalan dan database syncflow telah dibuat, lalu jalankan:
# Mengeksekusi DDL 17 tabel & indeks performa
npm run db:migrate
# Memasukkan data awal (User, Workspace, Board, Kolom, Sample Tasks)
npm run db:seednpm run devBuka browser di http://localhost:3000! 🎉
syncflow/
├── migrations/ # Skrip DDL Raw SQL (001_initial_schema.sql)
├── scripts/ # Runner migrasi & seeding data (migrate.js, seed.js)
├── src/
│ ├── app/ # Next.js 15 App Router (Pages, Layouts, API Routes)
│ ├── components/ # Komponen UI & Kanban (Board, Column, Card, Modals)
│ ├── lib/ # db.ts (PostgreSQL connection pool) & utils
│ ├── stores/ # Zustand Store (board-store.ts untuk Optimistic UI)
│ └── types/ # database.ts (TypeScript interfaces lengkap)
├── graphify-out/ # Knowledge Graph & Laporan Analisis Kode
├── ROADMAP.md # Panduan checklist pengerjaan mandiri
├── RULES.md # Aturan baku arsitektur & coding
├── API_SPECIFICATION.md# Spesifikasi kontrak REST API & Kueri SQL
├── DESIGN.md # Desain sistem & data dictionary
├── AGENTS.md # Panduan otomatis agen AI
└── README.md # Dokumentasi utama proyek
- Author: Habbanma (Hivzzy)
- License: MIT License