Inspiration
Art and cultural storytelling should not be limited by geography, venue costs, or technical expertise. We created Online Museum to give artists, educators, collectors, and organizations an accessible way to transform their work into an immersive exhibition that anyone can visit from a browser.
What it does
Online Museum lets users create, customize, and publish interactive 3D museums without specialized 3D skills. Creators can upload images and videos, organize them across four gallery rooms, customize wall finishes, add room introductions, and publish the finished exhibition through a shareable link.
Each museum supports 44 curated display positions, while visitors can move between rooms, explore the collection, and select individual works to discover their titles, descriptions, and media. A public directory also helps visitors discover active museums.
How we built it
We built the frontend with React, TypeScript, Vite, Three.js, React Three Fiber, and Drei. The gallery architecture was created through a Blender-based asset pipeline, optimized for real-time browser rendering, and enhanced with adaptive artwork frames, configurable walls, lighting, navigation, and interactive media.
The live platform uses a same-origin PHP and SQLite backend hosted on Hostinger for authentication, museum management, uploads, publishing, and account access. Supabase is also supported as an optional persistence layer. Playwright provides automated unit, integration, cross-browser, mobile, and end-to-end testing.
Challenges we ran into
The greatest challenge was delivering an immersive 3D experience without making the website slow or difficult to use, particularly on mobile devices. We optimized the gallery models, lazy-loaded the 3D viewer, loaded video only when needed, and limited texture loading to the active room.
We also had to preserve the original proportions of widely different artwork formats, maintain reliable data across editing and publishing, and fit a complete application backend into a shared-hosting environment. Cross-browser WebGL differences required extensive testing across Chromium, Firefox, WebKit, Android, and iPhone-sized viewports.
Accomplishments that we're proud of
We are proud that Online Museum evolved from a static gallery experiment into a deployed, full-stack platform at https://onlinemuseum.cc.
Creators can now register, build multiple museums, upload media, configure rooms, preview their work, and publish complete exhibitions. The platform includes a responsive public directory, a working demonstration museum, accessible visitor controls, an onboarding center, and a downloadable user guide.
We are equally proud of its reliability: the current release passes comprehensive automated tests, security checks, production builds, and live desktop and mobile validation.
What we learned
We learned that building a successful virtual museum is not only a 3D-rendering challenge. The editing experience, content structure, accessibility, performance, and publishing workflow are just as important as the visual environment.
We also learned that creative flexibility works best when supported by thoughtful constraints. A slot-based gallery gives creators meaningful control while keeping museum creation understandable, consistent, and performant.
What's next for Online Museum
Our next milestone is preparing Online Museum for its first public paid launch. This includes completing live Stripe checkout, subscription management, webhook, cancellation, failed-payment, and account-entitlement testing, followed by a professional review of the platform’s policies.
Beyond launch, we plan to introduce additional gallery templates, multilingual experiences, visitor analytics, private or password-protected exhibitions, and more tools for educators, cultural organizations, and professional creators.
Built With
- and-drei.-the-gallery-architecture-was-created-through-a-blender-based-asset-pipeline
- and-enhanced-with-adaptive-artwork-frames
- blender
- configurable-walls
- lighting
- navigation
- optimized-for-real-time-browser-rendering
- react
- react-three-fiber
- three.js
- typescript
- vite
Log in or sign up for Devpost to join the conversation.