Chisle
코딩 에이전트 플러그인, 20개 실시간 작업에서 기본 모델 52% 활용, 간결한 페르소나와 출력 압축 제공
언어 파일을 가져와 나란히 편집하고 AI가 나머지를 작성하는 Next.js·Supabase 기반 다국어 번역 관리자
Import your language files, edit every language side by side, and let AI draft the rest. A multi-language translation manager built with Next.js and Supabase.
개발 도구TypeScript · PLpgSQLGitHub @nkonsta가동 상태 재확인 필요운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗A self-hostable, multi-language translation manager. Import your locale files, edit every language side by side, let AI draft what's missing, and control who can see and edit which languages — all backed by Supabase.
/ (statically rendered)./dashboard, behind authentication.🔗 Live: https://glotter.vercel.app/
Next.js 16 (App Router) · React 19 · TypeScript · Supabase (Postgres + Auth) · TanStack Table · Tailwind CSS v4 · Radix UI.
Requirements: Node.js 20+ and a Supabase project (free tier is fine).
Create one at supabase.com. You'll need three values from Project Settings → API:
In the Supabase dashboard, open SQL Editor, paste the contents of
db_setup/schema/tms_full_schema_v12.sql, and
run it. This creates all tables, RLS policies, and helper functions.
If AI translation will be enabled, also run
db_setup/optional/tms_ai_usage_controls.sql.
It adds the server-only shared concurrency and hourly usage controls.
Ignore
db_setup/upgrades/tms_acl_v12.sql— it's a migration for upgrading an older v11 database, not for fresh installs. Seedb_setup/README.md.
cp env.example .env.local
Edit .env.local:
| Variable | Required | Purpose |
|---|---|---|
NEXT_PUBLIC_SUPABASE_URL | ✅ | Supabase Project URL |
NEXT_PUBLIC_SUPABASE_ANON_KEY | ✅ | Supabase anon public key (client) |
SUPABASE_SERVICE_ROLE_KEY | ✅ | Service role key. Server-only — used for saving translations and admin actions. Never expose to the client. |
NEXT_PUBLIC_SITE_URL | Recommended | Public origin (e.g. http://localhost:3000). Used for social-preview (Open Graph) image URLs. |
OPENAI_API_KEY | Optional | Enables AI translation. Without it, the rest of the app works; AI fill is disabled. |
OPENAI_MODEL, OPENAI_BASE_URL, AI_*, NEXT_PUBLIC_AI_* | Optional | Tune the AI provider, limits, and batching. Set AI_USAGE_LIMITS_ENABLED=true in production after applying the AI usage SQL patch. See env.example. |
The service role key bypasses Row-Level Security. It is only read server-side (in
app/api/**) and is never sent to the browser. Keep it secret.
In Authentication → URL Configuration → Redirect URLs, add the app entry point so sign-up confirmation and password-reset links land in the app:
http://localhost:3000/dashboardhttps://your-domain.com/dashboard (once deployed)This instance is admin-provisioned: signing up creates an account, but a new user has no access until a platform admin grants it. For a closed instance you can disable public sign-ups in Supabase and create users from the in-app Manage users screen instead.
This is the one manual step, and the app is unusable without it — there's no UI to create the first admin.
Create a user account. Easiest: Authentication → Users → Add user in the
Supabase dashboard (enable "Auto Confirm User"). Or sign up through the app at
/dashboard and confirm the email.
Copy that user's User UID from the Users list.
In the SQL Editor, run:
insert into platform_admins (user_id) values ('PASTE-USER-UID-HERE');
That user is now a platform admin: they can create projects, manage users, and assign per-project owners and members from the app.
npm install
npm run dev
Open http://localhost:3000 for the landing page, or http://localhost:3000/dashboard to sign in.
| Role | Scope | Can do |
|---|---|---|
| Platform admin | Whole instance | Everything: all projects, manage users, assign owners/members, edit any language. Bootstrapped via SQL (step 5). |
| Project owner | One project | Full access to that project — all languages, keys, languages, and members. |
| Member | One project | View/edit only the specific languages granted to them (per-language permissions). |
Owners and members are assigned by a platform admin (or project owner) through the Manage users / project-members screens. Permissions are enforced at the database level by Row-Level Security, not just in the UI.
en, fr, de) or
code:name pairs (en:English). Codes are lowercased.여기까지가 README 앞부분입니다. 나머지는 원문에서 읽을 수 있습니다. README 전문 보기 ↗