Skip to content

AnzeHabibi/Project_PSBO

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

78 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Logo GoFind

Project_PSBO

Nama Sistem : GoFind
Paralel Praktikum : P1
Nomor Kelompok : 03

Deskripsi Analisis Pengguna Lingkungan Konsep OOP Tipe Desain Pembahasan Implementasi Saran Developer

✏️Deskripsi Aplikasi

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.

📔Analisis Pengguna

👫User Story

  1. 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.
  2. 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.

💻Spesifikasi Teknis Lingkungan Pengembangan

📁Software

software pengembangan GoFind

📱Hardware

  • 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

💾TechStack

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

🔑Konsep OOP yang Digunakan

  • Encapsulation

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.

  • Inheritance

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.

  • Abstraction

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).

  • Polymorphism

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.

🎨Tipe Desain Pengembangan yang Digunakan (Pattern/Anti Pattern)

MVC

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.

diagram MVC

penjelasan lebih detail mengenai ketiga bagian pada MVC dijelaskan pada poin poin berikut.

Model

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

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

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.

image

📈Hasil dan Pembahasan

Use case diagram

Use Case Diagram

Activity diagram

Activity Diagram 1 Activity Diagram 2 Activity Diagram 3

Class diagram

Class Diagram

Entity Relationship Diagram

ERD

Arsitektur sistem

Arsitektur Sistem

Fungsi utama yang dikembangkan

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.

Fungsi CRUD

  1. 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
  2. Read Projet : Pengguna dapat melihat project pengguna lain dan project yang sudah dia buat pada halaman utaan
  3. Update Project : Pengguna yang merupkana Project Manager dapat memperbarui atribut project nama, deskripsi dan estimated time selama project member belum di rekrut.
  4. Delete Project : Pengguna yang merupakan Project Manager dapat menghapus projeect selama project member belum di rekrut.

📋Hasil Implementasi

Pemakaian JWT

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.

Struktur

Berikut kode implementasi dari JWT pada sistem kami:

code1

code2

Screenshot sistem

Implementasi Sistem

Link Aplikasi

https://drive.google.com/drive/folders/1SNqctXH2PRrCQPqvLnMNAiohXspOU63Q?usp=sharing

❔Saran untuk Pengembangan Selanjutnya

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.

👷Developer dan Job Description

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

About

Config files for my GitHub profile.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages