Initial commit from Create Next App

This commit is contained in:
Yolando
2026-03-28 19:31:40 +07:00
commit 0a25960e8f
22 changed files with 6714 additions and 0 deletions

140
docs/requirement.md Normal file
View File

@@ -0,0 +1,140 @@
# PRD — Enterprise React Portfolio (Backend Developer Edition)
## 1. Overview
Website ini adalah aplikasi portofolio interaktif berbasis **React** yang dirancang untuk seorang **Backend Developer** dengan 3+ tahun pengalaman di industri perbankan (Java Spring Boot). Aplikasi ini dibangun dengan prinsip *Enterprise-Grade*: memiliki struktur folder yang *scalable*, keamanan yang ketat dari kerentanan web (OWASP), dan performa *rendering* tingkat tinggi.
Tujuan utama sistem ini adalah menampilkan rekam jejak penyelesaian masalah berskala *enterprise* (keamanan, skalabilitas, *microservices*), memamerkan keahlian sekunder di bidang *Mobile* dan *Frontend Development*, serta menyediakan sistem Admin (CMS) mandiri untuk mengelola konten.
## 2. Tech Stack & Infrastructure
Sistem mengadopsi ekosistem React modern dengan pendekatan *Server-Side Rendering* (SSR) dan *Static Site Generation* (SSG) untuk performa maksimal.
- **Framework:** Next.js (App Router).
- **Styling & UI:** Tailwind CSS + Framer Motion (untuk animasi transisi DOM yang dioptimalkan oleh GPU).
- **Backend / API:** Next.js Server Actions & Route Handlers.
- **Database & ORM:** PostgreSQL + Prisma ORM.
- **Image Storage:** Cloudinary.
- **Security & Validation:** Zod (validasi skema *End-to-End*), bcryptjs (Hashing).
- **Deployment:** Vercel (Frontend & Server Actions), Neon.tech/Supabase (Database).
## 3. Core Features
### 3.1. Public View (Visitor)
- **Hero Section:** Sapaan pembuka dengan *copywriting* yang menyoroti pengalaman *enterprise* (contoh: *"Building Secure, Scalable, Enterprise-Grade Systems. 3+ Years in Banking Tech."*). Dilengkapi animasi *reveal* dan tombol CTA menuju resume/kontak.
- **Experience & Timeline:** Garis waktu (*timeline*) interaktif yang menceritakan evolusi karir di industri perbankan dan pencapaian utama.
- **Tech Stack Showcase:** Menampilkan logo/ikon teknologi yang dikuasai, dikategorikan menjadi: *Enterprise Backend* (Java, Spring Boot, Kafka), *Database & Infra*, *Frontend*, dan *Mobile*.
- **Projects & Case Studies:** Galeri karya dengan fitur **Filter Kategori** (Semua, Backend, Frontend, Mobile).
- *Khusus Backend:* Menampilkan gambar *thumbnail* berupa **Diagram Arsitektur Sistem**, dengan metrik dampak (misal: "Meningkatkan performa API 40%").
- *Khusus Mobile/Frontend:* Menampilkan UI *screenshot*.
- **Contact Section:** Formulir bagi pengunjung (Rekruiter/Klien) untuk mengirimkan penawaran kerja.
### 3.2. Admin Dashboard (CMS)
- **Secure Authentication:** Halaman login rahasia (`/admin/login`) menggunakan Email dan Password tunggal.
- **Project Management:** Fitur CRUD (*Create, Read, Update, Delete*) portofolio dan studi kasus.
- **Skill Management:** Fitur CRUD untuk menambah/menghapus *tech stack*.
- **Message Inbox:** Halaman untuk membaca dan menghapus pesan masuk dari pengunjung.
## 4. Enterprise-Grade Folder Structure
Untuk memastikan kode mudah dipelihara dan diuji, aplikasi menggunakan arsitektur berbasis fitur (**Feature-Driven Architecture**).
```text
src/
├── app/ # Next.js App Router (Definisi rute publik & admin)
├── core/ # Konfigurasi inti sistem & infrastruktur
│ ├── security/ # Middleware auth, session management
│ ├── db/ # Prisma client & koneksi database
│ └── error-handling/ # Global error boundaries
├── features/ # Domain bisnis utama (Vertical Slicing)
│ ├── projects/ # Komponen UI, Server Actions (CRUD), & Zod Schema
│ ├── skills/ # Domain keahlian/tech stack
│ ├── messages/ # Domain inbox & kontak pengunjung
│ └── auth/ # Domain autentikasi admin
├── shared/ # Kode global (Reusability)
│ ├── components/ # UI dasar (Button, Input, Modal)
│ ├── lib/ # Utility functions (cn, formatDate)
│ └── types/ # Global TypeScript interfaces
└── public/ # Asset statis
```
## 5. System Architecture & Database Schema
### Data Flow (Server Actions)
```mermaid
sequenceDiagram
participant Client as React Client
participant Server as Next.js Server Actions
participant Validation as Zod Schema Validation
participant Cloud as Cloudinary
participant DB as PostgreSQL (Prisma)
Client->>Server: Submit FormData (Tambah Proyek)
Server->>Validation: Validasi Tipe Data & Sanitasi Input
Validation-->>Server: Data Valid
Server->>Cloud: Upload Image Buffer
Cloud-->>Server: Return Secure Image URL
Server->>DB: Eksekusi Query (Prisma Create)
DB-->>Server: Konfirmasi Sukses
Server->>Client: revalidatePath('/') & Tampilkan Success Toast
```
### Entity Relationship Diagram (ERD)
```mermaid
erDiagram
users {
uuid id PK
string email
string password_hash
string name
}
projects {
uuid id PK
string title
string slug
text description
string image_url
string repo_url
string live_url
string category
boolean is_published
datetime created_at
}
skills {
uuid id PK
string name
string icon_name
string category
}
project_skills {
uuid project_id FK
uuid skill_id FK
}
messages {
uuid id PK
string sender_name
string sender_email
text content
boolean is_read
datetime created_at
}
projects ||--o{ project_skills : "uses"
skills ||--o{ project_skills : "applied in"
```
## 6. Enterprise Security Standards
1. **Authentication & Session Management:** Menggunakan **HTTP-Only, Secure, SameSite Cookies** untuk sesi Admin. *Password* di-*hash* menggunakan bcrypt.
2. **Input Validation (XSS/SQLi Prevention):** Semua input divalidasi ganda di *Client* dan *Server* menggunakan **Zod**. Prisma ORM mencegah SQL Injection.
3. **Data Protection:** Penerapan **Rate Limiting** pada *endpoint* kontak untuk mencegah *Spam/DDoS*, serta implementasi Content Security Policy (CSP).
## 7. Performance Optimization Strategy
Standar performa yang harus dicapai adalah **Lighthouse Score 95+**:
1. **React Server Components (RSC):** Meminimalisir pengiriman JavaScript ke klien.
2. **Code Splitting & Lazy Loading:** Gambar dan komponen berat (seperti diagram) dimuat secara asinkron.
3. **Image Optimization:** Wajib menggunakan tag `<Image>` dari Next.js untuk format WebP/AVIF dan *resizing* dinamis.
## 8. Typography & Design Constraints
- **Konsep Visual:** *Clean, High Contrast, Minimalist Enterprise*. Mendukung *Dark/Light Mode*.
- **Font Stack:**
- **Sans:** `Geist Mono, ui-monospace, monospace` (Teks paragraf dan antarmuka).
- **Serif:** `serif` (Elemen dekoratif/kutipan).
- **Mono:** `JetBrains Mono, monospace` (Metrik angka, *badge* teknologi, *code snippet*).
- **Animasi:** Berbasis `opacity` dan `transform` untuk performa 60fps. Fokus pada *Reveal on Scroll*. Hindari animasi yang menggeser layout (memicu *Reflow*).

