Selamat datang di seri tutorial pertama kita! Dalam seri ini, kita akan membangun sebuah aplikasi web e-commerce yang fungsional dari nol. Kita tidak akan menggunakan framework raksasa, melainkan membangunnya lapis demi lapis untuk benar-benar memahami cara kerja setiap komponen.
Tumpukan Teknologi (Tech Stack) yang akan kita gunakan:
- Go (Golang): Bahasa pemrograman utama kita untuk backend. Cepat, efisien, dan sangat cocok untuk membangun layanan web berperforma tinggi.
- PostgreSQL: Database relasional yang andal dan kuat untuk menyimpan data produk, pengguna, dan pesanan.
- Minio: Penyimpanan objek (object storage) yang kompatibel dengan Amazon S3. Kita akan menggunakannya untuk menyimpan gambar-gambar produk.
- UnoCSS: Sebuah engine CSS utility-first yang sangat cepat dan on-demand untuk menata tampilan frontend kita nanti.
Di bagian pertama ini, tujuan kita adalah menyiapkan semua fondasi yang diperlukan. Mari kita mulai!
Langkah 1: Prasyarat
Sebelum memulai, pastikan Anda sudah memiliki:
- Terminal atau Command Prompt: Kita akan banyak menggunakannya.
- Teks Editor: Visual Studio Code (VS Code) sangat direkomendasikan.
- Docker dan Docker Compose: Ini adalah cara termudah untuk menjalankan PostgreSQL dan Minio tanpa perlu instalasi manual yang rumit di sistem operasi Anda. Kunjungi situs resmi Docker untuk menginstalnya.
Langkah 2: Instalasi Teknologi Inti
2.1. Instalasi Go
Jika Anda belum menginstal Go, kunjungi halaman unduhan resmi di go.dev/dl/. Pilih installer yang sesuai untuk sistem operasi Anda (Windows, macOS, atau Linux) dan ikuti petunjuknya.
Setelah instalasi selesai, buka terminal Anda dan verifikasi dengan perintah:
go version
Anda akan melihat output seperti go version go1.23.3 linux/amd64 (versi dan OS bisa berbeda).
2.2. Menjalankan PostgreSQL & Minio dengan Docker
Ini adalah bagian favorit saya karena Docker membuatnya sangat sederhana. Buat sebuah folder baru untuk proyek kita, misalnya go-ecommerce. Di dalam folder tersebut, buat sebuah file bernama docker-compose.yml dan salin konten berikut:
services:
postgres:
image: postgres:15-alpine
container_name: go-ecommerce-db
environment:
- POSTGRES_USER=admin
- POSTGRES_PASSWORD=secret
- POSTGRES_DB=ecommerce_db
ports:
- "5432:5432"
volumes:
- postgres_data:/var/lib/postgresql/data
restart: unless-stopped
minio:
image: minio/minio:latest
container_name: go-ecommerce-storage
environment:
- MINIO_ROOT_USER=minioadmin
- MINIO_ROOT_PASSWORD=miniosecret
ports:
- "9000:9000" # API Port
- "9001:9001" # Console Port
command: server /data --console-address ":9001"
volumes:
- minio_data:/data
restart: unless-stopped
volumes:
postgres_data:
minio_data:
Sekarang, buka terminal di folder proyek Anda dan jalankan perintah:
docker-compose up -d
Perintah ini akan mengunduh image PostgreSQL dan Minio, lalu menjalankannya di background.
- PostgreSQL akan berjalan dan bisa diakses dari aplikasi kita di port
5432. - Minio akan berjalan. Anda bisa mengakses Console-nya di browser melalui
http://localhost:9001dengan usernameminioadmindan passwordminiosecret.
Langkah 3: Membangun Struktur Proyek
Struktur folder yang baik akan membuat proyek kita rapi dan mudah dikelola. Kembali ke terminal, di dalam folder go-ecommerce, buat struktur folder berikut:
mkdir -p cmd/web internal web/templates
cmd/web/: Di sinilah filemain.gokita akan berada, sebagai pintu masuk utama aplikasi.internal/: Untuk kode-kode internal aplikasi yang tidak boleh diimpor oleh proyek lain (misalnya, koneksi database, logika bisnis).web/templates/: Untuk menyimpan file-file template HTML kita.
Langkah 4: Inisialisasi Proyek Go
Sekarang, kita perlu memberitahu Go bahwa folder ini adalah sebuah proyek (modul). Jalankan perintah ini di direktori root proyek (go-ecommerce):
go mod init github.com/kodekilat/go-ecommerce
Anda bisa mengganti
github.com/kodekilat/go-ecommercedengan nama modul Anda sendiri, biasanya mengikuti path repositori Anda.
Perintah ini akan membuat sebuah file baru bernama go.mod. File ini akan melacak semua dependensi (library eksternal) yang kita gunakan.
Langkah 5: “Hello, E-commerce!” - Server Web Pertama
Saatnya menulis kode Go pertama kita! Buat sebuah file baru di cmd/web/main.go dan isi dengan kode berikut:
package main
import (
"fmt"
"log"
"net/http"
)
func main() {
// Membuat multiplexer (router) baru
mux := http.NewServeMux()
// Mendaftarkan handler untuk root URL ("/")
mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprintln(w, "Selamat Datang di Toko Online Go!")
})
// Pesan bahwa server akan dimulai
log.Println("Memulai server di http://localhost:8080")
// Menjalankan server di port 8080
err := http.ListenAndServe(":8080", mux)
if err != nil {
log.Fatal(err)
}
}
Penjelasan Singkat:
- Kita menggunakan paket
net/httpbawaan Go. http.NewServeMux()membuat router dasar untuk menangani request HTTP.mux.HandleFunc("/", ...)mendaftarkan sebuah fungsi yang akan dieksekusi setiap kali ada request ke path/.- Fungsi tersebut menulis string “Selamat Datang di Toko Online Go!” sebagai respons.
http.ListenAndServe(":8080", mux)memulai server web di port 8080 dan menggunakannya untuk meneruskan request kemux.
Untuk menjalankan server, buka terminal di root proyek dan jalankan:
go run ./cmd/web/main.go
Buka browser Anda dan kunjungi alamat http://localhost:8080. Voila! Anda akan melihat pesan sambutan kita.

Penutup
Selamat!
Anda telah berhasil meletakkan fondasi yang sangat kokoh untuk aplikasi e-commerce kita. Anda sudah menginstal Go, menjalankan database dan object storage menggunakan Docker, serta membuat server web pertama yang berfungsi.
Di bagian selanjutnya, kita akan melangkah lebih jauh dengan:
- Menghubungkan aplikasi Go kita ke database PostgreSQL.
- Membuat skema tabel pertama untuk pengguna (users).
Terima kasih sudah mengikuti, sampai jumpa di artikel berikutnya!
Untuk referensi, Anda dapat melihat kode final dari tutorial ini di repositori GitHub berikut: Source code lengkap