iArt.ai
AI 모션 그래픽 소프트웨어, 누구나 사용할 수 있는 After Effects 대안, 텍스트 프롬프트로 몇 분 안에 애니메이션·설명 영상 제작
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗An English atlas of Indonesian sambal: 257 fully profiled sambals across 35 provinces, each illustrated as a card, with a province map, sambal of the day, dish pairing, a spice primer and a "Which sambal are you?" quiz.
Plain HTML, CSS and JavaScript with no build step (fonts load from Google Fonts). Open index.html in a browser.
index.html page markup; loads the scripts below in order
style.css
js/data/
sambals.js flavour axes (DIMS), the 34 core profiles (S) and families (STYLE)
sambals-regional.js the 207 regional profiles l0–l206, pushed onto S
sambals-additional.js 16 further documented profiles, pushed onto S
sources.js citation keys and every linked source URL (SRC)
provinces.js province codes and names (PROV)
spices.js spice primer (SPICES)
quiz.js quiz questions and weights (QUIZ)
social-icons.js brand marks for the share buttons (Simple Icons, CC0), as data URIs
hari-besar.js holiday dates the kampung celebrates (update yearly from the SKB)
js/
core.js helpers and the combined index (ALL, byId)
art.js procedural recipe illustrations
dialog.js flavour radar and the detail dialog
home.js sambal of the day and families panel
map.js province map
atlas.js card grid and filters
rempah.js spice primer page
pairing.js dish pairing (Claude + keyword fallback)
quiz.js personality quiz
share.js share the quiz result as an image to social apps
app.js hash routing and boot
kampung.js animated Merapi kampung backdrop and synthesised soundscape
worker/ Cloudflare Worker that proxies pairing requests to Claude
build.js optional: inlines everything into dist/oelek.html
The scripts share globals and must load in the order listed in index.html: data first, then core.js, then the pages, then app.js. To add a sambal, append an object to js/data/sambals-regional.js and add any new source URL to js/data/sources.js.
node build.js produces a single self-contained dist/oelek.html for use as a claude.ai artifact, where pairing calls Claude directly.
oelek-pair Cloudflare Worker in worker/. If the Worker is busy or unavailable, the page falls back to its built-in keyword matcher.data-theme="light"), so the veil never sits pale over a night sky. The round speaker button (no label) plays a soundscape synthesised in Web Audio: roosters with their own voices, kutilang, prenjak, sparrows and emprit, perkutut, hens, cicadas, bats, frogs, crickets, tokek, an owl, sapi, kambing, a far-off pecut, sapu lidi in the morning yard, motorbikes on the road, the tukang bakso's tok-tok, sendaren humming on the kites, the bedug before each prayer, rain on the genteng and the talang, the night watch's kentongan striking the hour, and a neighbour's gamelan rehearsing in the evening. Sound is on by default: it starts with the page where the browser allows, otherwise on the visitor's first tap, click or key press, since browsers block audio until then. Turning it off is remembered. Preview another hour with ?jam=21.5, another day with ?tgl=2027-03-09 and rain with ?hujan=1.All 207 formerly Listed entries now use the existing full-profile layout, initially bringing the atlas to 241 Profiled entries and 0 Listed entries. Each has representative ingredients, suggested pairings, a six-axis editorial flavour profile, a description and source links. Regional recipes vary; supporting seasonings are editorial reconstructions where a source records only a defining ingredient. Province-only records appear in the map panel without invented coordinates. Original catalogue IDs are preserved. The source spelling Picak corrects the old Pikak entry, which remains searchable as an alias. Duo Sale now uses dried small fish, correcting the original mango/coconut data.
https://jjah0001.github.io/oelek/
GitHub Actions deploys index.html, style.css and js/ to GitHub Pages on every push to main. The ingredient illustrations are drawn in code, so there are no image files. Dish pairing calls the Worker at PAIR_PROXY in js/pairing.js.
worker/ holds a small Worker that forwards pairing requests to the Anthropic API. Your API key stays server-side, the Worker only accepts calls from https://jjah0001.github.io, and each IP is limited to 10 requests a minute.
cd worker
npm install
npx wrangler deploy # https://oelek-pair.<subdomain>.workers.dev
npx wrangler secret put ANTHROPIC_API_KEY # once
If the URL changes, update PAIR_PROXY in js/pairing.js. To change the model, edit ANTHROPIC_MODEL in worker/wrangler.toml.
Open any sambal profile to save it as On my shelf, Want to try, or Tried before. The shelf includes neutral jar illustrations, status/province grouping, optional grams remaining, personal ratings, tasting notes, and a province journey map. There are no colour categories.
Collection data is stored only in this device's browser localStorage under
oelek.shelf.v1. No account, server storage, or automatic device sync is used.
Clearing site data removes the shelf. Export creates a JSON backup; Import
merges a valid Oelek backup, updating matching entries and preserving others.
Storage is specific to the site's origin: local previews and the deployed site
have separate shelves. If storage is blocked, changes remain in memory and the
interface prompts the user to export them.
Each profile has five tappable stars, a public average/count, a 5-to-1 breakdown, and an option to change or remove your vote. Atlas cards show average ratings. Community stars are independent of the private shelf rating: shelf imports, notes, and private ratings are never uploaded automatically.
oelek_* tables and
does not modify Tea Time's data.supabase/schema.sql. It creates the
catalogue, ratings, private hourly counters, own-vote read policy, public
aggregate view, and voting function. Re-running it preserves existing votes.anon key also
works). Never use a secret or service_role key in website configuration.SUPABASE_URL and SUPABASE_PUBLISHABLE_KEY.main.Visitors don't create accounts or enter an email/password. On their first vote, Supabase creates an anonymous session stored in this browser. The database allows one vote per session per sambal and up to 60 changes/removals per hour; the UI also has a four-second cooldown. Clearing site data or changing browser creates a fresh identity, so this is not a guarantee of one vote per person. Existing public votes remain in the database after browser data is cleared; that browser can no longer manage those votes without its original session.
Only public vote totals can be read by everyone. Each session can read its own
votes and write only through the validated oelek_rate function. The shelf
continues using localStorage only, without cloud sync. Unconfigured/offline
ratings display an honest status instead of fake averages or local-only totals.
For a local preview, set the same environment variables and run
node scripts/configure-ratings.js, then node build.js for the standalone
copy. GitHub Pages generates its config from repository variables on deployment.
The Supabase browser SDK is loaded from a pinned CDN URL only when configured.
Setup references: https://supabase.com/docs/guides/auth/auth-anonymous and https://supabase.com/docs/guides/getting-started/api-keys.
Sixteen source-linked profiles bring the current catalogue to 257. These are independently documented additions, not a reconstruction of the 257 entries in the UGM survey. Home-recipe locations are labelled as such; flavour scores and suggested pairings remain editorial. Existing IDs and card templates are unchanged.
For an existing Supabase project, run the contents of supabase/additional-sambals.sql in its SQL Editor to enable voting on the new profiles. This only registers their IDs and leaves votes untouched. Fresh installations can use the updated supabase/schema.sql.
js/data/hari-besar.jsjs/data/hari-besar.js (HARI_RAYA): 2027 from the SKB 3 Menteri, later years estimated.MUSIM_TANAM in js/data/hari-besar.js), each plot a few days ahead of or behind its neighbours: a traktor tangan churns the mud, a line of planters does the tandur, farmers weed the young padi, the ripening padi turns gold while tins rattle from the gubuk and emprit swarm, the harvest moves across each plot with the gebyok thudding and karung of gabah stacked, and the stubble is burnt in the late afternoon. After the second harvest the kampung holds merti desa on the first Saturday from 16 July: a kirab of gunungan along the road in the morning and wayang kulit in a tarub in the lapangan all night (gamelan, kendhang and the dalang's keprak). On Labuhan Merapi (30 Rejeb; LABUHAN) abdi dalem with gold payung carry the uba rampe up the slope towards Sri Manganti from six in the morning, marked by the bende, after a night of wayang up the valley.