iArt.ai
AI 모션 그래픽 소프트웨어, 누구나 사용할 수 있는 After Effects 대안, 텍스트 프롬프트로 몇 분 안에 애니메이션·설명 영상 제작
MyAnimeList의 35,000개 이상 애니·만화 제목을 고급 검색·통계·일정·시청목록으로 탐색
Filter and explore 35,000+ anime and manga titles from MyAnimeList with advanced search, statistics, schedules, and watchlists.
미디어TypeScript · JavaScriptGitHub @Significant-Hobbies온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Anime and manga discovery with multi-axis filtering, smart ranking, schedules, and personal watchlists.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
A modern anime discovery platform that helps you find your next favorite show.
Local and production API traffic is served by the mal-api Cloudflare Worker on port 8787 during pnpm dev.
Finding quality anime to watch is hard. MyAnimeList has thousands of titles, but the platform lacks advanced filtering, intelligent ranking, and personal tracking across multiple dimensions. Most discovery tools either overwhelm with options or oversimplify with basic genre filters.README 전문 보기 ↗A modern anime discovery platform that helps you find your next favorite show.
Live Demo: anime.significanthobbies.com
| Concern | Service |
|---|---|
| Hosting | Cloudflare Pages (anime-list, anime.significanthobbies.com) - Vite SPA static build |
| API | Cloudflare Worker (mal-api) — Hono, daily cron at 03:00 UTC |
| Database | Cloudflare D1 (DB binding) |
| Auth | Google OAuth 2.0 + JWT |
| Analytics | PostHog (local posthog-js wrapper) |
| CI/CD | GitHub Actions — CI (D1 migration/rehearsal + aggregate code-health/build gate); manual Worker/Pages deploy; daily Wrangler D1 sync |
Local and production API traffic is served by the
mal-apiCloudflare Worker on port 8787 duringpnpm dev.
Finding quality anime to watch is hard. MyAnimeList has thousands of titles, but the platform lacks advanced filtering, intelligent ranking, and personal tracking across multiple dimensions. Most discovery tools either overwhelm with options or oversimplify with basic genre filters.
graph TB
subgraph "Client Layer - Cloudflare Pages"
UI[Vite SPA Frontend<br/>React 19 + TailwindCSS]
Components[UI Components<br/>FilterBuilder, AnimeCard, Stats]
Cache[TanStack Query<br/>Client-side Cache]
end
subgraph "API Layer - Cloudflare Worker"
Worker[Hono Worker (mal-api)<br/>TypeScript]
Routes[API Routes<br/>/search /stats /watchlist]
Memory[In-Memory Cache<br/>14.8k Anime<br/>Stale-While-Revalidate]
end
subgraph "Database - Cloudflare D1"
AnimeDB[(Anime Data<br/>14,800+ titles)]
WatchlistDB[(User Watchlists<br/>Per-user tracking)]
end
subgraph "External Services"
Tenrai[Tenrai API<br/>MyAnimeList Data]
Google[Google OAuth<br/>Authentication]
end
subgraph "Automation - GitHub Actions"
Cron[Daily Cron Job<br/>Midnight UTC]
Update[Update Script<br/>Fetch Latest Seasons]
end
UI --> Components
Components --> Cache
Cache --> Worker
Worker --> Routes
Routes --> Memory
Memory -.1hr cache.-> AnimeDB
Routes --> WatchlistDB
Routes --> Google
Cron --> Update
Update --> Tenrai
Tenrai --> Update
Update --> AnimeDB
style UI fill:#3b82f6
style Worker fill:#10b981
style AnimeDB fill:#8b5cf6
style Tenrai fill:#f59e0b
style Memory fill:#ef4444
style Cron fill:#06b6d4
mal-api): Hono API with stale-while-revalidate in-memory cache for <1ms response timesgit clone <repository-url>
cd mal
pnpm install
Create .env from .env.example for frontend/Google OAuth values. Local persistence uses isolated Wrangler D1 and does not need production database credentials.
Start development:
pnpm dev
This runs the Cloudflare Worker API (port 8787) and Vite dev server (port 5173) together.
pnpm dev # Worker + frontend
pnpm dev:be # Worker only (port 8787)
pnpm dev:fe # Frontend only
pnpm build # Vite production build
pnpm test # Vitest unit tests
pnpm test:coverage # Whole-source coverage with regression floors
pnpm quality # Fleet code-health, build, and bundle gate
pnpm db:seed # Migrate and seed local D1 from JSON
pnpm db:update # Update anime data from Tenrai
pnpm db:rehearse # Isolated D1 catalog + ownership rehearsal
Frontend (Cloudflare Pages — project anime-list)
pnpm deploy locally (clean-main guard + build +
wrangler pages deploy), or trigger the workflow_dispatch deploy workflow
(.github/workflows/deploy.yml). There is no auto-deploy on push.VITE_* client vars are inlined at build time (import.meta.env) and set
explicitly by the deploy workflow. wrangler.toml [vars] only apply at
runtime to the worker, not to the client bundle.API Worker (Cloudflare Worker — mal-api)
pnpm deploy:worker; it validates a clean main, applies D1 migrations, and tags the Worker with the full Git SHA.DB; Worker secrets remain JWT_SECRET and GOOGLE_CLIENT_ID.Database (Cloudflare D1)
pnpm db:migrate:localpnpm db:rehearseGitHub Actions (Automated)
CLOUDFLARE_API_TOKEN and CLOUDFLARE_ACCOUNT_ID boundaries.Note: This project uses MyAnimeList data through the Tenrai API. Not affiliated with MyAnimeList.net or Tenrai.
For Developers: See AGENTS.md for agent operating rules, PROJECT_STATUS.md for current product truth, GitHub Issues for open work, and docs/index.md for the full knowledge base (architecture, decisions, operations runbooks, and learnings).
ISC - Sarthak Agrawal
Open work is tracked in GitHub Issues. The audit began with zero open issues and PRs; no issues were closed. The remaining live qualification is #89: approved deployment followed by real sign-in, tracking, reload, account switching, and failed-write recovery checks. This is not yet a hosted shareability receipt.
Local evidence: real React Query regressions caught private detail/draft reuse
across accounts; caches and mounted drafts now reset with identity. React DOM
integration covers detail -> Watching -> remount against a synthetic API, and
guests see a disabled sign-in-to-track action. pnpm db:rehearse separately proves
actual isolated local D1 status/note persistence after export/import and rejects
another account's read/edit. Public search/detail had prior browser coverage;
this pass does not claim a newly verified hosted end-to-end journey.
This historical SaaS Maker task log preserves prior product decisions so future agents do not reopen duplicate UI tasks. Its done rows are historical reports, not fresh runtime receipts.
| Task | Status | Priority | Last known note |
|---|---|---|---|
5fc1a3af anime_list: replace indefinite shelf skeleton with real cards or clear loading state | done | low | 2026-05-25 18:57:08 |
049bfd61 [fleet-smoke] anime_list/web analytics endpoint 404 | done | medium | 2026-05-25 17:25:17 |
e775b1b8 anime_list: add filter result explanation chips | done | low | 2026-05-26 |
36332e19 [active-ai-priority] anime_list: Make discovery list-aware | done | medium | 2026-06-13 (shipped via /discover + queue) |
a935677b [active-ai-product] anime_list: Build a list-aware seasonal discovery queue | done | medium | 2026-06-13 |
0c5ec1b7 [active-ai-ship] anime_list: Review and ship first-screen discovery fix | done | high | 2026-06-13 |
a880f2b4 anime_list: add shareable anime-character identity quiz brief | done | low | 2026-06-13 (brief + /quiz proof; deferred expansion) |
3f9e43c7 [active-ai-ui] anime_list: Polish anime detail and list-management flow | done | medium | 2026-06-13 (incremental via recent auth/list fixes) |
f600afd0 Full fleet audit: anime_list | done | high | 2026-06-13 (context captured; residual config risks addressed below) |