Membangun Web App E-Commerce dengan Go: #1 - Persiapan Lingkungan & Proyek Pertama

Membangun Web App E-Commerce dengan Go: #1 - Persiapan Lingkungan & Proyek Pertama

Mulai perjalanan Anda dengan Go! Di bagian pertama ini, kita akan menginstal semua kebutuhan dan membuat server web 'Hello World' sebagai fondasi toko online kita.

Penulis: Novian Hidayat
Tanggal: 30 Juni 2025
Level: beginner

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:

  1. Terminal atau Command Prompt: Kita akan banyak menggunakannya.
  2. Teks Editor: Visual Studio Code (VS Code) sangat direkomendasikan.
  3. 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:9001 dengan username minioadmin dan password miniosecret.

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 file main.go kita 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-ecommerce dengan 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:

  1. Kita menggunakan paket net/http bawaan Go.
  2. http.NewServeMux() membuat router dasar untuk menangani request HTTP.
  3. mux.HandleFunc("/", ...) mendaftarkan sebuah fungsi yang akan dieksekusi setiap kali ada request ke path /.
  4. Fungsi tersebut menulis string “Selamat Datang di Toko Online Go!” sebagai respons.
  5. http.ListenAndServe(":8080", mux) memulai server web di port 8080 dan menggunakannya untuk meneruskan request ke mux.

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.

Hasil Server Hello World

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

Diskusi

Tutorial Lainnya