# BACKEND ARCHITECTURE

[← Về Overview](../../README.md) | [Next: Data Layer Abstraction →](./02-data-layer-abstraction.md)

---

## Tech Stack

- **Runtime**: Node.js
- **Framework**: Express.js hoặc Fastify
- **Language**: TypeScript
- **Data Layer**: Abstraction Pattern (Demo/MongoDB)
- **ODM**: Mongoose (chỉ dùng khi DATA_MODE=mongodb)
- **Authentication**: JWT (jsonwebtoken)
- **Password**: bcrypt
- **Validation**: express-validator hoặc Zod

---

## Architecture Pattern

- **API-first**: RESTful API design
- **Layered Architecture**: Routes → Controllers → Services → Data Layer
- **Data Abstraction**: IDataAdapter interface cho Demo/MongoDB modes
- **RBAC**: Role-Based Access Control
- **Audit Trail**: Immutable logging

---

## Key Components

- **Routes**: API endpoints definition
- **Controllers**: Request/Response handling
- **Services**: Business logic
- **Data Layer**: IDataAdapter abstraction
- **Middleware**: Auth, RBAC, Validation, Error handling
- **Models**: Mongoose schemas (chỉ khi mongodb mode)

Chi tiết: [Data Layer Abstraction](./02-data-layer-abstraction.md)

---

**Next**: [Data Layer Abstraction](./02-data-layer-abstraction.md) | [Authentication & Authorization](./03-authentication-authorization.md)
