Self contained Go+React single binary Blog CMS with version management
Find a file
2025-10-10 23:57:30 +03:00
.github/workflows ci: update Makefile and use it on workflow 2025-10-10 23:57:30 +03:00
.gitignore fix: build command will install frontend dependencies 2025-10-04 16:04:44 +03:00
bloggo.webp chore: update bloggo.webp image 2025-10-10 23:27:04 +03:00
LICENSE docs: badged and logo added to README.md 2025-10-04 18:50:11 +03:00
Makefile ci: update Makefile and use it on workflow 2025-10-10 23:57:30 +03:00
README.md docs: badged and logo added to README.md 2025-10-04 18:50:11 +03:00

Bloggo

GitHub Actions Workflow Status Go Version Node Version GitHub License Platform Platform

A modern, full-stack blog platform with embedded frontend and backend in a single binary.

🏗️ Architecture

This repository serves as the build orchestrator for the Bloggo project. The actual source code is maintained in separate repositories:

📦 Releases

Pre-built binaries are available on the Releases page.

Quick Install

Linux AMD64:

wget https://github.com/Elagoht/bloggo/releases/latest/download/bloggo-linux-amd64.tar.gz
tar -xzf bloggo-linux-amd64.tar.gz
chmod +x bloggo-linux-amd64
./bloggo-linux-amd64

Linux ARM64:

wget https://github.com/Elagoht/bloggo/releases/latest/download/bloggo-linux-arm64.tar.gz
tar -xzf bloggo-linux-arm64.tar.gz
chmod +x bloggo-linux-arm64
./bloggo-linux-arm64

macOS AMD64 (Intel):

wget https://github.com/Elagoht/bloggo/releases/latest/download/bloggo-darwin-amd64.tar.gz
tar -xzf bloggo-darwin-amd64.tar.gz
chmod +x bloggo-darwin-amd64
./bloggo-darwin-amd64

macOS ARM64 (Apple Silicon):

wget https://github.com/Elagoht/bloggo/releases/latest/download/bloggo-darwin-arm64.tar.gz
tar -xzf bloggo-darwin-arm64.tar.gz
chmod +x bloggo-darwin-arm64
./bloggo-darwin-arm64

Verify Download

Download the checksums file and verify your binary:

wget https://github.com/Elagoht/bloggo/releases/latest/download/checksums.txt
sha256sum -c checksums.txt

🛠️ Development

Prerequisites

  • Node.js 20+
  • Go 1.23+
  • Make

Local Development

  1. Clone the frontend and backend repositories:
git clone https://github.com/Elagoht/bloggo-frontend frontend
git clone https://github.com/Elagoht/bloggo-backend backend
  1. Run frontend in development mode:
cd frontend
npm install
npm run dev
  1. Run backend in development mode (in another terminal):
cd backend
go run cli/main.go

Building

Build for your current platform:

make build

This will:

  1. Install frontend dependencies
  2. Build the frontend
  3. Embed the frontend into the backend
  4. Build the Go binary for your current platform

Clean build artifacts:

make clean

🚀 Release Process

Releases are automated via GitHub Actions. When you push a tag, binaries are built for:

  • Linux: AMD64, ARM64
  • macOS: AMD64 (Intel), ARM64 (Apple Silicon)

To create a new release:

  1. Tag your commit with a semantic version:
git tag v1.0.0
git push origin v1.0.0

Version Format

  • Stable Release: v1.0.0, v2.1.3
  • Release Candidate: v1.0.0-rc1, v2.1.0-rc2
  • Beta: v1.0.0-beta1, v2.1.0-beta2
  • Alpha: v1.0.0-alpha1, v2.1.0-alpha2

Tags ending with -rc, -beta, or -alpha will be marked as pre-releases.

⚙️ Configuration

Backend Configuration

The backend requires a .env file with the following variables:

# Server
PORT=8723

# JWT (required - must be 32+ characters)
JWT_SECRET=your-secret-key-here-min-32-chars
ACCESS_TOKEN_DURATION=900      # 15 minutes
REFRESH_TOKEN_DURATION=604800  # 7 days

# Gemini AI (optional)
GEMINI_API_KEY=your-gemini-api-key

# Trusted Frontend Key (required - must be 32+ characters)
TRUSTED_FRONTEND_KEY=your-frontend-key-here-32-chars

An .env.example file is included in each release tarball.

📂 Project Structure

bloggo/                      # Build repository (this repo)
├── .github/
│   └── workflows/
│       └── release.yml      # Automated release workflow
├── Makefile                 # Build commands
└── README.md               # This file

External repositories:
├── bloggo-frontend/         # React frontend source
└── bloggo-backend/          # Go backend source

📝 License

See the individual repositories for license information:

🤝 Contributing

Contributions should be made to the respective repositories:

🔒 Security

  • All secrets are stored in environment variables
  • JWT-based authentication
  • Rate limiting
  • SQL injection protection via prepared statements

📦 Deployment

After extracting the release archive:

  1. Create a .env file with your configuration (copy from .env.example)
  2. Run the binary:
    • Linux/macOS: ./bloggo-linux-amd64 (or your platform's binary)
  3. The application will create:
    • bloggo.sqlite - Database file (on first run)
    • uploads/ - File storage directory (automatically)

The application will be available at http://localhost:8723 (or your configured port).

No Node.js or frontend dependencies needed in production!