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.

Demo · 42 s (in Spanish)
Photos: Wikimedia Commons (CC)

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.

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.

Tell you my case