Fullstack Application (Next.js + Express.js + MySQL + Prisma)
Proyek ini merupakan aplikasi berbasis web yang terdiri atas dua komponen utama:
- Frontend — dibangun menggunakan Next.js (TypeScript) untuk menampilkan antarmuka pengguna.
- Backend — menggunakan Express.js (TypeScript) yang terhubung ke basis data MySQL melalui Prisma ORM.
Struktur proyek ini mendukung pengembangan modular di mana frontend dan backend dikelola secara terpisah dalam subfolder tersendiri.
-
Login & Signup versi mobile
-
Dashboard versi mobile
-
Dashboard darkmode versi mobile
project-root/
├── frontend/ → Next.js (TypeScript)
├── backend/ → Express.js (TypeScript + Prisma)
└── docker-compose.yml
a. Unduh dan Instal Docker
- Buka situs resmi Docker: https://www.docker.com/products/docker-desktop
- Pilih versi sesuai sistem operasi (Windows / macOS / Linux)
- Setelah instalasi selesai login dengan akun yang ingin digunakan
- pastikan Docker Desktop sudah berjalan
Anda juga harus menginstal WSL (Windows Subsystem for Linux), jika ketika anda menginstall docker kemudian diminta untuk menginstall WSL, anda harus menerima permintaan tersebut atau juga bisa dilakukan instalasi WSL secara manual yang dapat diakses pada link berikut: https://learn.microsoft.com/en-us/windows/wsl/install.
b. Verifikasi Instalasi
docker --version
Jika muncul versi Docker, instalasi berhasil.
git clone --recurse-submodules https://github.com/HowdyHowe/frontpage.git
cd frontpage
Repositori ini berisi dua folder utama: frontend dan backend.
Pastikan Anda berada di folder "/frontpage", lalu jalankan:
docker-compose -f docker-compose.dev.yml up --build
Perintah ini akan melakukan beberapa hal otomatis:
- Membangun image backend dan frontend
- Menginstal semua dependensi (npm install)
- Menjalankan database MySQL, backend, dan frontend dalam container terpisah
catatan: Waktu yang digunakan untuk membangun project bervariasi, dan sangat bergantung dengan kecepatan jaringan atau performa device yang digunakan, estimasi waktu untuk membangun project adalah 10-20 menit dalam kondisi normal. Dan juga perfoma dari website juga sangat bergantung dengan performa dari device yang digunakan.
Akses frontend dari aplikasi untuk melihat website.
- Frontend (Next.js): http://localhost:3000
- Backend (Express.js API): http://localhost:5000
- Database (MySQL): localhost:3306
catatan: Beberapa halaman mungkin akan terasa berat dan memuat sedikit lama, itu dikarenakan penggunaan docker dalam mode development. Tetapi biasanya setelah dimuat halaman tersebut, maka saat kembali lagi akan lebih cepat karena sudah masuk ke cache.
docker compose down
atau
ctrl + c
Jika tidak ingin menggunakan Docker, jalankan frontend dan backend secara manual.
Pastikan telah menginstal:
- Node.js (versi 22 atau lebih baru) → https://nodejs.org
- npm (biasanya sudah terpasang bersama Node.js)
- XAMPP → https://www.apachefriends.org/download.html
- Jalankan XAMPP Control Panel
- Aktifkan modul Apache dan MySQL
- Klik tombol Admin di MySQL untuk membuka phpMyAdmin
- Buat database baru bernama: frontpage Port default MySQL di XAMPP adalah 3306
cd backend
npm install
Buat file .env di folder backend: DATABASE_URL="mysql://root:@localhost:3306/frontpage" PORT=5000
Generate Prisma Client dan sinkronkan database:
npm run prisma:generate
npm run prisma:push
Jalankan server backend:
npm run dev
Backend berjalan di: http://localhost:5000
cd ../frontend
npm install
Buat file .env.local: NEXT_PUBLIC_API_URL=http://localhost:5000
Jalankan frontend:
npm run dev
Frontend berjalan di: http://localhost:3000
| Komponen | Alamat Lokal | Deskripsi |
|---|---|---|
| Frontend | http://localhost:3000 | Tampilan antarmuka utama pengguna |
| Backend | http://localhost:5000 | API utama aplikasi |
| Database | localhost:3306 | Server MySQL (via XAMPP atau Docker) |
Frontend:
- Next.js (TypeScript)
- TailwindCSS
- Axios (untuk komunikasi API)
Backend:
- Express.js (TypeScript)
- Prisma ORM
- MySQL (melalui XAMPP atau Docker)
- dotenv, cors, morgan
Tools & Infrastruktur:
- Docker & Docker Compose
- Git Submodules
- Node.js v22.x
Proyek ini menggunakan arsitektur client-server di mana:
Frontend (Client): Bertanggung jawab menampilkan antarmuka pengguna dan mengirimkan permintaan HTTP ke server backend.
Backend (Server): Menerima permintaan dari frontend, mengelola logika bisnis, dan melakukan interaksi dengan database MySQL.
Database (MySQL): Menyimpan data utama seperti pengguna, artikel, dan kategori film (atau konten terkait aplikasi).
Alur data: Frontend (Next.js) → Backend (Express.js) → Database (MySQL)
Anda dapat memilih dua cara untuk menjalankan proyek:
- Menggunakan Docker — direkomendasikan untuk kemudahan setup.
- Manual Setup dengan XAMPP — jika Docker tidak berfungsi.
- Jika @prisma/client error, jalankan ulang: npm run prisma:generate.
- Pastikan MySQL aktif sebelum menjalankan backend.
- Jika port 3000 atau 5000 sudah digunakan, ubah di file .env masing-masing proyek.
- "npm error code ECONNRESET" adalah error yang terjadi dikarenakan masalah pada jaringan internet anda.
Anda dapat memodifikasi dan menggunakan proyek ini untuk kebutuhan pribadi atau penelitian.
© 2025 - Fullstack Frontpage Application












