Skip to content

RESTful API dengan Express dan Sequelize untuk manajemen pengguna. Dilengkapi dengan fitur autentikasi JWT, validasi data, password hashing, dan soft delete. Proyek ini menggunakan Express.js sebagai framework, Sequelize ORM untuk MS SQL Server, dan mendukung operasi CRUD lengkap dengan middleware untuk keamanan API.

License

Notifications You must be signed in to change notification settings

Faiz-Hidayat/restful-api-sequelize

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

1 Commit
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

RESTful API dengan Express dan Sequelize

Express.js Sequelize JWT

Deskripsi Proyek

Proyek ini adalah implementasi RESTful API menggunakan Express.js sebagai framework web dan Sequelize sebagai ORM (Object-Relational Mapping) untuk database SQL Server. API ini menyediakan sistem manajemen pengguna lengkap dengan fitur autentikasi menggunakan JWT (JSON Web Token).

Fitur Utama

  • πŸ” Sistem autentikasi dengan JWT (login/signup)
  • πŸ‘₯ Manajemen pengguna (Create, Read, Update, Delete)
  • βœ… Validasi data dengan fastest-validator
  • πŸ”’ Enkripsi password dengan bcrypt
  • πŸ—‘οΈ Soft delete untuk penghapusan data aman
  • πŸ›‘οΈ Middleware untuk proteksi endpoint
  • πŸ“ Logging dengan morgan

Teknologi yang Digunakan

  • Backend: Node.js, Express.js
  • Database: MS SQL Server
  • ORM: Sequelize
  • Autentikasi: JWT (jsonwebtoken)
  • Validasi: fastest-validator
  • Password Hashing: bcrypt
  • View Engine: EJS

Prasyarat

Sebelum menjalankan proyek ini, pastikan Anda telah menginstal:

  • Node.js (versi terbaru)
  • MS SQL Server
  • NPM atau Yarn

Instalasi dan Penggunaan

1. Clone repositori

git clone https://github.com/faiz-hidayat/restful-api-sequelize.git
cd restful-api-sequelize

2. Install dependensi

npm install

3. Konfigurasi database

Buka file config/config.json dan sesuaikan konfigurasi database:

{
    "development": {
        "username": "username_anda",
        "password": "password_anda",
        "database": "nama_database_anda",
        "host": "localhost",
        "dialect": "mssql"
    }
}

4. Konfigurasi environment

Buat file .env dan isi dengan JWT secret key:

JWT_SECRET=kunci_rahasia_anda

5. Jalankan migrasi database

npx sequelize-cli db:migrate

6. Jalankan seeder (opsional)

npx sequelize-cli db:seed:all

7. Jalankan aplikasi

npm start

Server akan berjalan di http://localhost:3000

Struktur API Endpoints

Endpoint Publik (Tanpa Autentikasi)

  • POST /users/signup - Registrasi pengguna baru
  • POST /users/signin - Login pengguna

Endpoint Terproteksi (Memerlukan Token JWT)

  • GET /users - Mendapatkan semua data pengguna
  • GET /users/:id - Mendapatkan data pengguna berdasarkan ID
  • PATCH /users/:id - Memperbarui data pengguna berdasarkan ID
  • DELETE /users/:id - Menghapus (soft delete) pengguna berdasarkan ID

Format Permintaan dan Respons

Signup (Registrasi)

Request:

POST /users/signup
{
  "username": "contohuser",
  "email": "user@example.com",
  "password": "password123",
  "fullname": "Nama Lengkap",
  "bio": "Bio singkat"
}

Response:

{
    "success": true,
    "message": "User registered successfully",
    "data": {
        "id": 1,
        "username": "contohuser",
        "email": "user@example.com",
        "fullname": "Nama Lengkap",
        "bio": "Bio singkat"
    }
}

Signin (Login)

Request:

POST /users/signin
{
  "email": "user@example.com",
  "password": "password123"
}

Response:

{
    "success": true,
    "message": "Login successful",
    "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
    "user": {
        "id": 1,
        "username": "contohuser",
        "email": "user@example.com",
        "fullname": "Nama Lengkap"
    }
}

Struktur Proyek

.
β”œβ”€β”€ bin/                # Script startup aplikasi
β”œβ”€β”€ config/             # Konfigurasi database
β”œβ”€β”€ controllers/        # Logic aplikasi
β”œβ”€β”€ middlewares/        # Middleware seperti autentikasi
β”œβ”€β”€ migrations/         # Migrasi database Sequelize
β”œβ”€β”€ models/             # Model Sequelize
β”œβ”€β”€ public/             # File statis (CSS, JS, dll)
β”œβ”€β”€ routes/             # Definisi rute API
β”œβ”€β”€ seeders/            # Seeder data awal untuk database
β”œβ”€β”€ views/              # Template EJS
β”œβ”€β”€ .env                # Variabel lingkungan
β”œβ”€β”€ .gitignore          # File yang diabaikan Git
β”œβ”€β”€ app.js              # Entry point aplikasi
└── package.json        # Dependensi dan script

Lisensi

Proyek ini menggunakan lisensi MIT.

About

RESTful API dengan Express dan Sequelize untuk manajemen pengguna. Dilengkapi dengan fitur autentikasi JWT, validasi data, password hashing, dan soft delete. Proyek ini menggunakan Express.js sebagai framework, Sequelize ORM untuk MS SQL Server, dan mendukung operasi CRUD lengkap dengan middleware untuk keamanan API.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published