47
docs/spec-local.md Normal file
View File

@@ -0,0 +1,47 @@
# 🖥️ Dokumentasi Infrastruktur Workstation PC Lokal
**Pemilik:** Yolando (Ando)
**Terakhir Diperbarui:** Maret 2026
**Status:** 🟢 Aktif & Berjalan
**Fungsi Utama:** *Local Development*, Eksperimen AI Lokal, & *Gaming*
---
## ⚙️ 1. Spesifikasi Perangkat Keras (Hardware Inti)
- **Prosesor (CPU):** Intel Core i5-14600KF (Performa *multi-core* tinggi untuk *compiling* kode dan *multitasking* berat).
- **Kartu Grafis (GPU):** NVIDIA GeForce RTX 5060 (Akselerasi *hardware* untuk *rendering*, komputasi AI, dan *gaming*).
- **Memori (RAM):** 32 GB DDR4 @3600MHz (Kapasitas lega untuk menjalankan IDE, *local server*, dan beberapa kontainer sekaligus tanpa *bottleneck*).
---
## 🛠️ 2. Sistem Lingkungan & *Tooling* (Software)
| Kategori | Perangkat Lunak | Keterangan / Fungsi |
| :--- | :--- | :--- |
| **Kontainerisasi** | **Docker Engine / Desktop** | Sudah terpasang. Mesin utama untuk *testing* layanan lokal sebelum di-*deploy* ke VPS. |
| **Orkestrasi Lokal** | **Docker Compose** | Menjalankan *stack development* lokal (misal: *database* + *cache*) dengan konfigurasi yang identik dengan *server*. |
---
## 🎯 3. Profil Penggunaan (*Services & Use Cases*)
### A. Pengembangan Perangkat Lunak (*Backend Development*)
Berfungsi sebagai lingkungan utama untuk merancang, menguji, dan melakukan *debugging* aplikasi.
- **IDE & Eksekusi:** Menjalankan IDE berat dengan lancar untuk pengembangan ekosistem seperti Java/Spring Boot.
- **Local Sandbox (via Docker):** Menjalankan *instance* lokal sementara untuk PostgreSQL, Redis, atau layanan lain agar terisolasi dari *database* utama di VPS saat masa penulisan kode.
### B. Eksperimen AI Lokal (*Local LLM*)
Memanfaatkan spesifikasi CPU mutakhir dan VRAM dari RTX 5060 untuk menjalankan model *Artificial Intelligence* secara *offline*.
- **Tools:** Optimal untuk menjalankan Ollama, LM Studio, atau *framework* sejenis untuk pengujian *prompt* atau integrasi AI langsung ke aplikasi lokal.
### C. Hiburan & *Gaming*
Kombinasi prosesor i5-14600KF dan RTX 5060 memberikan performa yang sangat stabil untuk *gaming* resolusi tinggi, baik untuk *game* dengan genre *racing* maupun *open-world*.
---
## 🌐 4. Alur Kerja (Integrasi PC Lokal ↔️ VPS)
PC ini bertindak sebagai *node* pengembangan (*Development Node*) dengan alur kerja berikut:
1. **Develop & Test:** Kode ditulis dan diuji secara lokal di PC ini menggunakan kontainer Docker.
2. **Deploy:** Pipeline CI/CD (Jenkins) di VPS akan merespons *commit* baru dan melakukan proses *build* secara otomatis ke *server*.
---

