Skip to content

Instantly share code, notes, and snippets.

@hscstudio
Created January 21, 2018 09:55
Show Gist options
  • Save hscstudio/ee610bc2122806211b848427b05e273a to your computer and use it in GitHub Desktop.
Save hscstudio/ee610bc2122806211b848427b05e273a to your computer and use it in GitHub Desktop.

User Requirements Online Reservation System

Aplikasi administrasi peminjaman barang berbasis online

Main Features

  • Login & register
  • Autentikasi via social media
  • Pencarian data barang
  • Proses peminjaman
  • Kelola data barang
  • Kelola data pelanggan
  • Kelola data peminjaman
  • Kelola data admin

User Flow Systems

Alur sistem berdasarkan experience user.

Frontend

  1. User melihat halaman muka aplikasi
  2. User melakukan pencarian barang
  3. User menentukan pilihan barang
  4. User diarahkan ke halaman keranjang pemesanan
  5. Jika user sudah login maka langsung ke poin 6, jika user belum login maka ada pilihan login atau register
  6. User memilih apakah barang mau diambil sendiri atau dikirim. Jika diambil sendiri maka ke no 8, jika dikirim maka ke no 7
  7. User memasukkan alamat pengiriman atau memilih data pengiriman jika sudah pernah memasukkannya.
  8. User diarahkan ke halaman konfirmasi peminjaman, berisi total bayar, dan kemana harus bayar
  9. User mengunggah bukti pembayaran
  10. User melihat status peminjaman pada history peminjaman
  11. System mengirimkan notifikasi jika peminjaman diterima atau ditolak
  12. Jika diterima, user bisa melihat informasi selanjutnya terkait peminjaman

Backend

  1. Admin login ke aplikasi
  2. Admin dapat melakukan pengelolaan data: barang, user/pelanggan, dan peminjaman
  3. Admin melihat notifikasi peminjaman
  4. Admin menyetujui atau menolak peminjaman

Detail Page

Frontend

  • Halaman muka aplikasi menampilkan:
    • Image Slideshow (gambar seluruh barang,prosedur peminjaman,company profil,promo)
    • Daftar barang favorit
    • Statistik Peminjaman
    • Kontak yang bisa dihubungi
    • Testimoni pelanggan
    • Link login/register
  • Halaman pencarian, sorting dan filtering
  • Halaman detail barang berisi
    • Informasi barang
    • Gambar/Video
    • Kolom komentar
    • Kolom review
  • Halaman keranjang pemesanan berisi
    • data barang yang dipesan
    • link login/register
    • pilihan pengiriman dan input baru
    • link checkout
  • Halaman konfirmasi pemesanan berisi
    • data barang
    • total biaya peminjaman
  • Halaman profile user berisi
    • update data user
    • histori peminjaman (status)
    • detail histori peminjaman untuk upload bukti pembayaran
  • Halaman login
  • Halaman register

Backend

  • Halaman login
  • Halaman dashboard
  • Halaman kelola barang
  • Halaman kelola user
  • Halaman kelola customer, and data pengiriman
  • Halaman kelola pemesanan dan detailnya
  • Menu edit review
  • Menu edit comment

Database Schema

Tabel goods

Tabel ini berfungsi untuk menyimpan data barang, pengkategoriannya, stock yang dimiliki (adapun stock available dihitung by sistem), biaya peminjaman perhari, status barang bisa dipinjam atau tidak.

CREATE TABLE IF NOT EXISTS goods (
  id INTEGER PRIMARY KEY AUTO_INCREMENT, 
  name VARCHAR(255), 
  description TEXT,
  image VARCHAR(255),
  category VARCHAR(255),
  stock INTEGER,
  rate INTEGER,
  created DATETIME,
  modified DATETIME,
  status BOOLEAN
);

Tabel goods_file

Tabel ini berfungsi untuk menyimpan data barang, pengkategoriannya, stock yang dimiliki (adapun stock available dihitung by sistem), biaya peminjaman perhari, status barang bisa dipinjam atau tidak.

CREATE TABLE IF NOT EXISTS goods_file (
  id INTEGER PRIMARY KEY AUTO_INCREMENT, 
  goods_id INTEGER,
  title VARCHAR(255), 
  file VARCHAR(255),
  type ENUM('IMAGE','PDF','VIDEO'),
  created DATETIME,
  modified DATETIME,
  status BOOLEAN
);

Tabel goods_review

