Blanko is a simple, lightweight blog system powered by React and Go.
Note
Dev work in progress! Not ready for production yet.
BlankoBlog/
├── backend/ # Go backend API
│ ├── cmd/ # Application entrypoints
│ ├── internal/ # Private application code
│ │ ├── handlers/ # HTTP handlers
│ │ ├── models/ # Data models
│ │ ├── services/ # Business logic
│ │ └── database/ # Database layer
│ ├── pkg/ # Public packages
│ └── migrations/ # Database migrations
├── frontend/ # React frontend
│ ├── src/
│ │ ├── components/ # Reusable components
│ │ ├── pages/ # Page components
│ │ ├── services/ # API services
│ │ └── utils/ # Utility functions
│ └── public/ # Static assets
├── docs/ # Documentation
├── scripts/ # Build and deployment scripts
└── data/ # SQLite database storage
- Language: Go 1.21+
- Framework: Gin (HTTP router)
- Database: SQLite with GORM
- Authentication: JWT
- Framework: React 18+
- UI Library: Material-UI (MUI)
- Routing: React Router
- HTTP Client: Axios
- Build Tool: Vite
- ✅ Browse blog posts
- ✅ Read individual blog posts
- ✅ Responsive design
- ✅ Admin login
- ✅ Create new blog posts
- ✅ Edit existing blog posts
- ✅ Delete blog posts
- Go 1.21+
- Node.js 18+
- Docker & Docker Compose (optional)
-
Clone the repository
git clone https://github.com/bytetopia/BlankoBlog.git cd BlankoBlog -
Build and run with Docker
# Quick build ./scripts/build.sh # Or use docker-compose docker-compose up --build
The application will be available at
http://localhost:8080 -
Build and publish to Docker Hub
# Build only ./scripts/build-and-publish.sh # Build and push to Docker Hub ./scripts/build-and-publish.sh --push # Custom tag and push ./scripts/build-and-publish.sh --tag v1.0.0 --push # Custom repository ./scripts/build-and-publish.sh --registry myuser/blankoblog --push
-
Clone the repository
git clone https://github.com/bytetopia/BlankoBlog.git cd BlankoBlog -
Backend Setup
cd backend go mod tidy go run cmd/server/main.go -
Frontend Setup (in a separate terminal)
cd frontend npm install npm run devFor development, the frontend runs on
http://localhost:5173and the backend onhttp://localhost:8080
The project uses a single Docker image that:
- Builds the React frontend using Node.js
- Copies the frontend build artifacts to the Go backend's static directory
- Builds the Go backend application
- Serves both frontend and API from a single container on port 8080
This unified approach simplifies deployment and reduces the number of containers needed.
- Follow Go best practices and project layout standards
- Use React functional components with hooks
- Keep components small and focused
- Write clean, readable code with proper error handling
- Use TypeScript for better type safety (frontend)
- Fork the repository
- Create a feature branch
- Make your changes
- Write tests
- Submit a pull request
See LICENSE file for details.