Skip to content

Yasminda19/komdat_projek_babybuddy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 

Repository files navigation

repository ini dibentuk untuk penyelesaian tugas Komunikasi Data dan Jaringan Komputer

Aplikasi BabyBuddy

Anggota Kelompok

Nama NIM
Yasmin Salamah G64170108
Wanda Azizah Yasin G64170027
Dwi Fristanti Sagala G64170047

Sekilas Tentang

Sebuah aplikasi dashboard yang dapat membantu pengurus bayi untuk mencatat waktu tidur, waktu makan, penggantian popok dan dapat memprediksi kebutuhan bayi kedepannya.

Baby Buddy desktop view

Baby Buddy mobile views

Untuk demo aplikasi dapat diakses di demo of Baby Buddy.

Untuk kredensial login adalah :

  • Username: admin
  • Password: admin

Membuat VM ubuntu server

  1. Mengunduh VDI ubuntu 18.04 headless dari http://repo.apps.cs.ipb.ac.id/lab/ubuntu-server.vdi.gz.

  2. Membuat instance ubuntu baru kemudian melakukan konfigurasi network.

instance ubuntu

Buka network -> advanced lalu lakukan port forwarding

port forwarding

  1. Karena komputer host saya menggunakan windows maka saya menggunakan sebuah aplikasi bernama putty untuk mengakses vm linux yang saya buat sebelumnya.

Untuk mengunduh puTTy dapat dilakukan di sini

  1. Saya kemudian mengakses vm dengan mengisi kredensial session

ssh

Instalasi

  1. Install system packages, untuk sesi instalasi ini kita alias kan python3 menjadi python (opsional).
    sudo apt-get install python3 python3-pip nginx uwsgi uwsgi-plugin-python3 git libopenjp2-7-dev
    alias python=python3
  1. Install pipenv

sudo -H pip3 install pipenv

  1. Buat direktori dan clone repository.
      sudo mkdir /var/www/babybuddy
      mkdir -p /var/www/babybuddy/data/media
      git clone https://github.com/babybuddy/babybuddy.git /var/www/babybuddy/public

ubah owner direktori setelah membuat direktori

sudo chown user:user /var/www/babybuddy

  1. change direktori ke babybuddy/public kemudian set pipenv secara lokal
        cd /var/www/babybuddy/public
        export PIPENV_VENV_IN_PROJECT=1
        pipenv install --three
        pipenv shell
  1. Edit production setting file dan ubah nilai SECRET_KEY and ALLOWED_HOSTS
        cp babybuddy/settings/production.example.py babybuddy/settings/production.py
        editor babybuddy/settings/production.py

Catatan :

Baca dokumentasi Django's documentation untuk setting production terutama mengenai ALLOWED_HOSTS](https://docs.djangoproject.com/en/3.0/ref/settings/#allowed-hosts)

  • ALLOWED_HOSTS

Apabila ALLOWED_HOSTS[] : ketika DEBUG is True and ALLOWED_HOSTS is empty, maka host akan menjadi ['localhost', '127.0.0.1', '[::1]'].

  • SECRET_KEY

SECRET_KEY tidak boleh kosong isi dengan value apapun, anggap seperti password.

  1. Inisiasi Aplikasi
        export DJANGO_SETTINGS_MODULE=babybuddy.settings.production
        python manage.py migrate
        python manage.py createcachetable
  1. Mengubah permission untuk ownership direktori
        sudo chown -R www-data:www-data /var/www/babybuddy/data
        sudo chmod 640 /var/www/babybuddy/data/db.sqlite3
        sudo chmod 750 /var/www/babybuddy/data
  1. Membuat dan mengkonfigurasi uWSGI

sudo editor /etc/uwsgi/apps-available/babybuddy.ini

Contoh Konfigurasi, jangan lupa untuk mengisi direktori:

        [uwsgi]
        plugins = python3
        project = babybuddy
        base_dir = /var/www/babybuddy

        chdir = %(base_dir)/public
        virtualenv = %(chdir)/.venv
        module =  %(project).wsgi:application
        env = DJANGO_SETTINGS_MODULE=%(project).settings.production
        master = True
        vacuum = True
  1. Konfigurasi Symlink dan restart uWSGI
        sudo ln -s /etc/uwsgi/apps-available/babybuddy.ini /etc/uwsgi/apps-enabled/babybuddy.ini
        sudo service uwsgi restart
  1. Membuat dan mengkonfigurasi NGINX

