/
greenfielder
/
quicknotes
Обзор
Документация
Войти
/
greenfielder
/
quicknotes
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
main.go
58 строк
1 KB
Dmitry Savenko
mvp version 0.0.1
25 июн 2026, 14:42
25 июн 2026, 14:42
96abad3
Код
Авторство
О чём код?
package main import ( "embed" "io/fs" "log" "net/http" "os" "github.com/go-chi/chi/v5" "github.com/go-chi/chi/v5/middleware" ) //go:embed web/* var webFS embed.FS func main() { dbPath := "app.db" if p := os.Getenv("DB_PATH"); p != "" { dbPath = p } if err := initDB(dbPath); err != nil { log.Fatalf("init db: %v", err) } defer db.Close() r := chi.NewRouter() r.Use(middleware.Logger) r.Use(middleware.Recoverer) // Публичные маршруты r.Post("/api/register", handleRegister) r.Post("/api/login", handleLogin) r.Post("/api/logout", handleLogout) // Защищённые маршруты r.Group(func(r chi.Router) { r.Use(authMiddleware) r.Get("/api/me", handleMe) r.Get("/api/projects", handleListProjects) r.Post("/api/projects", handleCreateProject) r.Get("/api/projects/{id}", handleGetProject) r.Put("/api/projects/{id}", handleUpdateProject) r.Delete("/api/projects/{id}", handleDeleteProject) }) // Статика (фронт) sub, _ := fs.Sub(webFS, "web") r.Handle("/*", http.FileServer(http.FS(sub))) addr := ":8080" if p := os.Getenv("PORT"); p != "" { addr = ":" + p } log.Printf("Server started on http://localhost%s", addr) log.Fatal(http.ListenAndServe(addr, r)) }