Selamat datang di project Shortify!
Di workshop ini, kamu akan berperan sebagai Backend Engineer untuk membangun layanan pemendek URL (seperti bit.ly) menggunakan bahasa pemrograman Go (Golang) dan framework Gin.
Project ini tidak hanya sekadar "jalan", tapi juga menggunakan struktur Clean Architecture yang merupakan standar industri di perusahaan teknologi besar (Unicorn/Decacorn).
Sebelum mulai coding, pastikan "senjata" kamu sudah siap.
Wajib terinstall agar komputer kamu mengerti bahasa Go.
- Buka website resmi: go.dev/dl.
- Download installer sesuai OS kamu (Windows/macOS/Linux).
- Install (klik Next sampai selesai).
- PENTING: Verifikasi Instalasi
Buka terminal (CMD / PowerShell / Terminal), lalu ketik:
Jika muncul tulisan seperti
go version
go version go1.22.x ..., berarti kamu siap!
- Text Editor: VS Code.
- Tips: Install extension "Go" di VS Code agar coding lebih mudah (auto-complete).
- API Tester: Postman (untuk mencoba kirim data ke server).
Ikuti langkah ini untuk menghidupkan server Shortify di laptopmu:
Karena kita menggunakan Framework Gin, kita perlu mendownload "bahan-bahannya" dulu. Buka terminal di folder project ini, lalu ketik:
go mod tidy
(Tunggu sampai proses download selesai)
Ketik perintah "sakti" ini untuk menjalankan aplikasi:
Bash
go run cmd/main.go
Jika berhasil, terminal akan menampilkan tulisan:
Listening and serving HTTP on :8080
Sekarang servermu sudah hidup di alamat http://localhost:8080! 🎉
Mungkin kamu bingung melihat banyak folder. Tenang, kita menggunakan Clean Architecture.
Bayangkan aplikasi ini adalah sebuah Restoran Mewah:
-
Analogi: Bahan Makanan / Buku Menu.
-
Fungsi: Menjelaskan bentuk data dasar.
-
Contoh: Di sini kita mendefinisikan bahwa sebuah "URL" itu harus punya
ID(kode pendek) danOriginal(link asli).
-
Analogi: Kulkas / Gudang.
-
Fungsi: Tempat menyimpan dan mengambil data.
-
Logika: Repository tidak peduli datanya untuk apa, tugasnya hanya: "Simpan ini!" atau "Ambilkan itu!". (Di project ini, kita simpan di Memori RAM).
-
Analogi: Koki (Chef).
-
Fungsi: Otak dari aplikasi (Business Logic).
-
Logika: Di sinilah proses memasak terjadi.
- User minta pendekin link? -> Cek dulu link-nya kosong gak? -> Generate kode unik -> Suruh Repository simpan.
-
Analogi: Pelayan (Waiter).
-
Fungsi: Melayani tamu (User/Frontend).
-
Logika:
-
Menerima pesanan (Request JSON).
-
Meneruskan pesanan ke Koki (Usecase).
-
Mengantar makanan jadi ke tamu (Response JSON).
-
Gunakan Postman untuk mencoba fitur yang sudah kamu buat.
-
URL:
http://localhost:8080/shorten -
Method:
POST -
Body (Raw JSON):
JSON
{ "url": "[https://www.youtube.com/watch?v=dQw4w9WgXcQ](https://www.youtube.com/watch?v=dQw4w9WgXcQ)" } -
Response: Kamu akan dapat kode pendek, misal
AbCd1.
-
URL:
http://localhost:8080/AbCd1(Ganti dengan kode yang kamu dapat) -
Method:
GET -
Hasil: Browser/Postman akan otomatis diarahkan (Redirect) ke link asli (YouTube).
Struktur yang kita pakai ini bukan sembarangan, tapi mengacu pada best practice dunia:
-
Clean Architecture (The Concept)
-
Pencetus: Robert C. Martin (Uncle Bob).
-
Penjelasan: Memisahkan aplikasi menjadi layer agar mudah dirawat.
-
-
Golang Project Layout
-
Standar: Struktur folder
cmd,internal,pkgadalah standar tidak tertulis komunitas Go.
-
-
Gin Web Framework
-
Tools: Framework yang kita pakai di file
handler. Terkenal sangat cepat.
-
Sudah selesai? Coba tantangan ini di rumah:
-
Tambahkan validasi: Link yang diinput harus diawali
http://atauhttps://. -
Tambahkan fitur: Hitung berapa kali link tersebut di-klik (
clicks).
Happy Coding! Error adalah guru terbaik. 🚀