Skip to content

FallPrediction/musical_wiki_backend

Repository files navigation

簡介

這是一個音樂劇的 wiki 專案後端的部分

實體網站連結

還有很多功能還沒做,目前的 API 有:

  • 演員列表
  • 演員的出演作品
  • 演員的大頭貼和圖片集(圖片儲存於 S3)

架構

架構

這是我剛開始學習 GO 的專案,使用 Gin 框架。因為習慣 PHP 的Laravel,所以這個專案的某些檔案目錄會參照 Laravel,如:

  • handler(controller):驗證輸入和 Response
  • service:業務邏輯
  • repository:跟 DB 溝通
  • models:因為使用了 Gorm,該資料夾定義各 model 的 field,透過 orm 操作資料庫
  • helper:全局用的小功能。並且使用 testing 寫測試
  • request:各 API input 的驗證規則
  • initialize:初始化部件,大部分都用 singleton,如 Redis, DB Connection 等
  • utils:把常用的功能包裝成 struct,目前有上傳和 cache
  • deployments
    • local:本地開發用的環境檔
    • codeDeploy:AWS Code Deploy 用的 scripts

前端

Repository 非前端工程師所以選了Quasar,是使用 Vue(專案使用 Vue3)的 UI 框架

Infra

Terraform Repository, Ansible Repository

此專案使用 Terraform + Ansible 架在 AWS 上

為了省錢簡單,使用託管的資料庫 Supabase,也因為這樣所以服務全放在一台在 public subnet 的 server

使用 Gihub action 觸發 CodeDeploy 部署

本地開發

Docker Compose 啟動 GO, PostgreSQL, Redis 和 Nginx 服務

如何設定 GO 開發環境可以參考我的部落格文章用 VSCode Debug GO 程式吧

如果要部署到EC2,可以參考我的部落格文章CodeDeploy 部署 GO APP 到 EC2

設定.env

後端

設定 PG 的資料庫密碼、S3 bucket 等 Redis 的密碼需要 SHA256 以後修改 users.acl 開發時 GIN_MODE 設為debug,另外有設定 CORS,要配合前端使用時,要設定前端的 URL

前端

前端環境可以在後端的 .env 指定打包好的目錄 前端的 .env 設定後端的 URL 如果不想打包,可以在前端目錄下開啟開發用 server(在這之前需要安裝 Quasar)

npm install
npm i -g @quasar/cli
quasar dev

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published