Meltype
This is Japanese input that melts the wall between half-width and full-width, like thawing snow.
AI translation
mindmap test html
Translation pending
ProductivityHTML · JavaScriptGitHub @pinatinatOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full 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.