A Go backend service for tracking Path of Exile characters, snapshots.
It provides a REST API, background data fetcher, and integrates with the Path of Exile public API.
Well... I am really bad building and understanding a lot of stuff in Path of Exile and my biggest issue to really enjoy the game is understanding build upgrades, when and which upgrades do i need to do. So a wanted to track good players to see which updates they do.
POB Export The application will generate a snapshot automatically, this string will importable into PoBDONE- SSH Application There will be an option to connect to a server via ssh to see in there directly the snapshots
- REST API for managing accounts, characters, and passive skill snapshots
- Background fetcher for periodically updating character data from the PoE API
- SQLite database with migration support (Goose)
- Structured logging with zerolog
- Graceful shutdown for both API and background services
- Basic functionallity is done On the current state of the application the basic functionallity to periodicly import builds from certain people/characters is already working and the application can be runned locally without any issue (i think). Now. I will try to host it somewhere, im not sure if it will have a UI or will it be just like an API to fetch this data. Also, i will focus on building a TUI that once hosted, anyone will be able to see it via SSH.
cmd/
main.go # Application entrypoint
api/ # API server setup
config/ # Configuration loading
db/ # Database and migrations
models/ # Data models (internal and API)
poeclient/ # Path of Exile API client
repository/ # Database access layer
services/ # Business logic and background fetcher
utils/ # Logging and helpers
- Go 1.20+
- Goose for migrations
-
Clone the repository
git clone https://github.com/yourusername/exile-tracker.git cd exile-tracker -
Configure environment variables
Create a
.envfile or set the following variables:DB_PATH=./data.db PORT=:3000 -
Run database migrations
goose -dir ./migrations sqlite3 ./data.db up
-
Build and run the server
go build -o exile-tracker ./cmd ./exile-tracker
All endpoints are prefixed with /api/v1.
GET /pobsnapshots/character/{characterId}— List snapshots for a characterGET /pobsnapshots/character/{characterId}/latest— Get latest snapshot for a characterGET /pobsnapshots/{id}— Get snapshot by ID
- Logging is handled by zerolog.
- API routing uses chi.
- Database access uses the standard
database/sqlpackage. - Background fetcher runs on a configurable interval.
MIT