Own product · Content site
A cat museum you explorelike a metro network.
Miawseo gathers 20 cat breeds, each with 6 rooms (origin, anatomy, temperament, care and more), and a wall where people upload photos of their cat. I designed and built it end to end in Next.js. No photo goes public until someone approves it.
Cat photos: Wikimedia Commons, under free licenses (CC BY, CC BY-SA and public domain). Author and license of each photo in the Miawseo repository.
- 20
- breeds, and each one is a station
- 120
- rooms to explore, 6 per breed
- 8
- stations on the history line
Own project
What it solves
How I organized a lot of content and how I review what people upload
With Miawseo I show how I turn a lot of content into a path that is easy to follow, and how I open a site to contributions without losing control of what gets published.
- A lot of content
- The challenge
- Twenty breeds with their history can turn into a very long list.
- How I solved it
- Each breed is a station on line M1 (Breeds), and line M2 walks through the cat’s history in 8 stations.
- Reading without getting lost
- The challenge
- Each breed has a lot of information and one long text is tiring to read.
- How I solved it
- Six rooms per breed (introduction, origin, anatomy, temperament, care and curiosity) you move through with arrows, dots or station buttons.
- Letting people take part
- The challenge
- If only the author publishes, the site does not reflect its community.
- How I solved it
- The «I have one» button opens a form to upload your cat’s photo, with its name and your consent.
- Not losing control
- The challenge
- Opening uploads invites spam and photos that should not be there.
- How I solved it
- Several locks on upload and a manual review: the photo stays pending until someone approves it.
How it works
How content reaches the museum and a photo reaches the wall
Pick a step to see how the museum is explored and how a photo reaches the wall. The breed names are the real ones.
M1 · Breeds
- Maine Coon
- Siamés
- Persa
- Bengalí
- Sphynx
- Ragdoll
M2 · History
- c. 7500 BC
- …
- Internet star
What is included
The parts of the site and the moderation panel
- Metro-style navigationLine M1 for breeds and line M2 for history, with search. A third line is under construction.
- 120 roomsSix per breed: introduction, origin, anatomy, temperament, care and curiosity. You can move through them with the keyboard.
- Michi PlazaA wall per breed with the approved photos. Each breed’s page shows the first 6.
- Locks on uploadPer-IP limit, a hidden field only bots fill in, a minimum time to fill in the form, a check of the image’s real format and a 5 MB maximum.
- Moderation panelList of pending photos with a preview and buttons to approve or reject, protected by a token.
- TechnologyNext.js 15, React 19 and strict TypeScript, with no extra runtime libraries.
Control and limits
What the site controls and what it does not do yet
What it does
- Checks the file’s real content (JPG, PNG or WebP), from 200 to 8000 px and up to 5 MB.
- Accepts 5 uploads every 10 minutes per IP and drops bots with a hidden field and a minimum time.
- Keeps photos outside the public folder and blocks tricky paths.
- Serves a photo only once it is approved.
What it does not do yet
- Strip EXIF data from photos: if yours has a location, remove it before uploading.
- Approve photos automatically: a person always reviews them.
- Spread the load across several servers: the per-IP limit and the storage are per process.
- Ask for an account: you upload a photo without signing up.
Who it is for
When it makes sense and when it does not yet
It makes sense if
- You have a lot of content (a catalog, an archive, a museum, a directory) and people get lost in it.
- You want to open your site to contributions without losing control of what is published.
- You want a tailor-made editorial site, not a template.
Not yet, if
- You need a store with payments: this is an editorial site.
- You want accounts, live comments or a social network inside the site.
- You need automatic moderation with nobody reviewing.
FAQ
What people ask me most about Miawseo
How and when does my photo appear?
You upload it from «I have one» and it stays pending. It appears when a moderator approves it; there is no fixed review time.
Which photos are accepted and what about spam?
JPG, PNG or WebP up to 5 MB, only cats and no identifiable people. Automatic filters stop the obvious and manual review the rest. EXIF is not stripped today, so upload photos without a location.
Why only 6 photos on a breed’s page?
That is the page carousel’s limit, for the first cats uploaded. The Michi Plaza wall shows every approved one.
Where do the breed photos come from?
From Wikimedia Commons, under free licenses. I keep a credits file in the repository.
Can I ask for something similar for my project?
Yes. It is the kind of work I do for large catalogs or moderated communities. Write to me and we will see what you need.
Spec sheet
Key facts about Miawseo
- Type
- Own project, editorial site
- Site
- michimuseum.com
- Content
- 20 breeds, 120 rooms and 8 history stations
- Technology
- Next.js 15, React 19 and strict TypeScript; data in JSON and files
- Breed photos
- Wikimedia Commons, with a drawn portrait as a fallback
- Moderation
- Admin panel with a token; nothing is published without approval
- Author
- Jossué Alcalá: full design and development
Do you have a lot of content and need to organize it?
Tell me what you have and who will use it. I reply within one business day with how I would organize it.
