-
-
Cache Analyzer & Image Name Checker : Tool for inspecting CDN cache headers and validating image file naming consistency.
-
Admin Panel – Character List : Manage all characters as an admin: view, sort, edit or delete entries.
-
Admin Editor Modal (Image + Details) : Upload a new portrait (with automatic compression) and edit all character fields in one place.
-
Character Modal View : Click a card to view full details: larger portrait, bio, age, race, culture, and more.
-
Gallery Overview : A responsive grid displaying all characters with name, image, and summary.
🌟 Inspiration
I play The One Ring RPG with friends.
During our sessions, we kept forgetting who was who — NPCs, party members, their stories…
We needed a simple gallery to help us stay immersed. So I thought:
"Let’s build something fast with Bolt!"
What started as a fun side tool became a larger experiment in rapid solo dev using Bolt, Supabase, and AI tooling.
🧰 What it does
- 🖼️ Public Gallery with character portraits, names, and quick bios
- 🔍 Search and responsive masonry layout
- 🔐 Admin Panel with secure login and role restriction
- ✏️ Edit / Add / Delete characters via modals
- 🖼️ Image Uploads with automatic compression (JPEG ≤ 1 MB)
- 📡 Realtime updates via Supabase subscriptions
- 🚀 Cache Analyzer tool to validate CDN headers and cache strategies
🛠️ How I built it
As a solo dev, I built everything in under a week:
- Frontend: Built entirely with BOLT + Tailwind CSS
- Backend: Supabase (PostgreSQL DB, Storage for images, Auth for login, Realtime API)
- Hooks & Logic:
useAuth: manages login, logout, role checksImagesProvider: context for characters, Supabase sync, uploads, deletesuseEnums: fetch ENUM values (race, culture, etc.)imageCompressionService: compresses images with browser-image-compressioncache-analyzer.ts: tests CDN headers + busting logic
- Routing: react-router-dom (
/public,/adminprotected) - AI Assistants:
- Code: Copilot, ChatGPT 4.1, Claude 3.5, OpenAI Codex
- Images: GPT-4o (character art)
- Journals/Notes: NotebookLM, ChatGPT Custom GPTs
- Code: Copilot, ChatGPT 4.1, Claude 3.5, OpenAI Codex
All code is stored in GitHub and deployed through Netlify. The stack is lightweight, fast, and easy to scale.
🧩 Challenges I ran into
- Linking Supabase Auth to Bolt routes securely
- Compressing and naming images cleanly for cache performance
- Making ENUMs dynamic from the DB without needing to edit SQL manually
- Keeping the entire admin panel usable on small mobile screens
🏆 Accomplishments I'm proud of
- Fully working CRUD gallery in <48h, solo
- Real-time updates across devices
- Modular structure that will scale to campaign management
- Cache tools I now reuse on other Supabase projects
- Appreciated by our actual RPG table 😄
🎓 What I learned
- Bolt + Supabase = rapid prototyping dream
- Supabase Realtime makes syncing trivial once subscriptions are well-structured
- Edge Functions are great for email workflows
- AI can drastically reduce bug time, but still needs strong logic behind the code
- ENUM-based form UX is elegant but needs good dev tooling
🔮 What's next for One Ring Characters
- Filter by culture, status, race
- Sharable public profile pages for each character
- Role-based admin (GM vs viewer)
- Integration into my next project: JDR-Manager
Built with a love for tabletop games, solo dev, and the power of AI tooling ⚔️🛠️🤖
➕ JDR-Manager (expanding the concept)
After completing the One Ring Characters gallery, I decided to go further:
What if I could manage entire RPG campaigns — not just characters?
So I began work on a second app: JDR-Manager.
It reuses the same architecture (Bolt + Supabase) and pushes it further into a complete platform for Game Masters.
📽️ This second project is briefly showcased in the second part of the demo video.
🧙 What JDR-Manager already does:
Campaign Management
Create, edit, and publish campaigns with cover images and descriptions.Session Tracking
Log play sessions with date, title, notes, and player attendance.Journal System
Write and edit entries with rich formatting (using Tiptap editor). Journals can include inline images and be linked to campaigns.Character System
Manage characters (CRUD), upload avatars, and assign them to campaigns. Includes an admin table and modal editor.Email Notifications
Store player email preferences and send session reminders via Supabase Edge Functions + Mailjet.Public & Admin Modes
Public visitors can browse campaigns and characters; admins can edit everything via a protected interface.
⚙️ Technical Overview
- Built with React + Bolt.dev
- Supabase: PostgreSQL (with custom ENUMs), Auth, Storage, Realtime, and Edge Functions
- Modular hook system:
useAuth,useCampaigns,useJournals,useCharacters,useImageCleanup,useEmailNotifications - Optimized image handling and CDN cache-busting
- Public data caching for faster UX (with
localStorageand memory Map)
This project is still growing, but the vision is clear:
A free, modern, solo-built tool to help GMs plan, share, and run campaigns smoothly — with real-time updates, player notifications, and immersive visuals.
Built With
- bolt.dev
- chatgpt-4.1
- claude
- claude-3.7
- database
- github
- gpt-4o-(image-gen)
- openai-codex
- postgresql
- react
- realtime)
- storage
- sunoai-(music)
- supabase
- supabase-(auth
- supabase-edge-functions
- tailwind-css
- typescript
- vscode

Log in or sign up for Devpost to join the conversation.