A self-hosted link archival tool
- Go 76.3%
- Vue 18%
- TypeScript 3.1%
- CSS 1.2%
- Makefile 0.8%
- Other 0.5%
| .readme | ||
| .woodpecker | ||
| cmd/hako | ||
| docs | ||
| internal | ||
| webapp | ||
| .gitignore | ||
| .goreleaser.yml | ||
| Containerfile | ||
| docker-compose.yml | ||
| go.mod | ||
| go.sum | ||
| LICENSE | ||
| Makefile | ||
| README.md | ||
Hako
Hako is a Golang service with HTTP and WebSocket capabilities.
Tech stack
- Go
- Vue 3
- Bun
Screenshots
See docs/screenshots.
Running the Application
This project uses a Makefile for common tasks. Run make help to see all available commands.
Backend
To build and run the backend:
# Build the webapp (required for embedded frontend)
make build-webapp
# Run the server only (without building webapp)
make run-server
Frontend
The frontend is built with Vue.js and Vite, using Bun as the package manager:
# Run the webapp in development mode with hot-reload
make run-webapp
# Build the webapp for production
make build-webapp
Docker
Running with Docker Compose
To run Hako locally using Docker Compose:
# Build the docker binaries
make build-docker
# Start the container
docker compose up
# Or run in detached mode
docker compose up -d
The service will be available at http://localhost:8080.
Building Docker Images
To build Docker images using goreleaser (for production builds):
# Build Docker image locally (creates multi-arch images)
make build-docker
This will build Docker images for multiple architectures (amd64, arm64, armv7) using goreleaser.
Development
Development Commands
Common development tasks:
# Run linting (server and webapp)
make lint
# Run test suite
make test
# Format code
make format
# Clean build artifacts
make clean
# Clear dev data (keeps config.yaml)
make clean-devdata
Run make help to see all available commands.