# 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#)