Initialize project structure with main application, configuration, and error handling
DDavid committed on 2026-06-27 23:15 commit df4c5e7
.gitignore +2 −0
+.env*
+docs
cmd/server/main.go +7 −0
+package server
+
+import "fmt"
+
+func main() {
+ fmt.Println("sup, nerds")
+}
go.mod +5 −0
+module gitgud
+
+go 1.25.0
+
+require github.com/joho/godotenv v1.5.1
go.sum +2 −0
+github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0=
+github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4=
internal/domain/errors.go +11 −0
+package domain
+
+import "errors"
+
+var (
+ ErrNotFound = errors.New("not found")
+ ErrConflict = errors.New("already exists")
+ ErrPermission = errors.New("permission denied")
+ ErrUnauthorized = errors.New("unauthorized")
+ ErrValidation = errors.New("validation failed")
+)
internal/infra/config/config.go +35 −0
+package config
+
+import (
+ "os"
+ "path/filepath"
+
+ "github.com/joho/godotenv"
+)
+
+type Config struct {
+ Addr string
+ DataDir string
+ SessionKey string // random string
+}
+
+func (c Config) DBPath() string {
+ return filepath.Join(c.DataDir, "app.db")
+}
+
+func (c Config) ReposDir() string {
+ return filepath.Join(c.DataDir, "repos")
+}
+
+func Load() (Config, error) {
+ err := godotenv.Load()
+ if err != nil {
+ return Config{}, err
+ }
+
+ return Config{
+ Addr: os.Getenv("GITGUD_ADDR"),
+ DataDir: os.Getenv("GITGUD_DATA_DIR"),
+ SessionKey: os.Getenv("GITGUD_SESSION_KEY"),
+ }, nil
+}