mesh-avatar-studio
일러스트를 코딩 에이전트와 로컬 편집기로 2D 메쉬 애니메이션 아바타로 변환
브라우저만으로 작동하는 무료·빠른·프라이버시 친화 이미지 도구
Free, fast, privacy-friendly image tools that run entirely in your browser. Compress, resize, convert, and crop images, generate favicons, and encode images to Base64 — no uploads, no sign-up.
디자인TypeScript · JavaScriptGitHub @jakehellsing온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Free, privacy-friendly image utilities built with Next.js (App Router), TypeScript, and Tailwind CSS. All processing runs locally in the browser with the Canvas API — no images are ever uploaded to a server.
| Tool | URL |
|---|---|
| Image Compressor | /tools/image-compressor |
| Image Resizer | /tools/image-resizer |
| Image Converter | /tools/image-converter |
| Image Cropper | /tools/image-cropper |
| Favicon Generator | /tools/favicon-generator |
| Image to Base64 | /tools/image-to-base64 |
npm install
cp env.example .env.local # then edit values
npm run dev # http://localhost:3000
Note:
.npmrcpoints atregistry.npmmirror.combecauseregistry.npmjs.orgwas unreachable/extremely slow from this network. Delete that file to use the default registry.
| Command | Purpose |
|---|---|
npm run dev | Start the dev server |
npm run build | Production build |
npm start | Serve the production build |
npm run lint | ESLint |
npm run typecheck | tsc --noEmit |
npm test | Unit tests (Vitest) for the image-processing library |
npm run test:e2e | Playwright end-to-end tests (desktop/tablet/mobile) |
E2E tests need browsers once: npx playwright install chromium, and a
production build first (npm run build).
See env.example. In production (e.g. Vercel project settings →
Environment Variables):
| Variable | Required | Purpose |
|---|---|---|
NEXT_PUBLIC_SITE_URL | Yes | Canonical origin for metadata, sitemap, robots |
NEXT_PUBLIC_CONTACT_EMAIL | Yes | Shown on contact page / privacy policy |
NEXT_PUBLIC_ADSENSE_CLIENT | After approval | ca-pub-* publisher ID — gates ALL ad code |
NEXT_PUBLIC_ADSENSE_SLOT_* | After approval | Ad unit slot IDs per placement |
No ad code is emitted unless NEXT_PUBLIC_ADSENSE_CLIENT is a real
ca-pub- ID, so the site ships "ads off" by default.
NEXT_PUBLIC_ADSENSE_CLIENT to your ca-pub-* ID and redeploy —
this activates the loader script and generates /ads.txt with the
matching publisher ID automatically.NEXT_PUBLIC_ADSENSE_SLOT_* env
vars; redeploy. (Or enable "Auto ads" in the AdSense dashboard and skip
slot IDs entirely.)NEXT_PUBLIC_SITE_URL to the production domain and
NEXT_PUBLIC_CONTACT_EMAIL.https://<domain>/sitemap.xml and /robots.txt, then
submit the domain in Google Search Console.Any static-friendly Next.js host works the same way: npm run build,
then serve with npm start behind your usual proxy/process manager.
.next directory (or the
previous git tag) and restart npm start from it.git revert the offending commits and redeploy — the site is
fully static apart from /ads.txt, so there is no database or state to
roll back.<title> and meta description per pageNEXT_PUBLIC_SITE_URLsitemap.xml with all indexable routesrobots.txt pointing at the sitemapWebSite, WebApplication, FAQPage schemas)/icon.svg) and web manifestNEXT_PUBLIC_SITE_URL to the final production domainsrc/
app/ # routes: /, /tools/[slug], legal pages, sitemap,
# robots, manifest, icon, opengraph-image, ads.txt
components/ # header, footer, cards, ad slot, shared tool page
components/tools/ # per-tool client components + shared UI
# (dropzone, previews, result card, form controls)
lib/image/ # image pipeline: magic-byte sniffing, decode,
# resize/crop math, canvas encode, ICO & ZIP writers
lib/tools.ts # tool registry: slugs, copy, FAQs, related links
e2e/ # Playwright specs + a tiny PNG fixture encoder
createImageBitmap — corrupted files and fake
extensions are rejected before any processing.drawImage for resize/crop, toBlob for
encoding. PNG/WebP outputs keep alpha; JPEG flattens transparency onto
a background color with a warning shown first.src/lib/image/.ca-pub-* ID is configured.@imgly/background-removal, ~40MB one-time download, handles complex
backgrounds) or a dependency-free edge flood-fill for solid backgrounds.