# SETUP INSTRUCTIONS

[← Về Overview](../../README.md) | [Next: Project Structure →](./02-project-structure.md)

---

## Backend Setup

### Option 1: Demo Mode (Không cần MongoDB) - Khuyến nghị cho Development

```bash
# 1. Initialize project
npm init -y

# 2. Install dependencies
npm install express dotenv jsonwebtoken bcrypt cors
npm install -D typescript @types/node @types/express @types/jsonwebtoken @types/bcrypt ts-node nodemon

# 3. Setup TypeScript
npx tsc --init

# 4. Create .env file (Demo Mode)
DATA_MODE=demo
JWT_SECRET=your-secret-key
PORT=3000
NODE_ENV=development

# 5. Create data/demo/ folder và các JSON files
mkdir -p data/demo
# Tạo các file JSON: companies.json, projects.json, assets.json, etc.
```

### Option 2: MongoDB Mode (Production)

```bash
# 1-3. Giống như trên

# 4. Install Mongoose (chỉ cần khi dùng MongoDB)
npm install mongoose
npm install -D @types/mongoose

# 5. Create .env file (MongoDB Mode)
DATA_MODE=mongodb
MONGODB_URI=mongodb://localhost:27017/amom
# hoặc MongoDB Atlas:
# MONGODB_URI=mongodb+srv://user:password@cluster.mongodb.net/amom
JWT_SECRET=your-secret-key
PORT=3000
NODE_ENV=development

# 6. Start MongoDB (nếu self-hosted)
# hoặc sử dụng MongoDB Atlas (cloud)
```

**Chuyển đổi giữa Demo và MongoDB:**
- Chỉ cần thay đổi `DATA_MODE` trong `.env` file
- Không cần thay đổi code
- Restart application

---

## Frontend Setup (Vite + React)

```bash
# 1. Create Vite project
npm create vite@latest frontend -- --template react-ts

# 2. Install dependencies
cd frontend
npm install
npm install axios zustand react-router-dom
npm install @mui/material @emotion/react @emotion/styled  # Material-UI
# hoặc
npm install antd  # Ant Design
# hoặc
npm install -D tailwindcss postcss autoprefixer  # Tailwind CSS

# 3. Setup environment
# Create .env file
VITE_API_URL=http://localhost:3000/api
```

---

## MongoDB Setup (Chỉ cần khi DATA_MODE=mongodb)

```bash
# Option 1: Local MongoDB
# Install MongoDB Community Edition
# Start MongoDB service

# Option 2: MongoDB Atlas (Cloud)
# Create account at mongodb.com/cloud/atlas
# Create cluster and get connection string
```

---

**Next**: [Project Structure](./02-project-structure.md)
