Fakultas Ilmu Komputer UI

README.md 4.18 KB
Newer Older
Muhammad Rafif Elfazri's avatar
Muhammad Rafif Elfazri committed
1
# Diskuy Backend
2

Muhammad Rafif Elfazri's avatar
Muhammad Rafif Elfazri committed
3
## Tentang Aplikasi
4

Muhammad Rafif Elfazri's avatar
Muhammad Rafif Elfazri committed
5
Diskuy adalah sebuah aplikasi forum berbasis web. Thread-thread diskusi dengan topic yang bermacam-macam. Pengguna diwajibkan untuk mebuat akun apabila pengguna ingin mebuat topic, thread dan komen baru.
6
7
8



9
10
## Cara Menjalankan Aplikasi (Development)
Cara menyalakan server Phoenix untuk aplikasi ini :
Muhammad Rafif Elfazri's avatar
Muhammad Rafif Elfazri committed
11

12
13
14
15
  * Install dependencies dengan `mix deps.get`
  * Setup file ```config/dev.exs``` dan isi credential username dan password user pada database postgresql.
  * Buat dan lakukan migrate pada database dengan `mix ecto.setup`
  * Nyalakan server Phoenix dengan `mix phx.server`
Muhammad Rafif Elfazri's avatar
Muhammad Rafif Elfazri committed
16

17
Sekarang anda bisa mengakses [`localhost:4000`](http://localhost:4000) dari browser anda.
Muhammad Rafif Elfazri's avatar
Muhammad Rafif Elfazri committed
18

19
Sudah ready untuk dijalankan di production? Mohon [lihat deployment guide berikut ini](https://hexdocs.pm/phoenix/deployment.html).
Muhammad Rafif Elfazri's avatar
Muhammad Rafif Elfazri committed
20

21
## Build Production Docker Image
Muhammad Rafif Elfazri's avatar
Muhammad Rafif Elfazri committed
22

23
1. Build Image dengan perintah berikujt
Muhammad Rafif Elfazri's avatar
Muhammad Rafif Elfazri committed
24

25
   ```docker build -t diskuy-backend .```
Muhammad Rafif Elfazri's avatar
Muhammad Rafif Elfazri committed
26

27
### Deploy Production
Muhammad Rafif Elfazri's avatar
Muhammad Rafif Elfazri committed
28

29
1. Build Docker image sesuai dengan perintah Build DockerImage diatas
Muhammad Rafif Elfazri's avatar
Muhammad Rafif Elfazri committed
30

31
2. Isi Environment Variable pada ``` config/docker.env``` sesuai dengan Environtment yang sudah disediakan.
Muhammad Rafif Elfazri's avatar
Muhammad Rafif Elfazri committed
32

33
   ```shell
34
35
   SECRET_KEY_BASE=REALLY_LONG_SECRET              ## Generate it with "mix phx.gen.secret"
   GUARDIAN_SECRET_KEY_BASE=REALLY_LONG_SECRET     ## Generate it with "guardian phx.gen.secret"
36
   DATABASE_USER=postgres
37
38
39
40
41
42
43
   DATABASE_HOST=db
   DATABASE_URL=ecto://postgres:postgres@db/postgres
   PORT=4000
   HOSTNAME=localhost
   POSTGRES_PASSWORD=postgres
   LANG=en_US.UTF-8s
   ```
Muhammad Rafif Elfazri's avatar
Muhammad Rafif Elfazri committed
44

45
3. Jalankan command ```docker-compose up``` untuk mendeploy Backend server.
Muhammad Rafif Elfazri's avatar
Muhammad Rafif Elfazri committed
46

47
4. Backend server dapat diakses pada  http://localhost
Muhammad Rafif Elfazri's avatar
Muhammad Rafif Elfazri committed
48

49
5. Jalankan command ```docker-compose down``` untuk menghentikan server
Muhammad Rafif Elfazri's avatar
Muhammad Rafif Elfazri committed
50

51
52
53
54
55
56

## Notes

1. System hanya membolehkan user dengan role admin untuk membuat topic. User akan otomatis mendapat role reguler saat login pertama kali ke aplikasi ini. Untuk mengganti role, mantainer app ini harap mengganti role langaung di dalam database.
2. SECRET_KEY_BASE di generate dengan perintah ```mix phx.gen.secret```. GUARDIAN_SECRET_KEY_BASE dapat di generate dengan perintah ```mix guardian.gen.secret```. (Pengguna harus menginstall dependencies terlebih dahulu dengan ```mix deps.get```)

Muhammad Rafif Elfazri's avatar
Muhammad Rafif Elfazri committed
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
## Aturan Migrations

Migrations pada framework phoenix menggunakan library [Ecto](https://hexdocs.pm/ecto/Ecto.html). Migrations ini hampir mirip dengan dengan salah satu library node.js, yaitu ```sequelize```.

Aturan:
1. Untuk Membuat table database baru, phoenix framework menyediakan generator model, views, dan template dengan views sederhana untuk melakukan CRUD pada table database tersebut dengan command ```mix phx.gen.json```. Untuk eksplor lebih dalam dapat melihat [link berikut](https://hexdocs.pm/phoenix/Mix.Tasks.Phx.Gen.Json.html).

2. Jika table sudah terbentuk dan kontributor ingin memodifkasi table tersebut, kontributor diharuskan membuat file migrations untuk memodifikasi hal tersebut secara manual. Untuk mengenerate file migrations tersebut dapat menggunakan command ```mix ecto.gen.migration nama-file-migrations```.

## Cara Kontribusi

1. Fork Pada repository ini.
2. Clone pada repository hasil fork pada tahap 1.
3. Set git remote upstream dengan repository original dengan command ```git remote add upstream https://gitlab.cs.ui.ac.id/functional-programming/diskuy-backend.git``` (https) atau ```git remote add upstream git@gitlab.cs.ui.ac.id:functional-programming/diskuy-backend.git``` (ssh)
4. Buatlah branch baru pada repository fork dengan penamaan branch ```feature/nama-feature```
5. Jika fitur tersebut ingin disubmit / merge ke repo upstream, push branch fitur tersebut dan lakukan merge request ke branch master. Set reviewer merge request tersebut dengan owner dari repository ini.

Muhammad Rafif Elfazri's avatar
Muhammad Rafif Elfazri committed
74
## Pelajari lebih lanjut
75
76
77
78
79
80

  * Official website: https://www.phoenixframework.org/
  * Guides: https://hexdocs.pm/phoenix/overview.html
  * Docs: https://hexdocs.pm/phoenix
  * Forum: https://elixirforum.com/c/phoenix-forum
  * Source: https://github.com/phoenixframework/phoenix
Muhammad Rafif Elfazri's avatar
Muhammad Rafif Elfazri committed
81
82
83
84

## Authors
Kelompok 18

85
86
  * Fadhil Pradipta - 1806205344
  * Jonathan - 1806204985
87
  * Muhammad Rafif Elfazri- 1806205722
88
  * Ryo Axton Lie - 1806205571
Muhammad Rafif Elfazri's avatar
Muhammad Rafif Elfazri committed
89
90
91

## Acknowledgements
  * CS UI - Functional Programming 2020