# Quad4 Linking Tool A web linking tool for mapping relationships between entities. showcase image Desktop apps for Windows, macOS, and Linux are coming soon... ## Quick Start ### Using the Binary 1. Build the binary: ```sh task build ``` 2. Run the server: ```sh ./bin/linking-tool --port 8080 ``` 3. Open your browser at `http://localhost:8080` ### Using Docker ```sh docker run -p 8080:8080 git.quad4.io/quad4-software/linking-tool ``` Then open your browser at `http://localhost:8080` ## Features - Interactive graph visualization - Multiple entity types (person, email, phone, address, domain, org, IP, social) - Auto-save to IndexedDB - Import/Export JSON - Share link via base64 for smaller graphs - Undo/Redo support - PWA support (installable, offline-capable) - Native desktop app support (via Wails) - Single-binary lightweight web server - Support for 32-bit and 64-bit architectures (runs on old Raspberry Pi Zero W) ## Installation Options ### Self-Hosted Web Server The easiest way to self-host is using the single binary: ```sh task build ./bin/linking-tool --port 8080 ``` The binary will be located in `bin/` after building. ### Desktop Application Build the desktop application for your platform: ```sh task desktop-build ``` The binary will be located in `bin/` after building. ## Development ### Prerequisites - Go `1.25.5` - Node.js - pnpm - Wails (for desktop app development) ### Setup ```sh git clone https://git.quad4.io/quad4-software/linking-tool.git cd linking-tool pnpm install ``` ### Task The project uses [Task](https://taskfile.dev/) for all development tasks. ``` | Task | Description | |---------------------|-------------------------------------------| | default | Show available tasks | | dev | Run development servers (Go & SvelteKit) | | build | Build the single binary web server | | build:frontend | Build frontend only | | build:backend | Build backend binary only | | package | Package the application | | release | Build binaries for all platforms | | build-linux-amd64 | Build Linux AMD64 binary | | build-linux-arm64 | Build Linux ARM64 binary | | build-linux-armv6 | Build Linux ARMv6 binary | | build-linux-armv7 | Build Linux ARMv7 binary | | build-windows-amd64 | Build Windows AMD64 binary | | build-darwin-amd64 | Build Darwin AMD64 binary | | build-darwin-arm64 | Build Darwin ARM64 binary | | build-freebsd-amd64 | Build FreeBSD AMD64 binary | | docker-build | Build Docker image | | docker-run | Run Docker container | | docker-builder | Build and extract binaries using Docker | | podman-build | Build Podman image | | podman-run | Run Podman container | | podman | Build and run Podman container | | desktop-build | Build desktop application | | desktop-linux | Build desktop application for Linux | | desktop-windows | Build desktop application for Windows | | desktop-darwin | Build desktop application for Darwin | | desktop-dev | Run desktop app in development mode | | clean | Clean build artifacts | | setup | Setup development environment | | install | Install dependencies | | install:ci | Install dependencies for CI (frozen lock) | | preview | Preview production build | | check | Run type checking | | lint | Run linter | | format | Format code | | version:minor | Bump minor version in package.json | | version:major | Bump major version in package.json | example: task dev you might to set alias alias task=`go-task` ``` ## Contributing Send us an email at [team@quad4.io](mailto:team@quad4.io) for any issues or feedback. ## License [BSD 3-Clause](LICENSE)