Meltype
눈 녹듯 반각·전각 장벽을 녹여주는 일본어 입력
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Browser mind map. OmniMind Pro is a one-time purchase through PayPal Checkout. There is no subscription. The price and the PayPal button stay hidden until checkoutEnabled is turned on in pro-config.js.
index.html and MINDMAP.html are the same app and must stay identical.
Set these on Vercel (Production and Preview). Do not commit secrets.
| Variable | Purpose |
|---|---|
PAYPAL_CLIENT_ID | PayPal REST app client id. Sandbox and live ids differ. |
PAYPAL_CLIENT_SECRET | PayPal REST app secret. Server only. |
PAYPAL_WEBHOOK_ID | Id of the webhook that listens for PAYMENT.CAPTURE.COMPLETED. |
PAYPAL_ENV | sandbox or live. Defaults to sandbox. |
FIREBASE_SERVICE_ACCOUNT | Firebase service account JSON, as a single string. |
RESEND_API_KEY | Resend API key used to email the Pro code. |
The page embeds the public sandbox client id so the PayPal button can load. That id is not a secret:
AfLUWmx3V0glGmHJI9Lwq2vSeYMP4HWrdlrjnmx9UPtK7ssmgO8AldGDFOr5KrX17Usx8W_gyl9v6lT8
PAYPAL_CLIENT_ID on the server should be the same sandbox id while PAYPAL_ENV=sandbox. Never put PAYPAL_CLIENT_SECRET in the repo, the HTML, or a NEXT_PUBLIC_ / VITE_ variable.
PAYPAL_CLIENT_ID and PAYPAL_CLIENT_SECRET.PAYPAL_ENV=sandbox.https://<your-domain>/api/paypal/webhook subscribed to PAYMENT.CAPTURE.COMPLETED. Copy its webhook id into PAYPAL_WEBHOOK_ID.POST /api/paypal/create-order and POST /api/paypal/capture-order. The server creates an order for priceUsd in pro-config.js and captures it. The browser cannot choose the amount. While checkoutEnabled is false, create-order refuses and the app says “OmniMind Pro, coming soon”.omnimindmap (or the project in the page config).FIREBASE_SERVICE_ACCOUNT to the raw JSON string.firestore.rules (firebase deploy --only firestore:rules). Clients cannot read or write pro_codes, pro_captures, or rate_limits. The Admin SDK bypasses those rules.users/{uid} can be read only by that user (get, never list). The owner may create and update the profile, but cannot set or change plan, maxMaps, codeUsed, or proActivatedAt. Those fields are written by the server.users/{uid}/maps/{mapId} is fully readable and writable by the owner, with basic type and size checks. A map with no shareSettings is owner-only. Signed-in users (including anonymous guests) can get a map, but never list someone else's maps, when shareSettings.accessLevel is view or edit. restricted also requires email_verified and a lower-cased address in shareSettings.invitedEmails. Collaborators can update only data, nodeCount, and updatedAt, and only when access is edit or their verified email is in shareSettings.editorEmails. They cannot create, delete, or change shareSettings, name, or userId.Resend sends from OmniMind <[email protected]>. Verify the omnimindmap.app domain in Resend before live mail will deliver. If RESEND_API_KEY is missing, the code is still stored and the capture response includes it so a sandbox payment is not lost.
The buyer enters the PayPal email and the code. POST /api/pro/activate checks both and records the device. A code allows about 3 devices. The same device can activate again. A fourth distinct device is rejected. The browser stores a local verified flag and isPro() follows that flag. The client does not write the code to Firestore.
Footer links:
/legal/terms.html/legal/privacy.html/legal/refund.html[email protected]npm test
npm test starts the Firestore emulator and runs every *.test.js file in test/ and tests/. firebase-admin is a runtime dependency for the Vercel functions. PayPal tests inject an in-memory database and do not need a service account. Rules tests talk only to the emulator.