Tabel ini berfungsi untuk menyimpan data review customer terhadap suatu barang yang telah dipinjamnya.

CREATE TABLE IF NOT EXISTS goods_review (
  id INTEGER PRIMARY KEY AUTO_INCREMENT, 
  goods_id INTEGER,
  user_id INTEGER,
  rating INTEGER,
  review TEXT, 
  response_admin TEXT,
  created DATETIME,
  modified DATETIME,
  status BOOLEAN
);

Tabel goods_comment

Tabel ini berfungsi untuk menyimpan data komentar atau pertanyaan customer terhadap suatu barang

CREATE TABLE IF NOT EXISTS goods_comment (
  id INTEGER PRIMARY KEY AUTO_INCREMENT, 
  reply_id INTEGER,
  goods_id INTEGER,
  user_id INTEGER,
  rating INTEGER,
  comment TEXT, 
  created DATETIME,
  modified DATETIME,
  status BOOLEAN
);

Tabel user

Tabel ini berfungsi untuk menyimpan data user login, termasuk levelnya apakah admin, atau petugas (kasir), atau user biasa, data social media supaya bisa login menggunakan social media, serta status user aktif atau inaktif

CREATE TABLE IF NOT EXISTS user (
  id INTEGER PRIMARY KEY AUTO_INCREMENT, 
  username VARCHAR(255), 
  password VARCHAR(255),
  level ENUM('ADMIN','STAFF','USER'),
  facebook VARCHAR(255),
  google VARCHAR(255),
  twitter VARCHAR(255),
  instagram VARCHAR(255),
  created DATETIME,
  modified DATETIME,
  status BOOLEAN
);

Tabel customer

Tabel ini berfungsi untuk menyimpan data diri customer, termasuk levelnya apakah PREMIUM atau REGULER

CREATE TABLE IF NOT EXISTS customer (
  user_id INTEGER PRIMARY KEY, 
  name VARCHAR(255), 
  gender BOOLEAN,
  born VARCHAR(100),
  birth_day DATE,
  address TEXT,
  phone VARCHAR(50),
  point INTEGER,
  level ENUM('PREMIUM','REGULER')
  created DATETIME,
  modified DATETIME,
  status BOOLEAN
);

Tabel customer_shipment

Tabel ini berfungsi untuk menyimpan data alamat pengiriman customer, dipisah dengan tabel customer supaya memungkinkan bagi customer menentukan alamat pengiriman yang berbeda

CREATE TABLE IF NOT EXISTS customer_shipment (
  id INTEGER PRIMARY KEY AUTO_INCREMENT, 
  user_id INTEGER, 
  title VARCHAR(255), 
  name VARCHAR(255), 
  address TEXT, 
  phone VARCHAR(50),
  created DATETIME,
  modified DATETIME,
  status BOOLEAN
);

Tabel reservation

Tabel ini berfungsi untuk menyimpan data pemesanan seorang customer yang mencatat waktu peminjaman barang, jaminan, total tagihan, informasi pengiriman barang jika barang dikirim, catatan pemesanan, bukti pembayaran, status pembayaran, catatan oleh admin ketika reservasi diterima admin,status pemesanan apakah awaiting (menunggu atau status awal), rejected (ditolak), approved (diterima), borrowed (dipinjam), finished (selesai barang kembali), unfinished (barang tidak kembali,rusak,dicuri,dsb).

CREATE TABLE IF NOT EXISTS reservation (
  id INTEGER PRIMARY KEY AUTO_INCREMENT, 
  user_id INTEGER, 
  start DATETIME, 
  end DATETIME,
  warranty TEXT,
  bill INTEGER,
  shipment BOOLEAN,
  customer_shipment INTEGER,
  user_note TEXT,
  payment_proof VARCHAR(255), 
  paid BOOLEAN,
  admin_note TEXT,
  created DATETIME,
  modified DATETIME,
  status INTEGER
);

Tabel reservation_detail

Tabel ini berfungsi untuk menyimpan detail dari pemesanan sehingga seorang customer dimungkinkan untuk memesan lebih dari satu barang. Status berisi true atau false, jika diset false oleh admin maka barang tersebut tidak dapat dipinjamkan mungkin karena ternyata stock habis atau karena rusak dsb.

CREATE TABLE IF NOT EXISTS reservation_detail (
  reservation_id INTEGER, 
  goods_id INTEGER,
  created DATETIME,
  modified DATETIME,
  status BOOLEAN
);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment