| .github/workflows | ||
| .gitignore | ||
| bloggo.webp | ||
| LICENSE | ||
| Makefile | ||
| README.md | ||
🏗️ Architecture
This repository serves as the build orchestrator for the Bloggo project. The actual source code is maintained in separate repositories:
- Frontend: bloggo-frontend - React + TypeScript
- Backend: bloggo-backend - Go + Chi Router
📦 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
- Clone the frontend and backend repositories:
git clone https://github.com/Elagoht/bloggo-frontend frontend
git clone https://github.com/Elagoht/bloggo-backend backend
- Run frontend in development mode:
cd frontend
npm install
npm run dev
- 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:
- Install frontend dependencies
- Build the frontend
- Embed the frontend into the backend
- 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:
- 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:
- Frontend issues/PRs → bloggo-frontend
- Backend issues/PRs → bloggo-backend
- Build/Release issues → This repository
🔒 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:
- Create a
.envfile with your configuration (copy from.env.example) - Run the binary:
- Linux/macOS:
./bloggo-linux-amd64(or your platform's binary)
- Linux/macOS:
- 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!