Skip to content

Chafik-Rd/expense-trackr-api

Repository files navigation

💰 Expense Trackr API | ระบบรายรับ-รายจ่าย (Backend)

ยินดีต้อนรับสู่โปรเจกต์ Expense Tracker API ซึ่งเป็นระบบ Backend สำหรับจัดการรายรับ-รายจ่ายส่วนบุคคล ถูกพัฒนาด้วย Node.js และ TypeScript โดยใช้ Fastify Framework เพื่อความรวดเร็วและประสิทธิภาพสูง

💡 แนวคิดหลัก (Concept)

โปรเจกต์นี้มีเป้าหมายเพื่อช่วยให้ผู้ใช้สามารถติดตามและบริหารจัดการสถานะทางการเงินรายวันได้อย่างมีประสิทธิภาพ โดยมีฟีเจอร์เด่นดังนี้:

  1. การจัดการยอดเงินคงเหลือรายวัน (Daily Budget): ระบบจะคำนวณยอดเงินคงเหลือที่ผู้ใช้สามารถใช้จ่ายได้ต่อวันจนถึงวันสิ้นเดือน เพื่อให้ผู้ใช้สามารถควบคุมการใช้จ่ายได้อย่างเป็นระบบ
  • ตัวอย่าง: หากคุณมีเงินเหลืออยู่ 500 บาท มีรายจ่ายที่รออยู่ 300 บาท และเหลือเวลาอีก 10 วันจนถึงสิ้นเดือน ระบบจะแนะนำว่าคุณสามารถใช้จ่ายได้วันละ 20 บาท
  1. การติดตามงบประมาณ (Budget Tracking): ระบบรองรับการแสดงยอดเงินคงเหลือ (ทั้งหมด) และยอดเงินที่ตั้งไว้สำหรับใช้จ่ายในแต่ละเดือน (อนาคต)

🛠️ เทคโนโลยีที่ใช้ (Tech Stack)

โปรเจกต์นี้ถูกสร้างขึ้นด้วยเทคโนโลยีหลักดังนี้:

  • ภาษา (Language): TypeScript

  • เฟรมเวิร์ก (Framework): Fastify (Node.js)

  • ฐานข้อมูล (Database): PostgreSQL

  • ORM (Object-Relational Mapping): TypeORM

  • Validation: Zod

📦 การติดตั้งและการใช้งาน (Getting Started)

  1. การตั้งค่า Environment Variables

โปรเจกต์นี้ใช้ไฟล์ .env สำหรับการตั้งค่าระบบ กรุณาตั้งค่าตัวแปรสำคัญดังต่อไปนี้:

# Server port
PORT=<your_port>

# Database Credentials
DB_HOST=<your_db_host>
DB_USER=<your_db_user>
DB_PASSWORD=<your_db_password>
DB_NAME=<your_db_name>

# Cloudinary (สำหรับการจัดการไฟล์รูปภาพ/ใบเสร็จ)
CLOUDINARY_CLOUD_NAME=<your_cloudinary_cloud_name>
CLOUDINARY_API_KEY=<your_cloudinary_API_key>
CLOUDINARY_API_SECRET=<your_cloudinary_API_secret>

# JWT (สำหรับการยืนยันตัวตน)
JWT_SECRET=<your_secret>
  1. เตรียมตัวก่อนรันโปรเจกต์ (Prerequisites)

เนื่องจากโปรเจกต์มีการเขียน docker-compose.yml สำหรับการติดตั้งฐานข้อมูล PostgreSQL อย่างรวดเร็ว จึงจำเป็นต้องติดตั้ง Docker ก่อนดำเนินการต่อ

ตรวจสอบการติดตั้ง:

docker --version
docker compose version
  1. การรันโปรเจกต์

3.1 รันด้วย Docker (แนะนำสำหรับ Local Setup)

ใช้คำสั่ง docker compose เพื่อสร้างและรัน Container ทั้งหมด (API และ Database):

docker compose up -d

(เพิ่ม -d เพื่อรันในพื้นหลัง)

3.2 การรันแบบ Local Development (Non-Docker)

หากต้องการรันเฉพาะ API Server บนเครื่องของคุณ:

  1. ติดตั้ง Dependencies ทั้งหมด: npm install

  2. คอมไพล์ TypeScript: npm run build

  3. รันเซิร์ฟเวอร์ด้วย Hot Reload (Development Mode): npm run dev

  4. รันเซิร์ฟเวอร์ Production (ต้องรัน npm run build ก่อน): npm start

🔐 การตรวจสอบความถูกต้อง (Validation & Security)

สิ่งสำคัญของ API นี้คือความแข็งแกร่งของข้อมูล:

  • มีการใช้ Zod Validation ในทุก ๆ Request เพื่อตรวจสอบ Query, Body (Payload), และ Parameter (รวมถึง Optional Parameter) อย่างเข้มงวด หากข้อมูลไม่ถูกต้อง จะส่งคืน HTTP 400 Bad Request

  • มีการบังคับใช้ UUID Format สำหรับ ID ทุกประเภท (เช่น category_id, transId) เพื่อความถูกต้องในการอ้างอิงข้อมูลในฐานข้อมูล

🗺️ เอกสาร API (API Documentation)

เอกสาร API สำหรับ Endpoint ทั้งหมดถูกสร้างขึ้นด้วย Fastify Swagger

  • Development Mode: เข้าถึงได้ที่
http://localhost:8085/documentation
  • Production: [เพิ่มลิงก์ไปยัง API Docs ที่นี่]

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published