mirror of
https://github.com/Xevion/Pac-Man.git
synced 2025-12-06 01:15:42 -06:00
64 lines
1.8 KiB
Markdown
64 lines
1.8 KiB
Markdown
# 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
|
|
|
|
- [x] Axum Webserver
|
|
- [x] Health Check
|
|
- [ ] Inbound Rate Limiting
|
|
- [ ] Outbound Rate Limiting
|
|
- [ ] Provider Circuit Breaker
|
|
- [x] Database
|
|
- [x] OAuth
|
|
- [x] Discord
|
|
- [x] 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.
|