MVP Daftar Produk UMKM
Aplikasi web fullstack untuk mengelola produk UMKM dengan fitur unggah gambar menggunakan Next.js dan Express.js
Bagikan proyek ini:
Tentang Proyek
MVP Daftar Produk UMKM
Aplikasi web fullstack yang dirancang untuk mengelola produk Usaha Mikro Kecil Menengah (UMKM) dengan kemampuan unggah gambar yang komprehensif, dibangun menggunakan teknologi web modern termasuk Next.js untuk frontend dan Express.js untuk backend API.
📋 Ringkasan
Ini adalah proyek pembelajaran yang mendemonstrasikan struktur monorepo fullstack lengkap untuk membangun sistem manajemen produk. Aplikasi ini memungkinkan bisnis UMKM untuk mengelola katalog produk mereka dengan gambar yang disimpan di Supabase, memberikan contoh nyata integrasi server-side rendering dan API.
✨ Fitur
-
Manajemen Produk
- Melihat daftar produk lengkap beserta gambarnya.
- Menambah produk baru dengan unggah gambar.
- Menghapus produk yang sudah ada.
- Pembaruan data secara real-time.
-
UI/UX Modern
- Desain responsif dengan Tailwind CSS.
- Pemuatan halaman cepat dengan Next.js SSR.
- Interaksi pengguna yang mulus.
-
Penanganan Gambar
- Unggah gambar produk melalui Supabase Storage.
- Optimasi gambar otomatis.
- URL gambar yang aman.
🏗️ Struktur Proyek
Learn-Server-Side-Rendering/
├── apps/
│ ├── api/ # Backend Express.js API
│ │ ├── src/
│ │ ├── package.json
│ │ └── .env
│ └── web/ # Aplikasi Frontend Next.js
│ ├── app/
│ ├── components/
│ ├── public/
│ ├── package.json
│ └── .env.local
└── package.json # Konfigurasi workspace root
🛠️ Tech Stack
Backend (API)
- Express.js 5.1.0 - Framework web yang cepat dan fleksibel.
- Supabase - Solusi database dan penyimpanan file.
- Multer 2.0.2 - Penanganan data form multipart untuk unggah file.
- CORS - Cross-origin resource sharing.
- dotenv - Manajemen variabel lingkungan.
Frontend (Web)
- Next.js 15.4.6 - Framework React dengan kemampuan SSR.
- React 19.1.0 - Library UI.
- Tailwind CSS - Framework CSS utility-first.
- Geist Font - Tipografi modern.
- Axios - Client HTTP untuk permintaan API.
🚀 Memulai
Prasyarat
- Node.js (v18 atau lebih baru).
- npm atau Yarn package manager.
- Akun Supabase (tersedia paket gratis di supabase.com).
Pengaturan Supabase
- Buat proyek baru di Supabase.
- Buat storage bucket bernama
products. - Atur bucket menjadi akses publik.
- Dapatkan URL Supabase dan Service Role Key dari pengaturan proyek.
Pengaturan API
-
Navigasi ke direktori API
cd apps/api -
Install dependensi
npm install -
Buat file environment Buat file
.envdengan isi berikut:PORT=4000 SUPABASE_URL=url_proyek_supabase_anda SUPABASE_SERVICE_ROLE_KEY=service_role_key_supabase_anda SUPABASE_BUCKET=products CORS_ORIGIN=http://localhost:3000 -
Jalankan server API
npm run devAPI akan berjalan di
http://localhost:4000
Pengaturan Aplikasi Web
-
Navigasi ke direktori web
cd apps/web -
Install dependensi
npm install -
Buat file environment Buat file
.env.local:NEXT_PUBLIC_API_URL=http://localhost:4000 -
Jalankan server pengembangan
npm run dev -
Akses aplikasi Buka http://localhost:3000 di browser Anda.
📡 Endpoint API
| Metode | Endpoint | Deskripsi |
|---|---|---|
| GET | /api/products |
Mengambil semua produk |
| POST | /api/products |
Membuat produk baru |
| PUT | /api/products/:id |
Memperbarui produk yang sudah ada |
| DELETE | /api/products/:id |
Menghapus produk |
| POST | /api/upload |
Mengunggah gambar produk |
💻 Penggunaan
-
Melihat Produk
- Halaman beranda menampilkan semua produk dalam tata letak grid.
- Setiap produk menampilkan gambar, nama, dan deskripsi.
-
Menambah Produk Baru
- Klik tombol "Add Product".
- Isi detail produk (nama, deskripsi, harga).
- Unggah gambar produk.
- Kirim formulir untuk membuat produk.
-
Menghapus Produk
- Klik tombol hapus pada kartu produk.
- Konfirmasi penghapusan.
- Produk dan gambar terkait akan dihapus.
🔧 Variabel Lingkungan
API (.env)
PORT- Port server API (default: 4000).SUPABASE_URL- URL proyek Supabase Anda.SUPABASE_SERVICE_ROLE_KEY- Service role key Supabase untuk operasi admin.SUPABASE_BUCKET- Nama storage bucket untuk gambar produk.CORS_ORIGIN- Origin CORS yang diizinkan (URL frontend).
Web (.env.local)
NEXT_PUBLIC_API_URL- URL Backend API (default: http://localhost:4000).
🎓 Tujuan Pembelajaran
Proyek ini mengajarkan:
- Struktur dan manajemen monorepo.
- Server-side rendering dengan Next.js.
- Pengembangan API RESTful dengan Express.js.
- Penanganan unggah file dengan Multer.
- Integrasi penyimpanan cloud dengan Supabase.
- Pola dan hook React modern.
- Styling dengan Tailwind CSS.
- Konfigurasi berbasis lingkungan.
🤝 Kontribusi
- Fork repositori ini.
- Buat branch fitur (
git checkout -b feature/FiturLuarBiasa). - Commit perubahan Anda (
git commit -m 'Menambah FiturLuarBiasa'). - Push ke branch tersebut (
git push origin feature/FiturLuarBiasa). - Buka Pull Request.
📄 Lisensi
Proyek ini bersifat open source dan tersedia untuk tujuan edukasi.