Back-End | Deskripsi | User Analysis | Spesifikasi | Konsep OOP | Tipe Desain | Hasil dan Pembahasan | Implementasi | Saran | Job Desc |
---|
^ kembali ke atas ^
https://github.com/caresomebody/SIMARU-API
^ kembali ke atas ^
SIMARU (Sistem Management Peminjaman Ruangan)
Selama penyelenggaraan acara kepanitiaan maupun organisasi di IPB, salah satu hal yang perlu dipersiapkan adalah ruangan. Banyak jenis ruangan yang dapat dipinjam dengan berbagai macam cara peminjaman. Variasi dalam peminjaman ruangan tersebut kerap menimbulkan pertanyaan bagi panitia penyelenggara, seperti informasi terkait ketersediaan, kapasitas, waktu operasional, fasilitas serta narahubung yang harus dihubungi. Dengan adanya permasalahan yang dialami tersebut, kami memutuskan untuk membuat suatu platform terpusat mengenai informasi setiap ruangan yang ada di IPB. Platform tersebut bernama SIMARU.
SIMARU ( Sistem Management Peminjaman Ruang ) merupakan platform berbasis website yang diperuntukkan untuk mahasiswa IPB dalam melakukan pencarian informasi dan pengajuan peminjaman dari data ruangan yang tersedia. Fitur yang disediakan oleh Simaru berupa Data Ruangan, Ajukan Peminjaman, Data Peminjaman, dan Pengajuan. Dengan adanya platform informasi ini, tentunya akan membuat alur peminjaman setiap ruangan menjadi lebih terstruktur, informasi jadwal booking setiap ruangan akan lebih terpusat, dan proses peminjaman dapat dilakukan dengan lebih efektif dan efisien.
“Sebagai panitia sebuah acara di ipb saya ingin tahu data realtime ruangan mana di IPB yang sudah terbooking, agar saya dapat menyesuaikan dengan jadwal peminjaman untuk booking ruangan di acara saya.”
“Sebagai panitia sebuah acara di ipb saya ingin tahu kapasitas ruangan yang ada di IPB, agar saya dapat menyesuaikan peminjaman ruangan untuk acara saya.”
“Sebagai panitia sebuah acara di ipb saya ingin tahu fasilitas yang tersedia di ruangan yang akan dipinjam, agar saya dapat menyesuaikan kebutuhan acara dengan fasilitas ruangan.”
“Sebagai panitia sebuah acara di ipb saya ingin tahu narahubung dari setiap ruangan yang ada di IPB, agar saya dapat lebih mudah dalam menghubungi pihak ruangan yang ingin saya sewa nantinya”
- Processors : AMD Ryzen 5 3600, Intel Core i5-8250U 1.60 GHz
- Memory : 16GB, 8GB RAM
- VGA : Radeon RX 570, NVIDIA GeForce® 940MX
MERN adalah singkatan dari MongoDB, Express, React, Node yang merupakan tech stack yang digunakan pada pengembangan aplikasi kali ini.
Nama | Fungsi |
---|---|
MongoDB | Database |
ExpressJS | NodeJS Web Framework |
NodeJS | JavaScript Web Server |
React JS | Client-side JavaScript framework (Front-End) |
MERN adalah salah satu dari beberapa variasi stack MEAN (MongoDB, Express, Angular, Node), di mana Angular sebagai framework front-end tradisional digantikan dengan React.js. Variasi lainnya adalah MEVN (MongoDB, Express, Vue, Node) dan framework front end dengan bahasa pemrograman JavaScript apapun dapat digunakan.
-
Object, Method dan Property
- Object adalah kesatuan dasar dari OOP dan merepresentasikan bentuk nyata dari class.
- Method atau behavior adalah suatu operasi berupa fungsi-fungsi yang dapat dilakukan oleh suatu object. Method didefinisikan pada class akan tetapi dipanggil melalui object. Metode menentukan perilaku object, yakni apa yang terjadi ketika object tersebut dibuat serta berbagai operasi yang dapat dilakukan object.
- Property adalah bagian dari sebuah class yang mendeskripsikan sifat yang dimiliki oleh class tersebut.
-
Class
- Cetak biru (blueprint) definisi pengguna atau prototipe dari object yang dibuat. Class yang telah diciptakan tersebut merepresentasikan seperangkat properti atau method yang umum dari semua object dari satu tipe data.
-
Encapsulation
- Metode penyatuan data atau metode yang berbeda yang “dikapsulkan” menjadi satu unit data. Encapsulation juga dapat diartikan sebagai salah satu cara untuk melindungi data agar tidak dapat diakses oleh apapun yang berada diluar kapsul.
-
Inheritance
- Konsep yang memungkinkan class yang telah terbentuk untuk mewariskan sifat-sifatnya (field dan method) kepada class yang baru dibuat.
-
Getter and Setter
- Metode untuk mengambil dan memperbarui nilai dari sebuah variabel, terutama pada variabel yang terdapat pada enkapsulasi.
-
Message Passing
- Metode untuk mengirim pesan dari sebuah objek dari satu bagian ke bagian lainnya (contoh produsen dan konsumen). Metode ini digunakan ketika bagian tersebut tidak memiliki ruang penyimpanan atau perangkat keras yang dapat dibagi sebagai cara untuk berkomunikasi.
Kami menggunakan design pattern MVC untuk pengembangan web kami, penjelasannya adalah sebagai berikut:
- Model: Mengelola logika bisnis aplikasi yang menentukan bagaimana data harus disimpan, dibuat, dan dimodifikasi
- View: Representasi visual dari data atau informasi
- Controller: Menafsirkan peristiwa yang dibuat pengguna dan mengubahnya menjadi perintah untuk model yang nantinya akan mengubah tampilan
^ kembali ke atas ^
Dalam pengembangan sistem Simaru, kami menggunakan metode waterfall (Air terjun). Metode ini menggambarkan pendekatan yang cukup sistematis juga berurutan pada pengembangan software. Tahapan yang dilakukan terdiri dari Requirement, Design System, Coding, Integration dan Operation, serta Maintenance. Berikut merupakan uraian dari tahapan yang kami lakukan :
No | Tahapan | Uraian |
---|---|---|
1. | Requirement Analysis | Pada tahapan ini dilakukan untuk mengetahui kebutuhan pengguna atas perangkat lunak yang diharapkan. Informasi kebutuhan tersebut bisa diperoleh dengan cara wawancara langsung, diskusi, dan studi literatur. Kemudian, hasil dari informasi tersebut akan dianalisis dan dikelompokkan berdasarkan kebutuhan pengguna |
2. | Design System | Pada tahap ini akan dibuat software requirement dimulai dari perancangan perangkat lunak, pembuatan ERD, Use case diagram, Activity diagram, Class diagram, Arsitektur sistem, serta representasi interface |
3. | Coding & System | Tahapan ini merupakan implementasi dari perancangan yang dibuat. Sistem informasi akan dibuat menggunakan bahasa pemrograman JavaScript dengan Framework React JS. Setelah itu akan dilakukan testing terhadap sistem yang telah dibuat untuk mengetahui kesalahan dari sistem tersebut dan dilakukan perbaikan |
4. | Integration | Tahap ini merupakan tahapan final. Setelah melakukan tiga tahapan di atas, maka sistem telah siap untuk digunakan oleh user |
5. | Operation & Maintenance | Pemeliharaan akan dilakukan apabila terdapat update fitur atau memperbaiki kesalahan yang ditemukan pada saat sistem digunakan langsung oleh user |
Kami menawarkan ide sebuah platform dimana mahasiswa IPB dapat melakukan peminjaman ruangan yang ada di IPB. Pengguna dapat melihat ketersediaan ruangan pada daftar ruangan dan juga fasilitas pada ruangan secara lengkap seperti kapasitas orang, luas ruangan dan peralatan pada detail ruangan. Pengguna dapat melakukan pengajuan untuk meminjam ruangan dengan memasukan tujuan peminjaman ruangan dan juga memilih jam serta tanggal pada detail ruangan. Kemudian pengajuan itu akan masuk ke dalam daftar pending pada aplikasi penjaga ruangan sebagai admin yang nantinya pengajuan tersebut dapat disetujui oleh admin. Jika sudah diterima, maka permohonan tersebut akan masuk ke dalam list yang ada pada daftar pengajuan bahwa ruangan sudah dipesan oleh pihak yang memesan dengan rinci.
Fitur-fitur aplikasi Simaru antara lain :
- Data Ruangan
Pada fitur “Data Ruangan” pengguna dapat melihat daftar ruangan yang ada di IPB lengkap dengan informasi detail yang meliputi foto ruangan, deskripsi, kapasitas, ukuran, waktu operasional, fasilitas yang tersedia, dan narahubung dari ruangan tersebut.
- Ajukan Peminjaman
Fitur “Ajukan Peminjaman” dapat digunakan pengguna apabila ingin mengajukan peminjaman ruangan. Pada fitur ini pengguna diwajibkan untuk mengisikan form pengajuan yang tersedia.
- Data Peminjaman
Fitur “Data Peminjaman” berisikan informasi realtime ruangan yang sudah terbooking. Fitur ini membantu pengguna untuk menyesuaikan pengajuan berdasarkan ruangan dan waktu peminjaman yang akan ia ajukan.
- Pengajuan
Pada fitur “Pengajuan” pengguna dapat melihat daftar pengajuan yang telah ia buat lengkap dengan status dari pengajuan tersebut.
- CREATE
- Pengguna dapat membuat pengajuan permintaan untuk booking ruangan dengan atribut Id pengajuan, dokumen, deskripsi, tanggal mulai, tanggal selesai, waktu mulai, waktu selesai.
- READ
- Pengguna dapat melihat daftar ketersediaan ruangan yang terdapat pada homepage
- Pengguna dapat melihat data detail ruangan IPB
- Pengguna dapat melihat detail pengajuan dari pengajuan yang telah ia buat
- UPDATE
- Pengguna dapat mengupdate pengajuan yang telah ia ajukan sebelumnya selama admin belum menanggapi pengajuan tersebut
- DELETE
- Pengguna dapat menghapus pengajuan yang telah ia buat sebelumnya
Endpoint API | Fungsi | Method |
---|---|---|
https://simaru-api.herokuapp.com/api/login | Login & Auth | POST |
https://simaru-api.herokuapp.com/api/ruangan | READ semua ruangan | GET |
https://simaru-api.herokuapp.com/api/ruangan/:id | READ sebuah ruangan | GET |
https://simaru-api.herokuapp.com/api/pengajuan/store | CREATE Pengajuan | POST |
https://simaru-api.herokuapp.com/api/pengajuan/ | READ semua pengajuan | GET |
https://simaru-api.herokuapp.com/api/pengajuan/update/:id | UPDATE data pengajuan | PUT |
https://simaru-api.herokuapp.com/api/pengajuan/:id | READ data sebuah pengajuan | GET |
https://simaru-api.herokuapp.com/api/pengajuan/delete/:id | DELETE data pengajuan | DELETE |
https://simaru-api.herokuapp.com/api | READ semua user & admin | GET |
https://simaru-api.herokuapp.com/api/admin | READ semua admin | GET |
NOTES
Karena belum terintegrasi dengan API IPB, berikut username dan password untuk mencoba aplikasi kami:
Username | Password | Role |
---|---|---|
pak_kunci | user | Admin |
panitia_ipb | user | User |
Alternatif Link:
Untuk pengembangan selanjutnya diharapkan bisa mengintegrasi AUTH dari SIMARU dengan API resmi dari IPB, serta dapat menampilkan data ruangan yang sesuai dengan data asli dari IPB (apabila ada)
👦 Ali Naufal Ammarullah | G64180080
Role: Project Manager & Back-End
Email: ali_naufal26@apps.ipb.ac.id
GitHub: @caresomebody
👦 Muhammad Rayhanendra Adikoesoemo | G64180098
Role: Front-End
Email: rayhanendra_a6@apps.ipb.ac.id
GitHub: @rayhanendra
👩 Zahwa Wahyu Riana | G64180070
Role: Front-End & System Analyst
Email: zahwa_riana31@apps.ipb.ac.id
GitHub: @zahwawrr
👩 Mutia Marcha Fatika | G64180085
Role: Front-End & UI/UX Designer
Email: mutia_kemala@apps.ipb.ac.id
GitHub: @mutiamarchaa
👦 Muhammad Hafizhan | G64180100
Role: System Analyst & UI/UX Designer
Email: hafizhan_667@apps.ipb.ac.id
GitHub: @Muffin667