Skip to content

About

ShortifyGo A blazing-fast, lightweight URL shortener built with Golang. ShortifyGo is a modern, self-hosted URL shortening service designed for speed, simplicity, and scalability. Built with Go, it delivers millisecond-fast redirects and a clean API, making it easy to integrate into any application or workflow.

Resources

Stars

6 stars

Watchers

0 watching

Forks

Latest commit

 

History

8 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🚀 Shortify - URL Shortener (Go Backend Workshop)

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).


🛠️ 1. Persiapan (Prerequisites)

Sebelum mulai coding, pastikan "senjata" kamu sudah siap.

A. Install Golang

Wajib terinstall agar komputer kamu mengerti bahasa Go.

  1. Buka website resmi: go.dev/dl.
  2. Download installer sesuai OS kamu (Windows/macOS/Linux).
  3. Install (klik Next sampai selesai).
  4. PENTING: Verifikasi Instalasi Buka terminal (CMD / PowerShell / Terminal), lalu ketik:
    go version
    Jika muncul tulisan seperti go version go1.22.x ..., berarti kamu siap!

B. Tools Pendukung (Rekomendasi)

  • 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).

🏃‍♂️ 2. Cara Menjalankan Project

Ikuti langkah ini untuk menghidupkan server Shortify di laptopmu:

Langkah 1: Download Library

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)

Langkah 2: Jalankan Server

Ketik perintah "sakti" ini untuk menjalankan aplikasi:

Bash

go run cmd/main.go

Langkah 3: Cek Hasil

Jika berhasil, terminal akan menampilkan tulisan:

Listening and serving HTTP on :8080

Sekarang servermu sudah hidup di alamat http://localhost:8080! 🎉


🏰 3. Penjelasan Arsitektur (Analogi Restoran)

Mungkin kamu bingung melihat banyak folder. Tenang, kita menggunakan Clean Architecture.

Bayangkan aplikasi ini adalah sebuah Restoran Mewah:

📂 1. Entity (internal/entity/)

  • Analogi: Bahan Makanan / Buku Menu.

  • Fungsi: Menjelaskan bentuk data dasar.

  • Contoh: Di sini kita mendefinisikan bahwa sebuah "URL" itu harus punya ID (kode pendek) dan Original (link asli).

📂 2. Repository (internal/repository/)

  • 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).

📂 3. Usecase (internal/usecase/)

  • 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.

📂 4. Handler (internal/handler/)

  • 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).


🧪 4. Cara Testing (API Endpoints)

Gunakan Postman untuk mencoba fitur yang sudah kamu buat.

1. Membuat Short URL (POST)

  • 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.

2. Mengakses Link (GET)

  • URL: http://localhost:8080/AbCd1 (Ganti dengan kode yang kamu dapat)

  • Method: GET

  • Hasil: Browser/Postman akan otomatis diarahkan (Redirect) ke link asli (YouTube).


📚 5. Sumber Belajar (References)

Struktur yang kita pakai ini bukan sembarangan, tapi mengacu pada best practice dunia:

  1. Clean Architecture (The Concept)

    • Pencetus: Robert C. Martin (Uncle Bob).

    • Penjelasan: Memisahkan aplikasi menjadi layer agar mudah dirawat.

    • 📖 Baca Blog Uncle Bob

  2. Golang Project Layout

  3. Gin Web Framework


🔥 Challenge (PR)

Sudah selesai? Coba tantangan ini di rumah:

  1. Tambahkan validasi: Link yang diinput harus diawali http:// atau https://.

  2. Tambahkan fitur: Hitung berapa kali link tersebut di-klik (clicks).

Happy Coding! Error adalah guru terbaik. 🚀

About

ShortifyGo A blazing-fast, lightweight URL shortener built with Golang. ShortifyGo is a modern, self-hosted URL shortening service designed for speed, simplicity, and scalability. Built with Go, it delivers millisecond-fast redirects and a clean API, making it easy to integrate into any application or workflow.

Resources

Stars

6 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages