Skip to main content

Yêu cầu hệ thống

Phần mềmPhiên bản tối thiểu
Node.js18.x LTS
npm9.x
PostgreSQL14+
Redis6+
Git2.x

Cài đặt Backend (NestJS API)

1

Clone repository

git clone https://github.com/your-org/econtractid-api.git
cd econtractid-api
2

Cài đặt dependencies

npm install
3

Cấu hình biến môi trường

Copy file .env.example thành .env và điền các giá trị:
# Database
DB_HOST=localhost
DB_PORT=5432
DB_NAME=econtractid
DB_USER=postgres
DB_PASS=password

# JWT
JWT_SECRET=your_super_secret_key_here
JWT_EXPIRES_IN=3600
JWT_REFRESH_SECRET=your_refresh_secret
JWT_REFRESH_EXPIRES_IN=604800

# Redis
REDIS_HOST=localhost
REDIS_PORT=6379

# File Storage (MinIO)
MINIO_ENDPOINT=localhost
MINIO_PORT=9000
MINIO_ACCESS_KEY=minioadmin
MINIO_SECRET_KEY=minioadmin
MINIO_BUCKET=econtractid-files

# Email (SMTP)
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USER=noreply@econtractid.vn
MAIL_PASS=app_password_here
4

Chạy database migration

npm run migration:run
5

Khởi động server

# Development (hot-reload)
npm run start:dev

# Production
npm run build
npm run start:prod
API sẽ chạy tại http://localhost:3000.

Cài đặt Frontend (Angular)

1

Clone repository

git clone https://github.com/your-org/econtractid-frontend.git
cd econtractid-frontend
2

Cài đặt dependencies

npm install
3

Cấu hình environment

Sửa file src/environments/environment.ts:
export const environment = {
  production: false,
  apiUrl: 'http://localhost:3000/api',
  wsUrl: 'ws://localhost:3000',
};
4

Khởi động dev server

npm start
Ứng dụng chạy tại http://localhost:4200.

Chạy bằng Docker Compose

Để khởi động toàn bộ hệ thống bằng Docker:
# Clone repo
git clone https://github.com/your-org/econtractid.git
cd econtractid

# Khởi động tất cả services
docker compose up -d

# Xem logs
docker compose logs -f api
Services được khởi động:
ServicePort
API (NestJS)3000
Frontend (Angular)4200
PostgreSQL5432
Redis6379
MinIO9000 / 9001

Kiểm tra cài đặt

Sau khi khởi động, kiểm tra bằng lệnh:
# Kiểm tra API health
curl http://localhost:3000/api/health

# Expected response
{"status": "ok", "version": "1.0.0"}