- Go 78.1%
- Vue 15.1%
- TypeScript 2.9%
- HTML 1.7%
- CSS 0.9%
- Other 1.3%
|
All checks were successful
ci/woodpecker/tag/release Pipeline was successful
The application now gracefully handles missing config files and can be configured entirely through environment variables. File-not-found errors are ignored while other errors (like permission denied) are still reported. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com> |
||
|---|---|---|
| .readme | ||
| .woodpecker | ||
| cmd/hako | ||
| devdata | ||
| docs | ||
| e2e | ||
| internal | ||
| scripts | ||
| webapp | ||
| .gitignore | ||
| .golangci.yaml | ||
| .goreleaser.yml | ||
| Containerfile | ||
| docker-compose.yml | ||
| go.mod | ||
| go.sum | ||
| LICENSE | ||
| Makefile | ||
| README.md | ||
Hako
Hako is a self-hosted link archival service that automatically saves and preserves web content. Save URLs and let Hako archive them using multiple archival methods, extract content for full-text search, and organize your saved links with categories.
Features
- Link Archival: Save URLs and automatically archive web content.
- Multiple Archivers: Support for different archival methods depending on the site or content type.
- Content Extraction: Extract text content from PDFs and web pages for full-text search
- Rule Engine: Configurable rules that automatically select appropriate archivers based on URL patterns, hostnames, and content types
- Categories: Organize links in categories.
- Archive History: Track multiple archive versions for each link if archived multiple times.
- Full-Text Search: Search through archived content.
- Self-Hosted: Full control over your archived data
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
# Run integration tests
make e2e
# 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.