Files
gitpm/cmd/main.go
huxunan 885fad6c64 Initial commit: Gitea Project Management System
Features:
- Complete project management system with Epic/Story/Task hierarchy
- Vue.js 3 + Element Plus frontend with kanban board
- Go backend with Gin framework and GORM
- OAuth2 integration with Gitea
- Docker containerization with MySQL
- RESTful API for project, task, and user management
- JWT authentication and authorization
- Responsive web interface with dashboard
2025-09-22 14:53:53 +08:00

66 lines
1.5 KiB
Go

package main
import (
"flag"
"fmt"
"log"
"giteapm/config"
"giteapm/internal/api"
"giteapm/internal/models"
"github.com/gin-contrib/cors"
"github.com/gin-gonic/gin"
)
func main() {
var configPath string
flag.StringVar(&configPath, "config", "config/config.yaml", "配置文件路径")
flag.Parse()
cfg, err := config.Load(configPath)
if err != nil {
log.Fatalf("加载配置失败: %v", err)
}
db, err := models.InitDB(cfg.Database)
if err != nil {
log.Fatalf("数据库初始化失败: %v", err)
}
if cfg.Server.Mode == "release" {
gin.SetMode(gin.ReleaseMode)
}
router := gin.Default()
router.Use(cors.New(cors.Config{
AllowOrigins: cfg.CORS.AllowOrigins,
AllowMethods: cfg.CORS.AllowMethods,
AllowHeaders: cfg.CORS.AllowHeaders,
AllowCredentials: cfg.CORS.AllowCredentials,
}))
router.Static("/static", "web/static")
router.GET("/", func(c *gin.Context) {
log.Printf("访问首页")
c.File("web/templates/index.html")
})
// 添加测试路由来验证OAuth配置
router.GET("/test-oauth", func(c *gin.Context) {
authURL := fmt.Sprintf("http://218.84.152.14:65001/login/oauth/authorize?client_id=%s&redirect_uri=%s&response_type=code&scope=read:user&state=test-state",
cfg.Gitea.ClientID,
"http://localhost:8080/api/v1/auth/callback")
c.Redirect(302, authURL)
})
api.SetupRoutes(router, db, cfg)
addr := fmt.Sprintf("%s:%d", cfg.Server.Host, cfg.Server.Port)
log.Printf("服务启动在 %s", addr)
if err := router.Run(addr); err != nil {
log.Fatalf("服务启动失败: %v", err)
}
}