Synaplan
開源 AI 平台,供企業使用:自行託管的 AI 代理、符合 GDPR 的聊天機器人小工具、RAG 知識庫、WhatsApp 與 Outlook AI、MCP、多模型路由。Docker、Kubernetes 或託管於 Germ
AI 翻譯
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Masonic web hosting and organization
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗A platform that gives Masonic lodges their own website, a merch store that funds their charities, a calendar for Stated Communications and public fundraisers, and a Secretary's desk for meeting minutes.
This repo currently holds the static prototype site:
index.html: home pagefeatures.html: detail on the website, store, calendar and minutes toolsdemo.html: interactive demo with a sample lodge (/demo#store, #calendar, #members, #minutes open a tab directly)pricing.html: pick a plan ("Start now" in the header lands here) and FAQowner.html: the private owner's hub at /owner (see Owner's hub below), with assets/owner.js. Not linked from the site's menulogin.html: the Login tab. Sign in, create an account, reset a password, and see "My lodges"; a lodge's account owner manages its roll and invites herestart.html: a new, blank lodge in the dashboard layout; /start?plan=starter|lodge|district (Starter hides the store)lodges/murrells-inlet-368.html: dashboard for Murrells Inlet Lodge No. 368 (served at /lodges/murrells-inlet-368). Each lodge page sets window.LODGE (name, Grand Lodge, members, officer seats, events, store items) before loading assets/demo.jsassets/styles.css and assets/demo.js: shared styles and demo logicassets/brand/: the LodgeNet logo. lodgenet-logo.png is the full crest and wordmark on a transparent background (for light backgrounds), lodgenet-crest.webp is the crest alone, used in every page's header. favicon.ico, apple-touch-icon.png, assets/brand/icon-192.png and the 1200×630 social preview og-image.png are cut from the same crest. The site's colors come from it: slate blue #3b5870 / #4e6a83, gold #c9a54e (#856823 for gold text on light backgrounds), and a diamond checkered floor; headings and the wordmark are Montserratassets/auth.js and assets/login.js: sign-in (see Accounts below); api/config.js is the one Vercel function; api/_public.js holds the live Supabase project URL and public key, used when Vercel has no SUPABASE_* variablessupabase/schema.sql: accounts database; supabase/murrells-inlet-368.sql adds that lodgeassets/vendor/supabase.umd.min.js: supabase-js 2.117.3 (MIT)assets/vendor/jspdf.umd.min.js: jsPDF 2.5.1 (MIT), loaded only when someone saves minutes as a PDFEdits on the demo and lodge pages save automatically in the viewer's browser (localStorage, one key per page). The bar under the dashboard header can Export them as JSON, Import a JSON export, or Start over. To make an export a lodge's permanent starting data, copy its values into that lodge page's window.LODGE. Checkout takes no payment.
The Secretary fills in a short form; the full Stated Communication write-up (and the PDF) is generated from it in the lodge's template wording. Each part of the minutes is a section plugin in the MS list in assets/demo.js: its fields, plus how it reads in longForm(). Opening, attendance, previous minutes and closing are always on; the rest can be switched on or off per lodge with the Sections button (saved as minuteSections). Anything left blank on the short form is left out of the write-up. Minutes saved in the old free-text format are converted on load.
Lodges sign in with Supabase (Auth for email and password, Postgres for the lodge's data). /api/config gives the browser the project URL and public key from Vercel's environment (SUPABASE_URL and SUPABASE_ANON_KEY, or the NEXT_PUBLIC_ / publishable-key names the Vercel Supabase integration sets). With neither set, the site runs browser-only exactly as before and /login says sign-in isn't switched on.
lodges holds its plan (starter, lodge or district) and its dashboard as one JSON document in data, the same shape as an Export.lodge_members gives each account a role on a lodge: owner manages the roll, officer edits, member reads. Row Level Security enforces it, and the site can only change lodges.data, so plans are set in SQL./login. The brother chooses Create account with that email, and once the email is confirmed the invite becomes a membership (claim_invites()).slug in window.LODGE and loads <script src="/assets/auth.js" data-app="/assets/demo.js">: the dashboard opens only for that lodge's members and saves to the account. The first officer to sign in carries any edits saved in their browser up to the account./login#code) and redeem_plan_code() puts the lodge on the code's plan at no charge (lodges.comped). Codes are added in the SQL editor, e.g. insert into plan_codes(code,plan,max_uses) values('LODGE-XXXX-XXXX','lodge',10), and can't be read from the site. Keep real codes out of this repo.api/billing.js sends an owner to Stripe Checkout for the $19 / month Lodge plan, opens the Stripe Customer Portal for "Manage billing", and on return reads the subscription back from Stripe into lodges.billing_status (no webhook). It needs SUPABASE_SERVICE_ROLE_KEY and a Stripe secret key: STRIPE_SECRET_KEY from Vercel's Stripe integration, or the one saved in the owner's hub. Save the Customer Portal settings once in the Stripe Dashboard before using Manage billing. Comped lodges never see Subscribe.Setup: create a Supabase project (or add the Supabase integration in Vercel, which sets the variables), run supabase/schema.sql then the lodge's SQL in the SQL editor, and under Authentication → URL Configuration set the Site URL to the live domain and add https://*.vercel.app/** as a redirect URL for previews.
/owner is the LodgeNet owner's view of every lodge (plan, no-charge flag, brethren, account owner), every account, the plan codes, and the Stripe API key. Run supabase/owner-hub.sql after schema.sql, with the owner's email in place of ADMIN_EMAIL, then sign in at /owner with that account (create it at /login first and confirm the email).
admin_* functions that refuse anyone whose confirmed email isn't in platform_admins. That table can't be read or changed from the site; add another owner in the SQL editor.lodges/<slug>.html is still added in the repo), and create or end plan codes.platform_secrets (row stripe_secret_key), which only the service role can read; the hub sees just test/live and the last four characters. Server code should use Vercel's STRIPE_SECRET_KEY when it's set and this row otherwise.The site is static, so Vercel serves it with no build step. Import this repo in Vercel (Add New → Project), keep the framework preset at "Other", and deploy. Every push to main redeploys. vercel.json turns on clean URLs, so pages are served at /features, /demo and /pricing.
Run npx serve . from the repo root (it also serves clean URLs). Opening the files directly won't resolve the /assets/... paths.