Skip to content

Solakhuddin/sewaaja

Repository files navigation

sewaaja

Repo aplikasi sewa alat olahraga lari, hiking & camping

SewaAlat - Aplikasi Penyewaan Alat (Full-Stack)

SewaAlat adalah aplikasi web full-stack yang dirancang sebagai sistem manajemen penyewaan alat, menampilkan alur kerja realistis dengan proses pemesanan oleh pelanggan dan dashboard pengelolaan oleh admin.

## Tentang Proyek

Proyek ini dibangun untuk mensimulasikan sistem penyewaan di dunia nyata di mana efisiensi operasional adalah kunci. Aplikasi ini memisahkan alur kerja antara pelanggan yang dapat memesan tanpa perlu membuat akun (Guest Checkout) dan admin/kasir yang memiliki dashboard terproteksi untuk mengelola seluruh siklus pemesanan, mulai dari konfirmasi, pengembalian, hingga manajemen inventaris.


## Fitur Utama

Untuk Pelanggan (Guest)

  • Katalog Produk: Melihat semua alat yang tersedia untuk disewa.
  • Detail Produk: Melihat informasi spesifik, harga, dan deskripsi untuk setiap alat.
  • Pengecekan Ketersediaan Real-time: Memilih rentang tanggal dan langsung mendapatkan informasi ketersediaan stok.
  • Form Pemesanan Sederhana: Mengajukan permintaan sewa hanya dengan mengisi nama, nomor telepon, dan alamat.

Untuk Admin/Kasir

  • Otentikasi Aman: Sistem login khusus untuk admin menggunakan JWT.
  • Dashboard Manajemen Booking:
    • Melihat dan mengonfirmasi permintaan sewa baru.
    • Melacak alat yang sedang disewa.
    • Mendapatkan notifikasi untuk alat yang sudah melewati tenggat pengembalian.
    • Menyelesaikan transaksi dengan menandai alat sebagai "sudah kembali".
  • Manajemen Inventaris (CRUD):
    • Menambah item baru ke dalam katalog.
    • Mengedit detail item yang sudah ada.
    • Menghapus item dari katalog.
  • Upload Gambar: Mengunggah gambar produk dengan mudah melalui integrasi layanan cloud (Cloudinary).

## Tantangan & Solusi

  • Logika Ketersediaan: Mengimplementasikan algoritma untuk mengecek tumpang tindih (overlap) rentang tanggal booking terhadap total stok untuk memberikan ketersediaan secara real-time.
  • Arsitektur Asimetris: Melakukan refactoring signifikan dari model "semua pengguna punya akun" menjadi "guest checkout & admin dashboard" untuk lebih sesuai dengan kasus bisnis nyata.
  • Manajemen File: Mengintegrasikan Cloudinary untuk menangani upload gambar, menjaga backend tetap stateless dan efisien tanpa perlu mengelola penyimpanan file secara manual.

## Teknologi Yang Digunakan (Tech Stack)

  • Frontend: React.js, Vite, Tailwind CSS, React Router, Axios
  • Backend: Node.js, Express.js
  • Database: MongoDB dengan Mongoose
  • Otentikasi: JSON Web Token (JWT), bcrypt.js
  • Penyimpanan Gambar: Cloudinary

## Instalasi & Menjalankan Lokal

Prasyarat:

  • Node.js (v18+)
  • npm / yarn
  • Akun MongoDB Atlas
  • Akun Cloudinary

Backend:

# 1. Clone repository
git clone (https://github.com/Solakhuddin/sewaaja.git)
cd sewaaja/sewa-alat-backend

# 2. Install dependencies
npm install

# 3. Buat file .env dan isi variabelnya
cp .env.example .env 
# (isi MONGO_URI dan JWT_SECRET)

# 4. Jalankan server
node index.js

Frontend:

# 1. Buka terminal baru dan masuk ke folder frontend
cd ../sewa-alat-frontend

# 2. Install dependencies
npm install

# 3. Buat file .env.local dan isi variabelnya
cp .env.local.example .env.local
# (isi VITE_API_BASE_URL, VITE_CLOUDINARY_CLOUD_NAME, dll.)
# VITE_CLOUDINARY_CLOUD_NAME=daib0xlla
# VITE_CLOUDINARY_UPLOAD_PRESET=sewaaja

# 4. Jalankan server development
npm run dev

About

Repo aplikasi sewa alat olahraga, hiking & camping

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages