Pixie log the backlog api
  • Rust 78.3%
  • HTML 11.6%
  • Hurl 7.3%
  • PLpgSQL 0.9%
  • CSS 0.9%
  • Other 1%
Find a file
Jonatas Oliveira f4b3c62f88
All checks were successful
ci/woodpecker/push/pipeline/2 Pipeline was successful
ci/woodpecker/push/pipeline/1 Pipeline was successful
ci/woodpecker/cron/pipeline/1 Pipeline was successful
ci/woodpecker/cron/pipeline/2 Pipeline was successful
fix(ci): versiona o Cargo.lock e trava as resolucoes com --locked
O clippy-strict quebrou compilando tinyvec 1.13.0:

    error: cannot find macro `vec` in this scope
      --> tinyvec-1.13.0/src/tinyvec.rs:710:21
    error: could not compile `tinyvec` (lib) due to 1 previous error

A causa nao e o tinyvec. O .gitignore trazia, desde o `cargo new`, o
bloco padrao com `Cargo.lock` ignorado e o comentario "Remove Cargo.lock
from gitignore if creating an executable" logo acima -- e este crate
produz um executavel ([[bin]] pixie-api), nao uma biblioteca.

Sem o lock no repositorio, cada step do CI resolvia as dependencias do
zero ("Locking 479 packages to latest Rust 1.90 compatible versions") e
pegava o que estivesse publicado naquele minuto. Deu tinyvec 1.13.0, que
nao compila em 1.90. Localmente nada quebrava porque o lock existe no
disco e prende tinyvec em 1.11.0. Qualquer publicacao no crates.io podia
quebrar o build sem um unico commit nosso -- e a montante ainda estava a
janela de supply chain que um lock fecha.

Passa a versionar o Cargo.lock e adiciona --locked a build, test, clippy,
doc e release. Com --locked um lock defasado falha alto, com mensagem
clara, em vez de o cargo re-resolver em silencio.

Verificado com a mesma toolchain do CI (rustc 1.90.0, 1159e78c4):
cargo clippy --locked --all-targets -- -D warnings passa sem achados.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LFXVuu81dmPP2U1q4YLFHT
2026-09-04 08:08:32 +02:00
.cargo test(mutation): configura cargo-mutants como camada 3 do backend 2026-09-03 20:23:54 +02:00
.githooks build: fix ci erros 2026-03-26 10:27:19 +01:00
.sqlx fix(sqlx): declara nullability em colunas vindas de LEFT JOIN 2026-08-20 15:09:09 +02:00
.woodpecker fix(ci): versiona o Cargo.lock e trava as resolucoes com --locked 2026-09-04 08:08:32 +02:00
migrations feat: add metadata JSONB column to user_platforms 2026-04-21 08:48:07 +02:00
scripts build: improve config docker 2026-03-13 14:11:48 +01:00
src chore: mensagem acionavel de falha do Redis e corrige clippy let_and_return 2026-08-20 15:10:55 +02:00
static fix(static): adiciona o default_cover.png que nunca existiu 2026-08-20 15:09:33 +02:00
templates feat: add platform sync verification API endpoints 2026-04-13 10:28:55 +02:00
test-results feat: screenshots in library, steam wishlist sync, improved search 2026-03-20 08:57:05 +01:00
tests fix(tests): authenticate before creating a game in games.hurl 2026-08-20 09:16:45 +02:00
.audit.toml feat: add games management 2026-01-05 14:06:00 +01:00
.buildpacks build: add config for build in dokku 2026-02-11 16:32:29 +01:00
.env.example feat: add platform sync verification API endpoints 2026-04-13 10:28:55 +02:00
.gitignore fix(ci): versiona o Cargo.lock e trava as resolucoes com --locked 2026-09-04 08:08:32 +02:00
.pre-commit-config.yaml feat: add library e improve profile 2026-02-25 10:32:43 +01:00
app.json feat: FEAT-H Game Detail Page with analytics endpoints 2026-04-08 15:49:19 +02:00
Cargo.lock fix(ci): versiona o Cargo.lock e trava as resolucoes com --locked 2026-09-04 08:08:32 +02:00
Cargo.toml chore(deps): ammonia 4.1.4 e calamine 0.36, zerando o cargo audit 2026-08-20 15:10:31 +02:00
debug_render.sh feat: add library e improve profile 2026-02-25 10:32:43 +01:00
docker-compose.yml fix: fix empty field to keyrunes 2026-02-27 13:26:32 +01:00
Dockerfile build: improve config docker 2026-03-13 14:11:48 +01:00
fix_migration.sql fix(profile): correct game ID in profile page links 2026-04-09 13:50:20 +02:00
init_db.sh feat: add games management 2026-01-05 14:06:00 +01:00
LICENSE feat: add user management 2026-01-05 08:14:50 +01:00
parse_lcov.py feat: add games management 2026-01-05 14:06:00 +01:00
Procfile build: add config for build in dokku 2026-02-11 16:32:29 +01:00
README.md feat: add goal and list. mail smtp configure 2026-01-07 10:02:29 +01:00
rust-toolchain build: add config for build in dokku 2026-02-11 16:32:29 +01:00

Pixie API

A Rust-based API for Pixielog, featuring Keyrunes authentication, email confirmation, and Femtocat-styled views.

Prerequisites

  • Rust (latest stable)
  • Docker and Docker Compose
  • Postgres client (optional, for debugging)

Configuration

The application requires the following environment variables. A .env file can be used locally.

Variable Description Example
DATABASE_URL Postgres connection string postgres://postgres:password@localhost:5432/pixielog
SMTP_URL SMTP server URL smtp://localhost:1025
KEYRUNES_URL Keyrunes service URL http://localhost:3000 (internal) or http://keyrunes:3000 (docker)
APP_URL Public URL of this app http://localhost:8000

Running the Application

1. Start Infrastructure

Start Postgres, Mailhog, and Keyrunes using Docker Compose:

docker-compose up -d

2. Initialize Keyrunes (First Run Only)

Setup superuser and organization in Keyrunes:

docker compose exec keyrunes sh /setup.sh

3. Run Database Migrations

Initialize the pixielog database schema:

sqlx migrate run

3. Run Locally (Development)

Start the API server:

cargo run

The server will be available at http://localhost:8000.

4. Run via Docker

To run the entire stack including the API in Docker (if a Dockerfile is provided, otherwise mostly used for deps):

docker-compose up -d

(Note: Ensure your config or env vars point to the keyrunes container name if running inside docker network)

Development

View Docs

Swagger UI is available at: http://localhost:8000/swagger-ui/

Running Tests

Run unit and integration tests:

# Unit tests
cargo test

# Hurl Integration tests (requires running server)
hurl --test tests/auth.hurl