Files
Pac-Man/pacman-server
dependabot[bot] ba504558b0 chore(deps): bump the rust-minor group across 1 directory with 9 updates
Bumps the rust-minor group with 8 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [bitflags](https://github.com/bitflags/bitflags) | `2.9.4` | `2.10.0` |
| [circular-buffer](https://github.com/andreacorbellini/rust-circular-buffer) | `1.1.0` | `1.2.0` |
| rust-embed | `8.7.2` | `8.9.0` |
| [tokio](https://github.com/tokio-rs/tokio) | `1.47.1` | `1.48.0` |
| [http](https://github.com/hyperium/http) | `1.3.1` | `1.4.0` |
| [hyper](https://github.com/hyperium/hyper) | `1.7.0` | `1.8.1` |
| [bytes](https://github.com/tokio-rs/bytes) | `1.10.1` | `1.11.0` |
| [bon](https://github.com/elastio/bon) | `3.7.2` | `3.8.1` |



Updates `bitflags` from 2.9.4 to 2.10.0
- [Release notes](https://github.com/bitflags/bitflags/releases)
- [Changelog](https://github.com/bitflags/bitflags/blob/main/CHANGELOG.md)
- [Commits](https://github.com/bitflags/bitflags/compare/2.9.4...2.10.0)

Updates `circular-buffer` from 1.1.0 to 1.2.0
- [Release notes](https://github.com/andreacorbellini/rust-circular-buffer/releases)
- [Changelog](https://github.com/andreacorbellini/rust-circular-buffer/blob/master/CHANGELOG.md)
- [Commits](https://github.com/andreacorbellini/rust-circular-buffer/compare/v1.1.0...v1.2.0)

Updates `rust-embed` from 8.7.2 to 8.9.0

Updates `serde` from 1.0.225 to 1.0.228
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.225...v1.0.228)

Updates `tokio` from 1.47.1 to 1.48.0
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.47.1...tokio-1.48.0)

Updates `http` from 1.3.1 to 1.4.0
- [Release notes](https://github.com/hyperium/http/releases)
- [Changelog](https://github.com/hyperium/http/blob/master/CHANGELOG.md)
- [Commits](https://github.com/hyperium/http/compare/v1.3.1...v1.4.0)

Updates `hyper` from 1.7.0 to 1.8.1
- [Release notes](https://github.com/hyperium/hyper/releases)
- [Changelog](https://github.com/hyperium/hyper/blob/master/CHANGELOG.md)
- [Commits](https://github.com/hyperium/hyper/compare/v1.7.0...v1.8.1)

Updates `bytes` from 1.10.1 to 1.11.0
- [Release notes](https://github.com/tokio-rs/bytes/releases)
- [Changelog](https://github.com/tokio-rs/bytes/blob/master/CHANGELOG.md)
- [Commits](https://github.com/tokio-rs/bytes/compare/v1.10.1...v1.11.0)

Updates `bon` from 3.7.2 to 3.8.1
- [Release notes](https://github.com/elastio/bon/releases)
- [Changelog](https://github.com/elastio/bon/blob/master/release-plz.toml)
- [Commits](https://github.com/elastio/bon/compare/v3.7.2...v3.8.1)

---
updated-dependencies:
- dependency-name: bitflags
  dependency-version: 2.10.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: rust-minor
- dependency-name: circular-buffer
  dependency-version: 1.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: rust-minor
- dependency-name: rust-embed
  dependency-version: 8.9.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: rust-minor
- dependency-name: serde
  dependency-version: 1.0.228
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: rust-minor
- dependency-name: tokio
  dependency-version: 1.48.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: rust-minor
- dependency-name: http
  dependency-version: 1.4.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: rust-minor
- dependency-name: hyper
  dependency-version: 1.8.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: rust-minor
- dependency-name: bytes
  dependency-version: 1.11.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: rust-minor
- dependency-name: bon
  dependency-version: 3.8.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: rust-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-02 01:08:29 +00:00
..

pacman-server

Despite the naming of this crate, it's not a server for the Pac-Man game allowing multiplayer or anything super interesting.

This crate is a webserver that hosts an OAuth login and leaderboard API for the main pacman crate to hook into.

Features

  • Axum Webserver
    • Health Check
    • Inbound Rate Limiting
    • Outbound Rate Limiting
    • Provider Circuit Breaker
  • Database
  • OAuth
    • Discord
    • GitHub
    • Google
  • Leaderboard
    • Score Submission
    • Score Listings
      • Pagination
      • Global / Daily
  • Name Restrictions & Flagging
  • Avatars
    • 8-bit Conversion
    • Storage?
  • Common Server/Client Crate
  • CI/CD & Tests

Todo

  1. Refresh Token Handling (Encryption, Expiration & Refresh Timings)
  2. Refresh Token Background Job
  3. S3 Storage for Avatars
  4. Common Server/Client Crate, Basics
  5. Crate-level Log Level Configuration
  6. Span Tracing
  7. Avatar Pixelization
  8. Leaderboard API
  9. React-based Frontend
  10. Name Restrictions & Flagging
  11. Simple CI/CD Checks & Tests
  12. API Rate Limiting (outbound provider requests)
  13. API Rate Limiting (inbound requests, by IP, by User)
  14. Provider Circuit Breaker
  15. Merge migration files

Notes

Image Handling

Avatar images are stored in S3 as follows:

  • avatars/{user_public_id}/{avatar_hash}.original.png

  • avatars/{user_public_id}/{avatar_hash}.mini.png

  • The original image is converted to PNG and resized to a maximum of 512x512 pixels.

    • Ideally, non-square images are fitted to a square.
  • The mini image is converted to PNG and resized to a maximum of 16x16, 24x24, or 32x32 pixels. TBD.

  • All images receive a Content-Type header of image/png.

Image processing is handled immediately asynchronously, allowing a valid presigned URL to be generated immediately.