sudo editor /etc/nginx/sites-available/babybuddy

Contoh konfigurasi:

        upstream babybuddy {
            server unix:///var/run/uwsgi/app/babybuddy/socket;
        }

        server {
            listen 80;
            server_name localhost;

            location / {
                uwsgi_pass babybuddy;
                include uwsgi_params;
            }

            location /media {
                alias /var/www/babybuddy/data/media;
            }
        }
  1. Konfigurasi Symlink dan Restart NGINX
        sudo ln -s /etc/nginx/sites-available/babybuddy /etc/nginx/sites-enabled/babybuddy
        sudo service nginx restart
  1. Buka localhost.

Konfigurasi

Spesifikasi instance VPS :

  • Minimal Ubuntu 18.04
  • Minimal Storage 512MB

Spesifikasi Technology :

  • Python 3.6+
  • nginx
  • uwsgi
  • sqlite

API

BabyBuddy menggunakan DJANGO REST FRAMEWORK untuk REST API Dokumentasi lebih lanjut dapat diakses di sini

Authentication

Untuk menggunakan key untuk API Request, dev hanya perlu meng set request Authorization header menjadi Token <user-key>. Seperti contoh :

Authorization: Token 2h23807gd72h7hop382p98hd823dw3g665g56

Apabila Authorization tidak valid, maka API akan mengembalikkan 403 Forbidden pada response body.

GET,OPTIONS dan POST requests :

  • /api/children/
  • /api/changes/ (Diaper Changes)
  • /api/feedings/
  • /api/notes/
  • /api/sleep/
  • /api/temperature/
  • /api/timers/
  • /api/tummy-times/
  • /api/weight/

Cara Pemakaian

  • Tampilan aplikasi web

Tampilan Aplikasi Web

  • Fungsi-fungsi utama

Fungsi utama aplikasi dibagi menjadi 3 :

  1. Mengisi entry tentang perkembangan anak
  2. Mengisi entry aktivitas
  3. Timer
  • Entry Perkembangan Anak

Berikut fungsi-fungsi yang ada pada entry anak :

entryperkembangananak

Berikut penjabaran fungsi :

Fungsi Deksripsi Gambar
Menambahkan Anak Menambahkan objek anak dan mengisi nama
Menambahkan Note Kita dapat mengisi note atas apapun yang dilakukan anak kita hari ini atau mengenai anak kita
Menambahkan temperature Menambahkan suhu tubuh beserta tanggal pengambilan suhu
Menambahkan Berat badan Menambahkan berat badan beserta tanggal pengambilan
  • Entry aktivitas

Berikut fungsi-fungsi yang ada pada entry anak :

entryperkembangananak

Berikut penjabaran fungsi :

Fungsi Deksripsi Gambar
Ganti Popok Menambahkan kapan kita mengganti popok dan waktunya
Memberi Makan Menambahkan metode pemberian makan,detail dan kapan pemberian makan
Tidur Menambahkan waktu tidur dan durasi
Tummy Time Saya ga ngerti ini apa
  • Timer
Fungsi Deksripsi Gambar
Timer Timer
  • Hasil dashboard

setelah sekian entry data yang kita masukkan maka hasilnya akan ditampilkan pada dashboard sebagai berikut ini :

dashboard1

Pembahasan

Menurut kami BabyBuddy selama proses deployment mempunyai :

Kelebihan Kekurangan
Free Open Source Fungsi tidak selengkap pada umumnya di implementasi nyata
dokumentasi deployment lengkap,memudahkan untuk deployment di platform manapun.
docker-compose tersedia memudahkan pengguna yang ingin melakukan deployment di docker. Hanya tinggal set value di production setting file lalu initialisasi app.
REST API lengkap

Perbandingan dengan aplikasi sejenis

Hampir semua personal dashboard application sejenis hampir mirip secara struktur.

Namun aplikasi serupa yang mirip dengan babybuddy :

Referensi

About

komdat's deployment project using ubuntu VM

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published