58
docs/spec-vps.md Normal file
View File

@@ -0,0 +1,58 @@
# 🚀 Dokumentasi Infrastruktur VPS Cloud Pribadi
**Pemilik:** Yolando (Ando)
**Terakhir Diperbarui:** Maret 2026
**Status:** 🟢 Aktif & Berjalan
---
## 💻 1. Spesifikasi Server (Hardware & OS)
- **Sistem Operasi:** Ubuntu 20.04.6 LTS (Focal Fossa)
- **Prosesor (CPU):** AMD EPYC (4 Cores)
- **Memori (RAM):** 16 GB
- **Manajemen Jaringan:** UFW (Uncomplicated Firewall) aktif (Port yang dibuka: 80, 443, 22, 2222 untuk Git SSH)
---
## 🏗️ 2. Infrastruktur Inti (Core)
Semua layanan berjalan di atas teknologi kontainerisasi untuk isolasi dan efisiensi.
| Layanan | Fungsi Utama | Akses / Keterangan |
| :--- | :--- | :--- |
| **Docker & Docker Compose** | Mesin kontainerisasi utama. | `docker compose up -d` |
| **Portainer** | GUI Manajemen Kontainer Docker. | Mode Web UI |
| **Nginx Proxy Manager (NPM)**| *Reverse proxy* & Manajemen SSL (Let's Encrypt). | Pintu masuk utama (Port 80/443) |
---
## 🛠️ 3. Katalog Layanan (Services Stack)
### A. DevOps & CI/CD
| Layanan | Fungsi | Subdomain / Port |
| :--- | :--- | :--- |
| **Jenkins** | Mesin Otomatisasi Build (CI/CD Pipeline). | Terintegrasi via NPM |
### B. Database & Storage
| Layanan | Fungsi | Subdomain / Keterangan |
| :--- | :--- | :--- |
| **Oracle DB** | Database relasional utama. | Akses via SSH Tunnel (OLVM) |
| **PostgreSQL** | Database internal khusus untuk Gitea. | `gitea-db:5432` (Terisolasi 100%) |
| **Redis** | *In-memory data store* / *Cache*. | Jaringan Internal + Access List |
| **MinIO (Console)** | Dasbor Web S3 Cloud Storage Pribadi. | `storage.ando-vps.duckdns.org` |
| **MinIO (API)** | S3 Endpoint untuk *upload* via kode (Golang/Java).| `s3.ando-vps.duckdns.org` |
### C. Observability (Monitoring & Logging)
*Stack ini menggunakan jaringan khusus `kibana_elastic-net`.*
| Layanan | Fungsi | Keterangan |
| :--- | :--- | :--- |
| **APM Server** | Pelacak Performa Aplikasi (*Tracing*). | `apm.ando-vps.duckdns.org` (Port 8200) |
| **Uptime Kuma** | Monitoring *uptime* layanan (Ping/HTTP Status). | Memastikan semua *endpoints* hidup. |
## 🌐 4. Arsitektur Jaringan (Docker Networks)
Untuk alasan keamanan, layanan dikelompokkan dalam *virtual network* yang terpisah:
- `nginx-proxy-manager_default`: Jaringan *publik* yang diekspos ke internet via NPM.
- `gitea-net`: Jaringan *privat* untuk komunikasi Gitea & PostgreSQL.
---