generated from nhcarrigan/template
983b78b0e9
## Summary This PR includes multiple feature additions and fixes to improve the library application: ### 🎨 Base64 Image Upload Support - Fixed Fastify body limit (1MB → 10MB) to accommodate base64-encoded images - Corrected base64 size calculation and validation logic - Improved error handling with proper 400 status codes and helpful messages - Removed duplicate validation that was blocking uploads - Users can now upload cover images up to 5MB (decoded size) ### 📝 Reusable Form Components - Created 6 form components: `GameForm`, `BookForm`, `MusicForm`, `ShowForm`, `MangaForm`, `ArtForm` - All forms support both 'add' and 'edit' modes with pre-population - Integrated inline editing into all detail views (edit/delete buttons) - Enhanced admin suggestions workflow with full forms instead of basic modals - Added scroll-to-top when clicking edit in list views for better UX ### 🖼️ Default Cover Image - Added beautiful library reading image as default cover for all media types - Fixed static asset serving to use correct MIME types - Updated all 12 components (6 list views + 6 detail views) to always show images ### 🔒 Tiered Rate Limiting - Unauthenticated users: 100 requests/minute - Authenticated users: 500 requests/minute (5x more lenient) - Admin users: No rate limits (complete bypass via allowList) ### 🎮 Discord Integration - Auto-assign library member role to users in NHCarrigan Discord server - Checks server membership on every login - Only assigns role if user is in server and doesn't have it yet - Graceful error handling without blocking login - Similar pattern to badge refresh flow ### 📚 Documentation - Added comprehensive CLAUDE.md with: - Project structure and tech stack - Development workflow and commands - Database schema documentation - Authentication flow details - Security features - Code style conventions - Common gotchas and solutions ## Test Plan - [x] Base64 image uploads work for cover images up to 5MB - [x] Helpful error messages appear for validation failures - [x] Edit/delete buttons appear on all detail views for admin users - [x] Inline edit forms display and save correctly - [x] Admin suggestions workflow uses full forms for all media types - [x] Scroll-to-top works when editing from list views - [x] Default cover image displays when no cover is provided - [x] Static assets serve with correct MIME types - [x] Rate limiting works correctly for different user types - [x] Discord role assignment works on login - [x] All builds pass without errors - [x] No TypeScript errors ## Related Issues Closes #65 - Base64 image upload issue ✨ This pull request was created with help from Hikari~ 🌸 Reviewed-on: #66 Co-authored-by: Hikari <hikari@nhcarrigan.com> Co-committed-by: Hikari <hikari@nhcarrigan.com>
26 lines
1.1 KiB
Bash
26 lines
1.1 KiB
Bash
# Database
|
|
DATABASE_URL="op://Environment Variables - Naomi/Library/mongo url"
|
|
|
|
# JWT Secret
|
|
JWT_SECRET="op://Environment Variables - Naomi/Library/jwt secret"
|
|
|
|
# Discord OAuth
|
|
DISCORD_CLIENT_ID="op://Environment Variables - Naomi/Library/discord client id"
|
|
DISCORD_CLIENT_SECRET="op://Environment Variables - Naomi/Library/discord client secret"
|
|
|
|
# Admin Configuration
|
|
ADMIN_DISCORD_ID="op://Environment Variables - Naomi/Library/admin discord id"
|
|
|
|
# Discord Server
|
|
DISCORD_GUILD_ID="op://Environment Variables - Naomi/Library/discord server id"
|
|
SPONSOR_ROLE_ID="op://Environment Variables - Naomi/Library/sponsor role id"
|
|
MOD_ROLE_ID="op://Environment Variables - Naomi/Library/mod role id"
|
|
STAFF_ROLE_ID="op://Environment Variables - Naomi/Library/staff role id"
|
|
DISCORD_BOT_TOKEN="op://Environment Variables - Naomi/Library/discord bot token"
|
|
LIBRARY_ROLE_ID="op://Environment Variables - Naomi/Library/library role id"
|
|
|
|
# Application URL
|
|
BASE_URL="op://Environment Variables - Naomi/Library/localhost url"
|
|
|
|
# Logger
|
|
LOG_TOKEN="op://Environment Variables - Naomi/Alert Server/api_auth" |