---
# System prepended metadata

title: Z-axis 後端 README

---

# Z-axis 後端 README

# Z-axis 為您的演說帶來無限的可能
## 專案目標
以實際的作品運用現代框架與工具，呈現計畫中所學的成果。

## 專案介紹
在虛擬網路世界中，Z-axis 將連結您（代表 x）與觀眾（代表 y）的即時多人互動，三方串連打造更加自由立體的互動空間。

Z-axis 提供即時的匿名留言、按讚投票、測驗互動、抽獎活動、問卷調查…等多項豐富演說的功能，可以透過即時數據，了解並分析所有活動參與者的想法，為整場演說延伸出更多互動地可能。

後端採用 Express、Sequelize、Socket.IO 開發，部署在 AWS 平台並使用 heroku clearDB。

## 建置
1. 執行 `npm install` 安裝此專案所需的第三方套件
2. 新增 `config/config.json`，格式為：
```
{
  "development": {
    "username": "",
    "password": "",
    "database": "",
    "host": "127.0.0.1",
    "dialect": "mysql"
  },
  "test": {
    "username": "",
    "password": "",
    "database": "database_test",
    "host": "127.0.0.1",
    "dialect": "mysql"
  },
  "production": {
    "username": "",
    "password": "",
    "database": "database_production",
    "host": "127.0.0.1",
    "dialect": "mysql"
  }
}
```

3. 請複製.env.example並改名成.env，並且設置裡面的環境變數
  - SALTROUNDS(number)
  - JWT_SECRET_KEY(string)
  - GUEST_TOKEN_LENGTH(number)
  - CRYPTO_ALGORITHM(string)
  - CRYPTO_KEY(string)
  - CRYPTO_IV(string)
4. 輸入指令 `npx sequelize-cli db:migrate 執行 Sequelize migration`，在 MySQL 資料庫中建立 table
5. 輸入指令 `npx sequelize-cli db:seed:all 以執行 Sequelize seeders` 以在資料庫中建立初始 demo 資料

## 開發
1. `npm run start`

## 第三方套件
1. bcrypt：將密碼加密後存入資料庫，避免明碼密碼。
2. cors：解決跨來源資源共用。
3. dotenv：設置環境變數。
4. express：使用 Node.js Web 架構。
6. jsonwebtoken：使用 JWT 來實作登入機制驗證。
7. mysql2：使用 mysql2 連線資料庫。
8. sequelize：使用 ORM 框架 Sequelize 來操作資料庫。

## API 文件
1. [API 文件](https://hackmd.io/LBJwuLekR_mO9pIdLfhSZQ)
2. [資料庫結構](https://drawsql.app/z-axis/diagrams/z-axis-sql#)



