A progressive Node.js framework for building efficient and scalable server-side applications.
Ini adalah backend untuk aplikasi Work Order Portal yang dibangun menggunakan framework NestJS. Aplikasi ini dirancang untuk mengelola perusahaan, pengguna, layanan, formulir, dan alur kerja terkait.
- Autentikasi & Otorisasi: Registrasi pengguna (Client, Staff), registrasi perusahaan beserta pemiliknya, login, logout, pengambilan profil pengguna. Menggunakan token-based authentication dan role-based access control (RBAC).
- Manajemen Perusahaan: Pembuatan perusahaan baru, update informasi perusahaan, pengelolaan karyawan (undangan, daftar karyawan), endpoint publik untuk melihat perusahaan dan layanannya.
- Manajemen Pengguna & Role: Pengelolaan pengguna dengan role berbeda (Client, App Admin, Company Owner, Company Manager, Company Staff, Unassigned Staff).
- Manajemen Posisi: Pembuatan, pembaruan, penghapusan, dan pengambilan daftar posisi (global dan spesifik perusahaan). Seeder untuk posisi default.
- Manajemen Layanan (Services):
- Pembuatan dan pembaruan layanan dengan sistem versi (
__v). - Asosiasi formulir (Intake, Work Order, Report) ke layanan dengan urutan dan kontrol akses berbasis role/posisi.
- Pengelolaan staf yang dibutuhkan untuk setiap layanan.
- Endpoint internal untuk manajemen layanan (CRUD) dan endpoint publik untuk melihat detail layanan dan formulir intake.
- Helper agregasi MongoDB untuk pengambilan data layanan yang efisien dan terstruktur.
- Pembuatan dan pembaruan layanan dengan sistem versi (
- Manajemen Formulir (Forms):
- Pembuatan template formulir dinamis (Intake, Work Order, Report) dengan berbagai tipe field (teks, angka, pilihan, dll.).
- Pembaruan template formulir dengan sistem versi menggunakan
formKeydan__v. - Pengajuan (submission) formulir oleh pengguna terautentikasi dan pengguna publik (untuk intake form).
- Struktur Respons Standar: Menggunakan Interceptor untuk format respons sukses yang konsisten dan Filter untuk menangani exception dan format respons error (termasuk validasi).
- Validasi Input: Menggunakan
class-validatordanValidationPipeglobal untuk memastikan integritas data DTO. - Konfigurasi: Menggunakan
@nestjs/configuntuk manajemen variabel lingkungan.
- Framework: NestJS (@nestjs/core)
- Bahasa: TypeScript
- Database: MongoDB
- ODM: Mongoose (@nestjs/mongoose)
- Validasi: class-validator, class-transformer
- Autentikasi: bcrypt (hashing password), token-based (custom implementation using UUID)
- Linting/Formatting: ESLint, Prettier
# Clone repositori
git clone <URL_REPOSITORI_ANDA>
cd workorder-portal-backend # atau nama direktori Anda
# Install dependensi
npm install
# Setup variabel lingkungan
# Buat file .env di root proyek dan tambahkan variabel yang dibutuhkan, contohnya:
# MONGO_URI=mongodb://username:password@host:port/database_name
# PORT=3000 # Opsional, default 3000