Bops
A team of AI bots that runs your business ops: inbox, pipeline, invoices, reports. Each one has its own computer, email and phone number, and remembers everything.
翻訳待ち
No updates detected yet. GitHub releases will appear here.
Loading the full README. The saved excerpt is shown below.
Platformă SaaS multi-tenant: ONG-urile își fac cont și primesc acces la un CRM complet și un set de instrumente de fundraising (rapoarte, newsletter, contracte de sponsorizare/D177, pagini publice de strângere de fonduri cu donații prin Stripe), pe bază de abonament lunar. Platforma e funcțională de cap la coadă, live la fundraising-academy-one.vercel.app, cu izolare de tenant prin RLS (set_config transacțional, NU query-uri globale).Read the full README ↗
Platformă SaaS multi-tenant: ONG-urile își fac cont și primesc acces la un CRM complet și un set de instrumente de fundraising (rapoarte, newsletter, contracte de sponsorizare/D177, pagini publice de strângere de fonduri cu donații prin Stripe), pe bază de abonament lunar.
Platforma e funcțională de cap la coadă, live la
fundraising-academy-one.vercel.app, cu izolare de tenant prin RLS
(set_config transacțional, NU query-uri globale).
Ce există:
price_data, fără Produse/
Prețuri pre-create în Dashboard) — atât pentru donațiile de pe paginile
publice de campanie, cât și pentru abonamentul ONG-ului la platformă
(checkout + webhook complet: plată reușită, expirare sesiune, reînnoire
abonament, refund/dispută, anulare/schimbare abonament). Fără cheile
Stripe reale completate, checkout-ul arată un mesaj grațios ("Plățile nu
sunt încă activate") în loc să proceseze plăți — vezi mai jos.Ce nu există încă: cont Stripe real (cheile sunt necompletate — singurul pas care mai lipsește ca plățile să fie efectiv procesate) și facturare anuală prin checkout (arătată azi doar informativ, fără flux propriu).
.env.local
(pornește de la .env.example).documentation/rls-setup.sql în SQL Editor-ul acelui proiect
— creează rolurile migrator/app_user și politicile RLS. Notează
parolele generate.DATABASE_URL (rolul app_user) și MIGRATOR_DATABASE_URL
(rolul migrator) în .env.local.npm installnpm run db:push (folosește MIGRATOR_DATABASE_URL din drizzle.config.ts)
ca să creeze tabelele din schemă.rls-setup.sql dacă ai adăugat tabele noi
după primul push (FORCE RLS + politici nu se creează automat de Drizzle).npm run devVezi secțiunea 5 din documentation/rls-setup.sql — creează 2 conturi de
test cu 2 organizații separate și confirmă manual că un query fără
app.current_org_id setat întoarce 0 rânduri, iar cu el setat la org A vezi
DOAR datele din org A.
github.com/office729/fundraising (2026-09-04).
Pe un laptop nou: git clone https://github.com/office729/fundraising.git.NETOPIA_API_KEY, NETOPIA_POS_SIGNATURE,
NETOPIA_PUBLIC_KEY (PEM al POS-ului, pentru verificarea IPN) și
NETOPIA_ENV (sandbox la test, live la producție). În contul Netopia,
URL-ul de notificare (IPN) e https://<domeniu>/api/netopia/ipn — îl trimite
aplicația la fiecare comandă, nu se setează manual. Fiecare plată = o lună de
acces (nu reînnoire automată); organizations.current_period_end decide./api/stripe/webhook/<slug-ul lui>.
Cheile se stochează criptate (AES-256-GCM) cu ORG_SECRETS_KEY din Vercel.0001_netopia_stripe_org (coloane Stripe pe organizations + tabelul
platform_payments) + politicile RLS din scripts/restore-rls.mjs — de aplicat pe
baza de producție înainte de deploy (npm run db:migrate, sau SQL-ul din
src/lib/db/migrations/).lib/billing/packages.ts — pachetele
fixe (trial/start/creștere/impact) includ toate instrumentele, diferă doar
prin cote; planul personalizat diferențiază per instrument, aplicat
efectiv prin orgHasToolAccess.