feat: setup monorepo infra — Go API + Vue 3 + PostgreSQL + Dockerfile Dokploy

Monorepo com apps/api (Go 1.23 + chi + pgx) e apps/web (Vue 3 + Vite + TypeScript).
Dockerfile multi-stage consolida tudo em imagem única (~25MB) para deploy no Dokploy.
Migrations rodando na inicialização; Vue embedado no binário Go via //go:embed.

Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
This commit is contained in:
2026-05-26 20:06:37 -03:00
co-authored by Claude Sonnet 4.6
commit a3d8f363a5
25 changed files with 2131 additions and 0 deletions
+28
View File
@@ -0,0 +1,28 @@
package db
import (
"context"
"fmt"
"time"
"github.com/jackc/pgx/v5/pgxpool"
)
func Connect(ctx context.Context, dsn string) (*pgxpool.Pool, error) {
var pool *pgxpool.Pool
var err error
for i := range 10 {
pool, err = pgxpool.New(ctx, dsn)
if err == nil {
if pingErr := pool.Ping(ctx); pingErr == nil {
return pool, nil
}
pool.Close()
}
wait := time.Duration(i+1) * 500 * time.Millisecond
fmt.Printf("db not ready, retrying in %s...\n", wait)
time.Sleep(wait)
}
return nil, fmt.Errorf("could not connect to database after retries: %w", err)
}