Skip to content

Repository files navigation

SkinPrice

SkinPrice is a desktop application for tracking skin prices with a local-first setup. The app is built on Wails, Go, and React, and stores data in SQLite by default.

Features

  • Search skins by name.
  • Save skins to a personal watchlist.
  • Refresh the price for one skin or the whole list.
  • Store data locally without requiring external infrastructure.
  • Use SQLite by default, with optional Postgres support for development scenarios.

Tech Stack

  • Backend: Go
  • Desktop runtime: Wails v2
  • Frontend: React + TypeScript + Vite
  • Default database: SQLite

Release Downloads

Tagged releases publish bootstrap packages for supported desktop platforms. Each bootstrap package already contains the launcher, current.json, and the latest application build in versions/<version>/.

These links point to bootstrap assets from the most recent published GitHub Release.

Project Layout

.
├── skinprice/                # Wails application
│   ├── frontend/             # React + TypeScript frontend
│   ├── internal/             # Backend application code
│   ├── build/                # Wails build configuration and output
│   ├── app.go
│   ├── main.go
│   └── wails.json
├── Makefile
├── go.mod
└── .github/workflows/        # CI/CD pipelines

Requirements

  • Go 1.26.3
  • Node.js 20
  • npm
  • Wails v2

For Linux desktop builds, system packages required by Wails must also be installed.

Local Development

  1. Create the environment file:
cp .env.example .env
  1. Install frontend dependencies:
cd skinprice/frontend
npm install
  1. Start the desktop app in development mode:
cd ../
wails dev

If wails is not installed:

go install github.com/wailsapp/wails/v2/cmd/wails@v2.12.0

Environment Variables

Example configuration is provided in .env.example.

Important variables:

  • APP_ENV=local
  • APP_DB_DRIVER=sqlite3
  • APP_DB_NAME=./skinprice.db
  • STEAM_BASE_URL=https://steamcommunity.com/market
  • LISSKINS_BASE_URL=https://api.lis-skins.com/v1
  • HTTP_TIMEOUT_SECONDS=10
  • CACHE_TTL_SECONDS=300
  • LOG_LEVEL=debug
  • LOG_TO_FILE=true

SQLite is the default and recommended storage for local usage. Postgres can be enabled for development if needed.

Quality Checks

Backend tests:

go test ./...

LisSkins токен

Для поиска через LisSkins нужен персональный API-токен.

Обязательные env

  • TOKEN_ENCRYPTION_KEY — base64-ключ длиной 32 байта (AES-256-GCM).

Пример генерации:

openssl rand -base64 32

Где взять токен LisSkins

  1. Откройте профиль LisSkins: https://lis-skins.com/profile/settings.
  2. Сгенерируйте/скопируйте API-токен в личном кабинете.
  3. В приложении переключитесь на источник LisSkins, вставьте токен и нажмите Сохранить токен.

Как сбросить токен локально

  • Через UI: повторно откройте экран поиска LisSkins и очистите/обновите токен.
  • Через БД SQLite вручную:
sqlite3 skinprice/skinprice.db "DELETE FROM source_states WHERE source = 'lisskins';"

После удаления приложение снова покажет CTA на ввод токена.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages