Nama Sistem : GoFind
Paralel Praktikum : P1
Nomor Kelompok : 03
| Deskripsi | Analisis Pengguna | Lingkungan | Konsep OOP | Tipe Desain | Pembahasan | Implementasi | Saran | Developer |
|---|
Aplikasi GoFind merupakan aplikasi yang digunakan untuk mencari projek ataupun anggota tim untuk projeknya. Berawal dari kebutuhan mahasiswa khususnya mahasiswa IPB yang kesulitan untuk mencari partner dalam menjalankan projeknya. selain itu terdapat mahasiswa yang juga kesulitan mencari proyek yang sesuai untuk pengembangan dirinya. melalui aplikasi ini, diharapkan banyak mahasiswa terbantu untuk mencari dan mendapatkan projek atau partner tim yang sesuai dengan keinginannya masing-masing.
Pada aplikasi ini, user bisa memperlihatkan track record serta keahlian yang mereka miliki untuk bisa ikut dalam sebuah proyek nyata. Selain itu, user juga bisa memasukan media sosial dan CV sehingga user lain bisa langsung melihat social media dan CV-nya secara langsung. User juga bisa membuat projek dengan memasukan judul, deskripsi, waktu pembukaan lowongan projek, dan foto untuk memperlihatkan informasi lengkap proyek. Selanjutnya, user juga bisa memilih orang yang sesuai dengan kriteria yang diinginkan untuk menjadi anggota tim projeknya dengan cara melihat role, specialist, social media, cv serta track record dari orang tersebut. User bisa membuat atau mengikuti proyek apapun tanpa terpaku dengan jurusan atau departemen tertentu. Namun user hanya dapat berada dalam satu projek dalam satu waktu. Dengan adanya solusi tersebut, diharapkan user dapat meningkatkan kualitas kemampuannya dan memperbanyak pengalaman mereka.
- Sebagai Mahasiswa IPB yang sedang mencari rekan untuk mengikuti lomba/projek, saya ingin menemukan partner yang sesuai dengan keahlian yang saya butuhkan untuk membantu saya dalam mengerjakan proyek.
- Sebagai Mahasiswa IPB yang memiliki keahlian yang ingin disalurkan, saya ingin menemukan lomba atau projek nyata yang cocok dengan keahlian yang saya miliki saat ini.
- Nama : Samsung Galaxy A11
- Berat : 177 gram (g)
- Material : Depan kaca, bingkai dan belakang plastik
- Jenis dan Ukuran Layar : PLS IPS dan 6,4 inci (~81.6% rasio layar ke bodi)
- Resolusi Layar : 720 x 1.560 piksel, 19.5:9 ratio (~268 piksel per inci)
- Chipset : Qualcomm Snapdragon 450 (11 nm)
- CPU : Octa-core 1.8 GHz Cortex-A53
- GPU : Adreno 506
- RAM : 3 GB
- Memori Internal : 64 GB
- Kamera Belakang : 13 MP (f/1.8, 27mm wide, AF) + 5 MP (f/2.2, 115˚ ultrawide) +
2 MP (f/2.4, depth) - Kamera Depan : 8 MP, f/2.0
- Bluetooth : 4.2, A2DP, LE
- Sensor : Sidik jari (di belakang), accelerometer, proximity
- Baterai : Li-Po 4000 mAh, non-removable, Fast charging 15W
Aplikasi GoFind adalah aplikasi yang berbasis Mobile yang dibuat menggunakan framework Flutter SDK (Software Development Kit) yang dikembangkan oleh Google untuk membuat aplikasi yang bagus dan bisa berjalan pada berbagai platform. Backend untuk aplikasi ini menggunakan MongoDB, Express, ODM Mongoose, dan Thunder Client.
Framework Frontend : Flutter SDK
Framework Backend : MongoDB, Express, ODM Mongoose, dan Thunder Client
Output : Mobile Application
Istilah enkapsulasi sebenarnya adalah kombinasi data dan fungsionalitas dalam sebuah unit tunggal sebagai bentuk untuk menyembunyikan detail informasi.Proses enkapsulasi memudahkan kita untuk menggunakan sebuah objek dari suatu kelas karena kita tidak perlu mengetahui segala hal secara rinci.Enkapsulasi menekankan pada antarmuka suatu kelas, atau dengan kata lain bagaimana menggunakan objek kelas tertentu. Contoh: kelas mobil menyediakan antarmuka fungsi untuk menjalankan mobil tersebut, tanpa kita perlu tahu komposisi bahan bakar, udara dan kalor yang diperlukan untuk proses tersebut.
Kita dapat mendefinisikan suatu kelas baru dengan mewarisi sifat dari kelas lain yang sudah ada.Penurunan sifat ini bisa dilakukan secara bertingkattingkat, sehingga semakin ke bawah kelas tersebut menjadi semakin spesifik. Sub kelas memungkinkan kita untuk melakukan spesifikasi detail dan perilaku khusus dari kelas supernya. Dengan konsep pewarisan, seorang programmer dapat menggunakan kode yang telah ditulisnya pada kelas super berulang kali pada kelas-kelas turunannya tanpa harus menulis ulang semua kodekode itu.
Kelas merupakan deskripsi abstrak informasi dan tingkah laku dari sekumpulan data. Kelas dapat diilustrasikan sebagai suatu cetak biru(blueprint) atau prototipe yang digunakan untuk menciptakan objek. Kelas merupakan tipe data bagi objek yang mengenkapsulasi data dan operasi pada data dalam suatu unit tunggal. Kelas mendefinisikan suatu struktur yang terdiri atas data kelas (data field), prosedur atau fungsi (method), dan sifat kelas (property).
Polimorfisme merupakan kemampuan objekobjek yang berbeda kelas namun terkait dalam pewarisan untuk merespon secara berbeda terhadap suatu pesan yang sama. Polimorfisme juga dapat dikatakan kemampuan sebuah objek untuk memutuskan method mana yang akan diterapkan padanya, tergantung letak objek tersebut pada jenjang pewarisan. Method overriding. Method name overloading.
Design Pattern MVC merupakan singkatan dari Model, View, dan Controller. konsep MVC ini membangun tampilan (view), model (data/interaksi web service), dan controler (pemrosesan data sebelum ditampilkan) secara terpisah. pada konsep ini, user yang berinteraksi dengan tampilan mengirimkan request kepada controller untuk kemudian diproses pada model. model yang mendapat request dari controller akan menngirimkan data kembali kepada controller dan selanjutnya ditampilkan pada view. secara umum, konsep mvc dapat digambarkan sebagai berikut.
penjelasan lebih detail mengenai ketiga bagian pada MVC dijelaskan pada poin poin berikut.
Model dalam pola desain MVC mewakili data aktual (real-time) yang akan digunakan dalam pengembangan aplikasi. misalnya, kita dapat memahami dengan bantuan skenario real-time bank di mana elemen ini akan menjadi nomor rekening, memiliki nama dan alamat seseorang. Untuk pemahaman yang lebih baik, Anda dapat mengatakan bahwa Model hanya dapat mencerminkan data aktual, bukan karakteristik atau fitur apa pun yang terkait dengan aplikasi. Ini berarti Anda tidak dapat memanipulasi cara data akan direpresentasikan atau diformat. Setiap item dalam kumpulan data akan mewakili modelnya sendiri saat data diambil. Terutama Model disimpan jauh dari bagian logika untuk kode yang rapi tetapi kadang-kadang mencakup logika validasi juga.
View atau tampilan dalam pola desain MVC mewakili Antarmuka yang digunakan oleh pengguna untuk berinteraksi dengan aplikasi. Pada framework flutter, view merupakan bagian kode program dart yang berisi elemen-elemen tampilan aplikasi untuk selanjutnya diatur oleh controller. View bertugas menyajikan informasi (yang mudah dimengerti) kepada user sesuai dengan instruksi dari controller. Artinya bagian View ini tidak menerima instruksi langsung dari user dan juga tidak berhubungan langsung dengan model.
Controller merupakan elemen paling penting dari arsitektur MVC karena controller merupakan bagian yang menjembatani model dan view. Controller berisi perintah-perintah yang berfungsi untuk memproses suatu data dan kemudian menampilkannya pada bagian View. Controller juga merupakan bagian yang berfungsi menerima request dari user kemudian menentukan apa yang akan diproses oleh aplikasi.
Fungsi utama yang dikembangkan adalah pembuatan projek yang dibuat oleh pengguna yang berperan sebagai Project Manager dan Projek tersebut dapat diikuti oleh pengguna lain yang sedang mencari projek.
- Create Project : Pengguna dapat membuat project dengan atribut nama, deskripsi, estimated time dan project photos. Untuk Project Manager akan menggunakan ID User yang sudah membuat Project
- Read Projet : Pengguna dapat melihat project pengguna lain dan project yang sudah dia buat pada halaman utaan
- Update Project : Pengguna yang merupkana Project Manager dapat memperbarui atribut project nama, deskripsi dan estimated time selama project member belum di rekrut.
- Delete Project : Pengguna yang merupakan Project Manager dapat menghapus projeect selama project member belum di rekrut.
Strukur yang kami gunakan dibagi menjadi tiga bagian. Yang pertama ada Header dimana tipe JWT didefinisikan dan kami menggunakan hash hs256. Yang kedua ada Payload dimana ada loggedIn dan juga iat . Yang ketiga ada signatur yang berupa pengimplementasian header dan payload menggunakan HMAC-SHA256. JWT Identifier tidak diacak dan static disimpan di env. JWt akan expired setelah 12 jam.
Berikut kode implementasi dari JWT pada sistem kami:
https://drive.google.com/drive/folders/1SNqctXH2PRrCQPqvLnMNAiohXspOU63Q?usp=sharing
Pengembangan selanjutnya akan dilakukan maintenance sistem yang telah dibuat dan akan dievaluasi apakah sistem sudah berjalan sesuai kebutuhan pengguna atau belum. Jika belum memenuhi kebutuhan pengguna, sistem akan diperbaiki dan ditingkatkan pada bagian yang kurang. Namun jika sudah memenuhi kebutuhan pengguna, akan dibuat fitur baru yang bisa menambah kinerja sistem tersebut.
| No. | Nama | Job description |
|---|---|---|
| 1. | Muhammad Abiyyu Habibi (G64180066) | Frontend Developer dan UI/UX Designer |
| 2. | Muhammad Fauzan Ramadhan (G64180117) | Project Manager dan Frontend Developer |
| 3. | Reza Achmad Naufal (G64180078) | Backend Developer |
| 4. | Mohammad Thareeq Izzulhaq (G64180041) | Backend Developer |
| 5. | Muhammad Hafiduddin (G64180017) | Frontend Developer |














