How I built a multi-artist media-sharing platform for a Loi 1901 association — with zero database, zero build step, and zero monthly cost.
A newly formed French association needed a way for artists to share their work, connect with each other, and manage events — on a budget of exactly €0.
Loi 1901 associations run on volunteers and donations. Monthly SaaS fees, database hosting, and developer retainers were off the table.
The artists needed something that "just works" — no CMS training, no Markdown, no Git. Upload a photo, write a title, done.
Artists needed to own their data. No Big Tech platforms, no ad-driven algorithms, no terms-of-service that claim ownership of uploaded content.
Meet the creative duo driving this association forward.
Co-founder & Artist
Morgane is a multidisciplinary artist whose practice spans visual arts, community engagement, and cultural programming. As co-founder of the association, she brings creative vision and grassroots organizing to everything Mimo does.
Co-founder & Artist
Gaëtan is a sculptor and metal artist whose work blends soldering craftsmanship with psychedelic aesthetics. His practice explores the intersection of industrial materials and organic forms, creating pieces that challenge perception.
A React 19 SPA with no build step, a PHP flat-file backend, and JSON storage — deployed by rsync to IONOS shared hosting.
A single-page application using React 19, htm (tagged template literals), and GSAP animations. No Vite, no Webpack, no npm. The browser loads the source directly via ES module imports.
Six PHP files handle authentication, file uploads, comments, messages, calendar notes, and the artist API. All data stored as JSON files on disk — no MySQL, no PostgreSQL, no SQLite.
Browser (React 19 SPA)
├── Loads: index.html → main.js → copy.js (bilingual)
├── Gallery: reads photos/manifest.json (112 curated thumbnails)
├── Media: reads media/manifest.json (55 uploaded files)
└── API calls: /partage/*.php
├── login.php → bcrypt verify → session cookie
├── upload.php → file save → manifest.json update
├── index.php → gallery CRUD
├── messages_api.php → message wall
├── calendar_api.php → event notes
└── api.php → artist management
Storage (IONOS shared hosting)
├── data/*.json (flat-file, no database)
├── media/* (full-res uploads)
├── photos/* (480px curated thumbnails)
└── artists/*/avatar.jpg (artist profiles)
Real metrics from a real, live project — not a demo, not a mockup.
Runs on existing IONOS shared hosting — no additional services needed
No Vite, no Webpack, no npm. Edit HTML, rsync, done.
Full SPA + backend + bilingual copy in under 5,000 lines
JSON flat-file storage — readable, versionable, portable
Artist uploads stored as full-res files on disk
480px thumbnails for the public gallery
Auth, upload, gallery, messages, calendar, API
Full bilingual support — English and French
A complete association platform — not a landing page, not a placeholder.
Each artist gets a profile, can upload photos/videos/audio, and manage their own portfolio. Admin moderation built in.
Threaded comments on every media file. Like system with counter. Community interaction without the toxicity of social media.
Interactive calendar with note-taking. Members can add events, workshops, and rendez-vous. Shared across the community.
A community message board — leave words of encouragement, share ideas, or just say hello. Simple, warm, human.
Full bilingual support with language toggle. Every label, every section, every error message translated. French-first design.
bcrypt password hashing, PHP session management, upload token rotation. No OAuth dependency, no third-party auth service.
The no-build philosophy isn't a limitation — it's a strategic choice. Here's why it matters for this project:
No node_modules, no supply chain risk, no npm audit surprises. The only dependency is PHP — which IONOS provides.
Edit a file, rsync it to the server, done. No CI/CD pipeline, no Vercel, no Netlify. The deploy command is one line.
The JSON data files are human-readable. You can open artists.json in any text editor and understand the structure. No ORM, no migrations.
I build platforms like this for associations, small businesses, and creative communities. No vendor lock-in, no monthly fees, no complexity.