Skip to content

NaufalMS29/backend-capstone

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

26 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Backend API - SPPG Capstone Project

Backend API berbasis Express.js untuk mendukung fitur prediksi, analisis, chatbot, autentikasi, dan manajemen data pada proyek SPPG Capstone.

πŸ“Œ Fitur Utama

  • REST API berbasis Express.js
  • Integrasi dengan layanan FastAPI
  • JWT Authentication & Authorization
  • Upload dan prediksi data CSV
  • Riwayat analisis SPPG
  • Chatbot Session API
  • PostgreSQL Database
  • Redis Cache Support
  • Middleware validasi dan error handling

πŸ“‚ Struktur Project

backend/
β”œβ”€β”€ migrations/
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ cache/
β”‚   β”œβ”€β”€ config/
β”‚   β”œβ”€β”€ exceptions/
β”‚   β”œβ”€β”€ middlewares/
β”‚   β”œβ”€β”€ routes/
β”‚   β”œβ”€β”€ security/
β”‚   β”œβ”€β”€ server/
β”‚   β”œβ”€β”€ services/
β”‚   β”‚   β”œβ”€β”€ authentications/
β”‚   β”‚   β”œβ”€β”€ chatbot/
β”‚   β”‚   β”œβ”€β”€ sppg/
β”‚   β”‚   β”œβ”€β”€ sppganalyses/
β”‚   β”‚   β”œβ”€β”€ sppgpredictcsv/
β”‚   β”‚   └── users/
β”‚   └── utils/
β”œβ”€β”€ package.json
└── .env

βš™οΈ Tech Stack

  • Node.js
  • Express.js
  • PostgreSQL
  • Redis
  • JWT
  • Multer
  • Joi Validation
  • Axios
  • Nodemon
  • ESLint

πŸš€ Instalasi

1. Clone Repository

git clone <repository-url>
cd backend

2. Install Dependency

npm install

3. Konfigurasi Environment

Buat file .env berdasarkan contoh berikut:

HOST=localhost
PORT=5000

FASTAPI_URL=https://your-fastapi-url

PGUSER=postgres
PGHOST=localhost
PGPASSWORD=password
PGDATABASE=sppgdb
PGPORT=5432

ACCESS_TOKEN_KEY=your_access_token_secret
REFRESH_TOKEN_KEY=your_refresh_token_secret

πŸ—„οΈ Menjalankan Migration Database

npm run migrate up

▢️ Menjalankan Server

Development

npm run start:dev

Production

npm run start:prod

Server berjalan di:

http://localhost:5000

πŸ” Authentication API

Register User

Endpoint

POST /users

Request Body

{
  "username": "admin",
  "password": "password123",
  "fullname": "Administrator"
}

Login

Endpoint

POST /authentications

Request Body

{
  "username": "admin",
  "password": "password123"
}

Response

{
  "status": "success",
  "data": {
    "accessToken": "jwt-access-token",
    "refreshToken": "jwt-refresh-token"
  }
}

πŸ€– AI & Prediction API

Predict Data

POST /api/predict

Predict Batch CSV

POST /api/predict/batch

Analyze Data

POST /api/analyze

Predict & Analyze

POST /api/predict-and-analyze

Chat AI

POST /api/chat

πŸ“Š SPPG Analysis API

Menambahkan Analisis

POST /api/sppg-analyses

Membutuhkan Bearer Token


Mendapatkan Riwayat Analisis

GET /api/sppg-analyses

Membutuhkan Bearer Token


πŸ“ CSV Prediction API

Upload CSV

POST /api/sppg-csv/upload

Form Data

Key Type
file CSV File

Membutuhkan Bearer Token


History Upload CSV

GET /api/sppg-csv/history

πŸ’¬ Chatbot API

Membuat Session

POST /api/sessions

Mendapatkan Semua Session

GET /api/sessions

Mendapatkan Pesan Berdasarkan Session

GET /api/sessions/:sessionId/messages

Mengirim Pesan

POST /api/messages

Public Chat

POST /api/public-chat

πŸ›‘οΈ Middleware

Project ini menggunakan beberapa middleware utama:

  • Authentication Middleware
  • Validation Middleware
  • Error Handler Middleware
  • Upload Middleware (Multer)

πŸ“¦ Scripts

Command Description
npm run start:dev Menjalankan server development
npm run start:prod Menjalankan server production
npm run migrate Menjalankan migration database
npm run lint Menjalankan ESLint

πŸ§ͺ Dependencies Utama

Package Fungsi
express Web framework
pg PostgreSQL client
redis Redis client
jsonwebtoken JWT Authentication
joi Validasi request
multer Upload file
axios HTTP client

⚠️ Catatan

  • Pastikan PostgreSQL aktif sebelum menjalankan server.
  • Pastikan environment variable sudah sesuai.
  • Endpoint tertentu membutuhkan Authorization Bearer Token.
  • Integrasi AI menggunakan layanan FastAPI eksternal.

πŸ‘¨β€πŸ’» Contributor

SPPG Capstone Team


πŸ“„ License

ISC License

Releases

Packages

Contributors

Languages