# Hello World - Go + PostgreSQL + Next.js Full-stack Hello World application using Go backend, PostgreSQL database, and Next.js frontend. ## Project Structure ``` . ├── backend/ # Go API server │ ├── main.go │ ├── go.mod │ └── Dockerfile ├── frontend/ # Next.js application │ ├── app/ │ ├── package.json │ └── Dockerfile ├── docker-compose.yml └── README.md ``` ## Quick Start with Docker ```bash docker-compose up --build ``` Services: - Frontend: http://localhost:3000 - Backend API: http://localhost:8080 - PostgreSQL: localhost:5432 ## Manual Setup ### Backend (Go) ```bash cd backend go mod tidy DB_HOST=localhost DB_PORT=5432 DB_USER=postgres DB_PASSWORD=postgres DB_NAME=hellodb go run main.go ``` ### Frontend (Next.js) ```bash cd frontend npm install NEXT_PUBLIC_API_URL=http://localhost:8080 npm run dev ``` ### PostgreSQL ```bash docker run -d \ --name hello-postgres \ -e POSTGRES_USER=postgres \ -e POSTGRES_PASSWORD=postgres \ -e POSTGRES_DB=hellodb \ -p 5432:5432 \ postgres:16-alpine ``` ## API Endpoints | Endpoint | Method | Description | |----------|--------|-------------| | `/api/hello` | GET | Returns hello message and DB status | | `/api/health` | GET | Health check | ## Tech Stack - **Backend**: Go 1.21 - **Database**: PostgreSQL 16 - **Frontend**: Next.js 14, React 18, TypeScript ## CI/CD Pipeline ### Woodpecker CI `.woodpecker.yaml` файл нь дараах алхмуудыг гүйцэтгэнэ: 1. **build-backend** - Go backend Docker image build 2. **build-frontend** - Next.js frontend Docker image build 3. **push-backend** - Harbor registry рүү backend push 4. **push-frontend** - Harbor registry рүү frontend push 5. **update-manifests** - Kubernetes manifest дахь image tag шинэчлэх 6. **notify** - Deployment notification ### ArgoCD (GitOps) ArgoCD application тохируулах: ```bash kubectl apply -f argocd-application.yaml -n argocd ``` ArgoCD нь `manifests/` directory-г автоматаар sync хийнэ. ## Kubernetes Deployment ### Manifests ``` manifests/ ├── namespace.yaml # hell-world namespace ├── postgres-secret.yaml # Database credentials ├── postgres-pvc.yaml # PostgreSQL storage ├── postgres-deployment.yaml # PostgreSQL deployment ├── postgres-service.yaml # PostgreSQL service ├── backend-deployment.yaml # Go backend deployment ├── backend-service.yaml # Backend service ├── frontend-deployment.yaml # Next.js frontend deployment ├── frontend-service.yaml # Frontend service ├── ingress.yaml # Ingress with TLS └── kustomization.yaml # Kustomize config ``` ### Manual Deploy ```bash kubectl apply -k manifests/ ``` ### URLs (Production) - Frontend: https://hell-world.gecore.mn - Backend API: https://hell-world-api.gecore.mn