mirror of
https://github.com/Xevion/Pac-Man.git
synced 2025-12-06 01:15:42 -06: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
- Leaderboard
- Score Submission
- Score Listings
- Pagination
- Global / Daily
- Name Restrictions & Flagging
- Avatars
- 8-bit Conversion
- Storage?
- Common Server/Client Crate
- CI/CD & Tests
Todo
- Refresh Token Handling (Encryption, Expiration & Refresh Timings)
- Refresh Token Background Job
- S3 Storage for Avatars
- Common Server/Client Crate, Basics
- Crate-level Log Level Configuration
- Span Tracing
- Avatar Pixelization
- Leaderboard API
- React-based Frontend
- Name Restrictions & Flagging
- Simple CI/CD Checks & Tests
- API Rate Limiting (outbound provider requests)
- API Rate Limiting (inbound requests, by IP, by User)
- Provider Circuit Breaker
- 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.