[๐ ] Log Pengembangan Secret Messenger #2: Flutter Web + Django, Roadmap, English
โจ Ringkasan GPT ใ
Hari ketika tech stack dialihkan ke kombinasi Flutter Web + Django, lalu keseluruhan roadmap pengembangan dan lingkungan pengembangan berbasis bahasa Inggris ditetapkan.
๐ Roadmap
To-Do List bertahap untuk Phase 1-4 โ mencakup:
- ๐ง Perencanaan proyek, pemilihan tech stack, dan pembelian domain
- ๐ ๏ธ Build Flutter Web + integrasi static Django (local dev)
- ๐ Implementasi trigger API dasar
- ๐ Deployment VPS, setup Nginx, dan penyajian domain aman
โ PHASE 1 โ Perencanaan Awal & Keputusan Strategis
-
๐ง Menentukan cakupan proyek & strategi keamanan
- Target pengguna: pembelot Korea Utara tanpa dokumen yang tinggal di China
- Tujuan: menyediakan alat komunikasi aman, tersamar, dan berbasis browser
- Strategi UX: meniru antarmuka kalkulator untuk menyembunyikan fungsi sebenarnya
-
๐ค Memilih pendekatan pengembangan berbantuan AI
- Menggunakan GPT-4o dan o1 untuk membantu desain dan implementasi
- Menerapkan workflow โVibe Codingโ โ memakai bahasa alami dan prototyping iteratif dengan AI
-
โ๏ธ Memilih tech stack
- Frontend: Flutter Web (untuk UI yang rapi dan terasa seperti aplikasi, disamarkan sebagai kalkulator)
- Backend: Django + Django REST Framework (untuk API terstruktur, admin bawaan, dan keamanan)
- Deployment: satu container VPS yang menyajikan file static Flutter dan Django API sekaligus
-
๐ Membeli domain penyamaran
-
Domain:
___.net - Tujuan: tampilan utilitas kalkulator yang masuk akal
- Harga: โฉ18,000/tahun lewat registrar Korea
-
Domain:
โ PHASE 2 โ Pengembangan Lokal: Integrasi Flutter Web + Django
๐ง 1. Setup Lingkungan Proyek
-
๐งฑ Membuat proyek Django
-
django-admin startproject stealthcore .
-
-
โ๏ธ Membuat app Django (untuk API)
-
python manage.py startapp api
-
-
๐งฉ Menambahkan
'api'dan'rest_framework'keINSTALLED_APPS -
๐ Membuat virtual environment dan menginstal dependency
-
python -m venv venv && source venv/bin/activate -
pip install django djangorestframework whitenoise
-
๐ ๏ธ 2. Build Flutter Web
-
๐ป Menginisialisasi app Flutter
-
flutter create ____web -
Mengganti UI default dengan
TextFielddan tombolSend
-
-
๐งช Mengirim input melalui
http.post()ke/api/check-trigger/ -
๐จ Membuat output Web
-
flutter build web
-
-
๐ Memindahkan file build
-
Membuat folder
frontend_static/di root Django -
cp -r build/web/* frontend_static/
-
Membuat folder
โ๏ธ 3. Penyajian Static File Django
-
๐งท Memperbarui
settings.py:STATIC_URL = '/static/' STATICFILES_DIRS = [ BASE_DIR / 'frontend_static' ] -
(Opsional) Mengaktifkan WhiteNoise
-
Menambahkan
'whitenoise.middleware.WhiteNoiseMiddleware'keMIDDLEWARE
-
Menambahkan
-
๐๏ธ Menyalin
build/web/index.htmlketemplates/index.html -
๐ ๏ธ Memperbaiki path asset di
index.html:<script src="/static/main.dart.js"></script>
๐ 4. Menghubungkan Flutter ke Django
-
๐งช Membuat endpoint
/api/check-trigger/-
Menerima POST
{ input: "..." } -
Mengembalikan
{ status: "success" }jika input adalah'1004'
-
Menerima POST
- ๐ Memastikan tidak ada string trigger di source frontend
-
๐งช Mengonfirmasi integrasi frontend dengan
http.post(...)
โ PHASE 3 โ Deployment VPS (Vultr)
๐ 1. Setup Server
- Membuat instance Vultr (Ubuntu 22.04, RAM 1GB)
-
๐ Menyiapkan akses SSH (
ssh root@<ip>) -
๐ฆ Menginstal dependency:
-
sudo apt update && sudo apt upgrade -
sudo apt install python3 python3-pip nginx git -
sudo apt install certbot python3-certbot-nginx
-
๐ 2. Deploy Django
-
Mengunggah proyek (
scpataugit clone) -
Menyiapkan virtual environment
-
python3 -m venv venv && source venv/bin/activate -
pip install -r requirements.txt
-
-
๐ซ Menginstal dan menguji Gunicorn
-
pip install gunicorn -
gunicorn stealthcore.wsgi:application
-
๐ 3. Menyajikan dengan Nginx
-
Membuat konfigurasi Nginx:
server { listen 80; server_name ___.net; location /static/ { alias /home/youruser/project/frontend_static/; } location / { proxy_pass http://127.0.0.1:8000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } -
๐ Mengaktifkan HTTPS dengan Letโs Encrypt
-
sudo certbot --nginx -d ___.net
-
-
๐ Me-restart Nginx:
-
sudo systemctl restart nginx
-
โ PHASE 4 โ Pengujian Akhir & Hardening
-
๐ป Mengunjungi
https://___.net- Memastikan UI kalkulator berhasil dimuat
-
๐ Memasukkan
'1004'di input Flutter dan mengirimnya-
Django harus merespons dengan
{ "status": "success" }
-
Django harus merespons dengan
- ๐งช Menguji input tidak valid agar mengembalikan pesan penolakan
โ Catatan Akhir
- ๐งผ Menghapus semua logika sensitif dari frontend
- ๐ Melindungi endpoint API berikutnya dengan validasi token sesi
- ๐ง Memoles penyamaran: memperbarui ikon app, judul halaman, dan menambahkan elemen utilitas palsu
-
๐ง Menulis dokumen internal (
deploy.md) untuk deployment yang bisa diulang
๐ญ Diary
Ada beberapa perubahan besar.
- Aku mengubah arah ke Flutter Web (Frontend) + Django (Backend).
- Karena ke depannya, saat mengembangkan aplikasi, aku berniat terus mendorong kombinasi seperti ini.
- Dan karena keduanya adalah framework yang pernah kupakai, jadi aku bisa berharap produktivitas yang jauh lebih cepat.
- Aku memutuskan bahwa semua documentation, comment, dan commit message akan ditulis dalam bahasa Inggris.
- Karena menulis prompt dalam bahasa Inggris mungkin bisa memberi sedikit peningkatan performa.
- Karena sebagian besar pengetahuan terbaru di dunia dibahas dalam bahasa Inggris.
- Karena aku harus membiasakan diri terus memakai bahasa Inggris supaya makin akrab dengannya.
- Aku memutuskan bahwa Git Commit Message Convention harus mengikuti format standar industri pengembangan.
-
from
* 21adba0 25.04.03 Thu <Hyuk Min> Chore | README.md: Add more details to roadmap -
to
* 21adba0 25.04.03 Thu <Hyuk Min> docs(README): add more details to roadmap - Karena kalau tidak berniat hidup selamanya sebagai developer solo, membiasakan diri mengikuti standar industri sejak awal memang benar.
- Karena nanti, kalau memakai program terkait Change log, formatnya harus standar supaya pesan bisa diparse dengan benar.
-
Kalau melihat roadmap-nya saja, rasanya sudah keluar guideline yang cukup enak untuk diikuti.
Besok aku harus terus meminta feedback dari GPT, merapikannya, lalu mengikuti roadmap itu apa adanya.
Tinggalkan komentar