Skip to content

tiarapramita-git/user-management-api

Repository files navigation

🧑‍💻 User Management API

API untuk manajemen user dengan fitur Register, Login (JWT), CRUD User, Upload Avatar ke Cloudinary, serta proteksi keamanan menggunakan CORS & Helmet.


🚀 Fitur Utama

✅ Register & Login user (autentikasi JWT)
✅ CRUD data user (hanya untuk user dengan token aktif)
✅ Upload foto profil (Cloudinary integration)
✅ Validasi email dan password
✅ User hanya bisa ubah profil miliknya sendiri
✅ Menyimpan waktu updated_at setiap perubahan profil
✅ Middleware keamanan (CORS, Helmet)
✅ Dokumentasi API dengan Swagger & Postman


📂 Struktur Folder

user_management_api/
│
├── index.js
├── .env
│
├── src/
│   ├── config/
│   │   ├── db.js
│   │   └── cloudinary.js
│   ├── middleware/
│   │   ├── auth.js
│   │   └── upload.js
│   ├── controllers/
│   │   ├── authController.js
│   │   └── userController.js
│   ├── routes/
│   │   ├── authRoutes.js
│   │   └── userRoutes.js
│   └── models/
│       └── userModel.js

⚙️ Instalasi & Setup

  1. Clone repository / buka folder project

    cd user_management_api
  2. Install dependencies

    npm install
  3. Buat file .env

    PORT=5000
    DATABASE_URL=postgresql://postgres:yourpassword@localhost:5432/user_management
    JWT_SECRET=your_jwt_secret
    CLOUDINARY_NAME=your_cloud_name
    CLOUDINARY_KEY=your_cloud_key
    CLOUDINARY_SECRET=your_cloud_secret
  4. Jalankan server

    nodemon index.js

    Atau tanpa nodemon:

    node index.js
  5. Akses Swagger UI

    http://localhost:5000/api-docs
    

🧠 Endpoint API

Method Endpoint Deskripsi Token
POST /api/auth/register Registrasi user baru
POST /api/auth/login Login & dapatkan JWT token
GET /api/users Ambil semua user
POST /api/users/avatar Upload foto profil (Cloudinary)
PUT /api/users/profile Update profil user sendiri

🔒 Contoh Header Authorization

Gunakan token JWT dari endpoint /api/auth/login:

Authorization: Bearer <your_token_here>

☁️ Upload File ke Cloudinary

Endpoint:

POST /api/users/avatar

Form-Data:

Key Type Description
file File Foto profil yang ingin diupload

🕒 Fitur Tambahan yang Diimplementasikan

  • User hanya dapat mengedit profilnya sendiri.
  • Validasi input email & password.
  • Waktu updated_at otomatis disimpan setiap kali profil diubah.

📘 Dokumentasi API

🔹 Swagger UI

Buka di browser:
http://localhost:5000/api-docs

🔹 Postman Collection

Kamu juga bisa mengakses dokumentasi dan testing API melalui Postman:
👉 Klik di sini untuk membuka koleksi Postman


🛡️ Teknologi yang Digunakan

  • Node.js + Express.js — backend framework
  • PostgreSQL — database
  • bcryptjs — hashing password
  • jsonwebtoken (JWT) — autentikasi
  • Cloudinary + Multer + Streamifier — upload file
  • CORS + Helmet — keamanan API
  • Swagger — dokumentasi interaktif API

🧩 Contoh Tabel Database

CREATE TABLE users (
  id SERIAL PRIMARY KEY,
  username VARCHAR(100) UNIQUE NOT NULL,
  email VARCHAR(100) UNIQUE NOT NULL,
  password VARCHAR(255) NOT NULL,
  role VARCHAR(50) DEFAULT 'user',
  avatar_url TEXT,
  updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

🧾 Status Tugas

Aspek Status
Autentikasi JWT
CRUD User (Protected)
Upload File Cloudinary
Validasi Input
Edit Profil Sendiri
Keamanan (CORS & Helmet)
Dokumentasi API (Swagger + Postman)
Clean Code

👨‍🎓 Pengembang

Nama: Tiara Pramita Sari
Kelas : Backend Development
Deadline: 22 Oktober 2025, 23:59 WIB


💡 “Code less, build more — backend yang aman dan rapi adalah fondasi aplikasi modern.”

About

TUGAS LANJUTAN BACKEND: API CRUD dengan Autentikasi, Keamanan, dan Upload File

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published