iArt.ai
AI 모션 그래픽 소프트웨어, 누구나 사용할 수 있는 After Effects 대안, 텍스트 프롬프트로 몇 분 안에 애니메이션·설명 영상 제작
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
A curiosity-driven exploration app: drop in a topic, get branches to explore
next (a mix of direct facts, adjacent ideas, and deliberately wild
tangential leaps), read a short AI-generated article per topic, keep
branching. Entertainment-first, not a research tool — the voice is
deliberately "unhinged" (breathless, energetic, witty).README 전문 보기 ↗A curiosity-driven exploration app: drop in a topic, get branches to explore next (a mix of direct facts, adjacent ideas, and deliberately wild tangential leaps), read a short AI-generated article per topic, keep branching. Entertainment-first, not a research tool — the voice is deliberately "unhinged" (breathless, energetic, witty).
Renamed from "Rabbit Hole," then "Hypha," now "Hyfax" — the backend
function/table names below (rabbit-hole-proxy, rabbit_hole_request_logs)
still use the original pre-rename name since renaming deployed Supabase
infra is a separate, riskier change that hasn't been done. They're the same
backend either way, just pre-rename names.
This is the standalone version of an app that started as a single-file
React component inside a claude.ai artifact. See
docs/handoff.md for the original handoff brief this
build follows, including the Phase 1 → Phase 2 plan and the things
deliberately left alone.
┌───────────────┐ ┌───────────────────────────┐ ┌────────────────┐
│ Browser │ ─────▶ │ Supabase Edge Function │ ─────▶ │ Anthropic API │
│ (Vite + React) │ │ rabbit-hole-proxy │ │ claude-sonnet-5 │
└───────────────┘ └───────────────────────────┘ └────────────────┘
The client never talks to Anthropic directly and never holds the real API
key. Every call goes through rabbit-hole-proxy, a Supabase Edge Function
that holds the key as a server-side secret, forwards the request, and
streams the response straight back. Each request is also logged
(rabbit_hole_request_logs: timestamp, anonymous session id, endpoint) so
Phase 2's usage limits can be set from real numbers instead of a guess.
npm install
cp .env.example .env.local # fill in your Supabase project's URL + anon key
npm run dev
The .env.local values are client-safe (the anon/publishable key, not a
secret) — see .env.example.
supabase link --project-ref <your-project-ref>
supabase db push
supabase secrets set ANTHROPIC_API_KEY=sk-ant-...
supabase functions deploy rabbit-hole-proxy
supabase/functions/trending-topics/index.ts for why it's dormant and
the caveats around its deployed name.Either Vercel or Netlify work well for a Vite app with no server-side rendering needed:
Vercel
npm i -g vercel
vercel
Set VITE_SUPABASE_URL and VITE_SUPABASE_ANON_KEY as project environment
variables in the Vercel dashboard, matching .env.example.
Netlify
npm i -g netlify-cli
netlify deploy --build
Build command: npm run build, publish directory: dist. Set the same two
env vars in the Netlify dashboard.
Test privately (yourself, then a couple of friends) before sharing more widely — this is Phase 1 (one shared key, no per-person limits yet).
Rough estimate at Sonnet 5 pricing ($2/$10 per million input/output tokens): 15–50 cents per person per hour of active use, depending on how fast someone taps through topics. This is a token-count estimate, not measured production data — the request-log table above is what replaces it with real numbers before Phase 2's limits get set.
Add Supabase Auth and per-person daily/monthly usage caps, sized from
rabbit_hole_request_logs data collected during Phase 1. Implement the
limit check as middleware in front of the existing rabbit-hole-proxy
function rather than a parallel path, and fail gracefully client-side using
the app's existing error-handling patterns.
See docs/handoff.md for the full list and reasoning — in short: the fixed
"unhinged" tone and its no-first-person/no-markdown rules, the obscurity
mix's wording (especially the top tier's "wild associative leap" framing),
the one-extra-round cap on "dig deeper", and normalizeChildren's
overflow-capping logic are all deliberate, not incidental.