https://github.com/abiyamakruf/dicoding-forumapi

Proyek pertama dicoding course Menjadi Back-End Developer Expert dengan JavaScript. Mendapatkan nilai ?/5.

https://github.com/abiyamakruf/dicoding-forumapi

Science Score: 13.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (3.8%) to scientific vocabulary
Last synced: 10 months ago · JSON representation

Repository

Proyek pertama dicoding course Menjadi Back-End Developer Expert dengan JavaScript. Mendapatkan nilai ?/5.

Basic Info
  • Host: GitHub
  • Owner: AbiyaMakruf
  • Language: JavaScript
  • Default Branch: main
  • Size: 86.9 KB
Statistics
  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • Open Issues: 0
  • Releases: 0
Created over 1 year ago · Last pushed over 1 year ago
Metadata Files
Readme

README.md

Proyek Pertama: Menjadi Back-End Developer Expert dengan JavaScript

Penilaian Proyek

Proyek ini berhasil mendapatkan bintang 4/5 pada submission dicoding course Menjadi Back-End Developer Expert dengan JavaScript.

Penilaian Proyek

Kriteria tambahan yang saya kerjakan sehingga mendapatkan nilai terbaik: 1. Menerapkan Automation Testing 2. Menerapkan Clean Architecture

Kriteria tambahan yang tidak saya kerjakan: 1. Menambahkan Balasan pada Komentar Thread 2. Menghapus Balasan pada Komentar Thread

📌 Forum API

Forum API adalah backend API untuk aplikasi forum yang memungkinkan pengguna untuk membuat akun, login, membuat thread, mengomentari thread, serta menambahkan balasan pada komentar dengan menerapkan Clean Architecture dan Automation Testing menggunakan Jest.


Fitur yang Tersedia

User Management (Registrasi, Login, Logout) ✅ Thread Management (Menambahkan, Melihat Thread) ✅ Comment Management (Menambahkan, Menghapus Komentar pada Thread) ✅ Reply Management (Menambahkan Balasan pada Komentar) ✅ Authentication (JWT Authentication) ✅ Automation Testing (Unit & Integration Testing dengan Jest) ✅ Database Migration (Menggunakan node-pg-migrate)


🚀 Cara Menjalankan Proyek

1️⃣ Persiapan Database

📌 Cara Membuat User PostgreSQL

  1. Masuk ke PostgreSQL sebagai postgres: sh sudo -u postgres psql
  2. Buat user baru: sql CREATE USER developer WITH PASSWORD 'supersecretpassword';
  3. Beri hak akses superuser: sql ALTER USER developer WITH SUPERUSER;
  4. Buat database untuk user: sql CREATE DATABASE developer OWNER developer;

📌 Cara Membuat Database Forum API

  1. Masuk ke PostgreSQL sebagai developer: sh psql -U developer
  2. Buat database: sql CREATE DATABASE forumapi; CREATE DATABASE forumapi_test;

2️⃣ Menjalankan Migrasi Database

  1. Membuat migrasi baru: sh npm run migrate create "create table users" npm run migrate create "create table authentications"
  2. Menjalankan migrasi: sh npm run migrate up npm run migrate:test up

3️⃣ Menjalankan Server

  1. Instal dependencies: sh npm install
  2. Jalankan server: sh npm run start

📌 Struktur Proyek

bash C:. | .env | .gitignore | package-lock.json | package.json | README.md | struktur_proyek.txt | +---config | \---database | test.json | +---migrations | 1627983516963_create-table-users.js | 1627983555473_create-table-authentications.js | 1740899905329_create-table-threads.js | 1740900890574_create-table-comments.js | 1740901570792_update-table-comments.js | +---postman | Forum API V1 Test.postman_collection.json | Forum API V1 Test.postman_environment.json | +---src | | app.js | | | +---Applications | | +---security | | \---use_case | | | AddCommentUseCase.js | | | AddThreadUseCase.js | | | DeleteCommentUseCase.js | | | GetThreadDetailsUseCase.js | | | | +---Commons | | \---exceptions | | | +---Domains | | +---authentications | | +---comments | | +---threads | | +---users | | | +---Infrastructures | | | container.js | | +---database | | +---http | | \---repository | | | \---Interfaces | \---http | \---api | +---authentications | +---comments | +---threads | \---users \---tests AuthenticationsTableTestHelper.js CommentsTableTestHelper.js ThreadsTableTestHelper.js UsersTableTestHelper.js


🔥 Pengujian (Automation Testing dengan Jest)

Menjalankan Seluruh Pengujian

sh npm test -- --coverage

Menjalankan Pengujian Individual

Misalnya, hanya ingin menguji AddCommentUseCase.test.js:

sh npm test -- Applications/use_case/_test/AddCommentUseCase.test.js


📮 API Endpoint Documentation (Postman)

Koleksi Postman tersedia di folder ``:

  • Import file berikut ke Postman:
    • Forum API V1 Test.postman_collection.json
    • Forum API V1 Test.postman_environment.json

🛠 Teknologi yang Digunakan

  • Node.js 🚀
  • Hapi.js 🎯 (Framework backend)
  • PostgreSQL 🗄️ (Database)
  • Jest 🧪 (Unit & Integration Testing)
  • JWT 🔐 (Authentication)
  • Node-PG-Migrate 📦 (Migration Tool)

📌 Selamat Coding! 😃🔥

Owner

  • Login: AbiyaMakruf
  • Kind: user
  • Location: Bandung, Indonesia

I am passionate about my work, highly organized, and a hard worker person

GitHub Events

Total
  • Push event: 13
  • Pull request event: 4
  • Create event: 4
Last Year
  • Push event: 13
  • Pull request event: 4
  • Create event: 4

Issues and Pull Requests

Last synced: 10 months ago

All Time
  • Total issues: 0
  • Total pull requests: 4
  • Average time to close issues: N/A
  • Average time to close pull requests: 1 minute
  • Total issue authors: 0
  • Total pull request authors: 1
  • Average comments per issue: 0
  • Average comments per pull request: 0.0
  • Merged pull requests: 4
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 0
  • Pull requests: 4
  • Average time to close issues: N/A
  • Average time to close pull requests: 1 minute
  • Issue authors: 0
  • Pull request authors: 1
  • Average comments per issue: 0
  • Average comments per pull request: 0.0
  • Merged pull requests: 4
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
Pull Request Authors
  • AbiyaMakruf (4)
Top Labels
Issue Labels
Pull Request Labels

Dependencies

package.json npm
  • @types/jest ^26.0.24 development
  • eslint ^7.30.0 development
  • eslint-config-airbnb-base ^14.2.1 development
  • eslint-plugin-import ^2.23.4 development
  • jest ^27.0.6 development
  • node-pg-migrate ^5.10.0 development
  • nodemon ^2.0.9 development
  • @hapi/hapi ^20.1.5
  • @hapi/jwt ^2.0.1
  • bcrypt ^5.0.1
  • dotenv ^10.0.0
  • instances-container ^2.0.3
  • nanoid ^3.1.23
  • pg ^8.6.0