binotify-rest adalah backend dari aplikasi binotify (khususnya binotify premium). Aplikasi ini dibuat dengan menggunaan Express + Typescript + PostgreSQL. Aplikasi ini dibuat untuk memenuhi tugas besar mata kuliah Pemrograman Aplikasi Berbasis Web.
- Express with Typescript based app
- Auth utilizing JWT
- PostgreSQL as database
- Dockerized
- cached response with Redis
- SOAP calls to binotify-soap
- Static file serving
Basis data terdiri atas dua tabel, yaitu tabel users dan tabel songs. Tabel users menyimpan informasi mengenai user, sedangkan tabel songs menyimpan informasi mengenai lagu. Tabel songs memiliki foreign key yang mengacu pada tabel users.
- POST /api/register Digunakan untuk mendaftarkan user baru kepada sistem.
- POST /api/login Digunakan untuk masuk ke dalam sistem dan akan memberikan response berupa jwt token
- POST /api/song Digunakan untuk menambahkan lagu baru ke dalam sistem. Endpoint ini membutuhkan jwt token yang didapat dari endpoint login.
- GET /api/song/:id Digunakan untuk mendapatkan informasi mengenai lagu dengan id tertentu. Endpoint ini membutuhkan jwt token yang didapat dari endpoint login.
- DELETE /api/song/:id Digunakan untuk menghapus lagu dengan id tertentu. Endpoint ini membutuhkan jwt token yang didapat dari endpoint login.
- PUT /api/song/:id Digunakan untuk mengubah informasi mengenai lagu dengan id tertentu. Endpoint ini membutuhkan jwt token yang didapat dari endpoint login.
- GET /api/artist Digunakan untuk mendapatkan list artist.
- GET /api/artist/song/:id Digunakan untuk mendapatkan list lagu dari artist tertentu yang sudah disubscribe oleh pengguna Binotify App. Endpoint ini tidak membutuhkan token jwt.
- GET /api/subscription DIgunakan untuk mendapatkan list request subscription. Pengguna harus menggunakan jwt token admin.
- PUT /api/subscription/update Digunakan untuk mengubah status request subscription. Pengguna harus menggunakan jwt token admin.
- GET /api/username Digunakan untuk mengecek apakah username sudah terdaftar atau belum. Digunakan saat validasi register.
- GET /api/songlist/:id Digunakan untuk mendapatkan list lagu dari penyanyi tertentu. Endpoint ini membutuhkan endpoint jwt.
- GET /api/name/:id Digunakan untuk mendapatkan nama dari penyanyi tertentu.
- GET /api/premium/:id Digunakan untuk mendapatkan list lagu premium dari pengguna Binotify App.
Untuk melihat detail dari setiap endpoint, silahkan lihat file Binotify.postman_collection.json
yang terdapat pada repositori binotify-config
.
Alternatif 1:
- Pastikan sudah terinstall NodeJS dan PostgreSQL
- clone repositori ini
- Buat file
.env
pada root folder aplikasi mengikuti contoh .env.example - Install dependency dengan menjalankan perintah
yarn install
- Jalankan aplikasi dalam mode development dengan
yarn dev
- Atau, dalam mode production,
yarn start
Alternatif 2: Docker
- Lakukan
docker compose up --build
- Initial Project Setup: 13520016
- Authentication: 13520016, 13520076
- Song Management CRUD: 13520016, 13520073
- Artist List: 13520016, 13520076
- Song List by Artist: 13520016, 13520073
- File Serving: 13520016
- SOAP Integration: 13520016
- Cache: 13520016