Skip to content

moooon

Motir

Vibe your whole project. Bring an idea — Motir's three AI layers plan it, track it, and ship it, end to end. You're looking at Motir, built in Motir.

  • Vibe Project
  • Open Source
  • AI Agent
  • AI Loop
1
requests
0
upvotes
145
planned
1,361
shipped

Motir · Roadmap

MOTIR-4045Done

motir.co serves /explore and /explore/topic/[slug] — the project square against /api/public/explore + /api/public/categories

Opened by Zhu Yue ·

Type: code · Executor: coding_agent · Repo: motir-marketing · ONE PR.

Render the project square on motir.co — the surface that moved out of motir-core (Story 8.4) — against the public read API, not a second database reader.

What it consumes

/api/public/explore and /api/public/categories — motir-core's anonymous contract. Both make ZERO getSession() calls (explore/route.ts's own comment: "NOT session-gated: a logged-out visitor / crawler reads it … deliberately no getSession() call"). They are exactly the contract this story consumes. Read motir-core/app/(public)/explore/ for BEHAVIOUR, do not port its data layer.

Scope

  1. /explore — the square: its ranked tabs, the project cards, matching the shipped behaviour.
  2. /explore/topic/[slug] — the topic landing pages, reachable from the crawl links.
  3. The empty state (no public projects) and the error state (API unreachable) — the API is now a network hop, so failure is a real state, not a theoretical one; both are asserted.
  4. The crawl surface: robots.txt and sitemap.xml entries for these surfaces, canonicals, and the entity JSON-LD whose SearchAction targets a search THIS host serves.
  5. Internalise the Explore nav item and footer link — EXPLORE in lib/destinations.ts becomes /explore (same-origin, next/link), matching MOTIR-3880's chrome and the pattern MOTIR-4009 set for LEGAL_*.

Boundary

  • It composes MOTIR-3880's chrome; it redraws none of it.
  • It does not touch /p/* (MOTIR-3877's).
  • It reads no database and adds no Prisma client / connection string (asserted, the standing repo rule).

Acceptance criteria

  • /explore and /explore/topic/[slug] render on motir.co under one chrome, matching design/public-site/ (MOTIR-3880) — layout, states and the primitives it names.
  • Every read of project data goes through /api/public/*. No database client, no Prisma import and no connection string appears in this repository — asserted by a test.
  • The empty, loading and error states are implemented for every API-backed surface, and the error state is asserted.
  • EXPLORE in lib/destinations.ts is same-origin; tests/destinations.test.ts asserts it.
  • robots.txt / sitemap.xml / canonicals / JSON-LD list these surfaces and nothing that lives elsewhere.
  • pnpm lint · format:check · typecheck · build · test pass; AA contrast holds in both themes.

Discussion

No comments yet.

Adding to this discussion signs you in on app.motir.co and brings you back to this request.

Add a comment