Підготовка контенту платформи Ring
Підготовка контенту платформи Ring
Підготовка контенту платформи Ring
Concepts, value, and typical clone scenarios — less code.
Concepts, value, and typical clone scenarios — less code.
Concepts, value, and typical clone scenarios — less code.
One article, two lenses. Use the Founder / Developer tabs in the docs sidebar to filter this page. Shared sections stay visible for both audiences; wrapped blocks show concepts or integration detail respectively.
Ring Platform stores almost all application data in PostgreSQL using a JSONB-first document shape: every row is id + data + timestamps. That gives founders a flexible product model (add fields without migrations for every tweak) and gives developers a single db() contract across every Ring clone.
| Domain | What founders configure | Typical clone scenarios |
|---|---|---|
| Users & auth | Roles, profiles, credit balance | Member portals, gated content, admin consoles |
| Entities | Organizations, vendor profiles, verified listings | Directory, marketplace sellers, NGO profiles |
| Opportunities | Jobs, grants, bounties, RFPs | Job board, grant matcher, project marketplace |
| Store & orders | Multi-vendor catalog, inventory, checkout | White-label shop, B2B catalog, subscription boxes |
| Wallet & payments | Ledger, WayForPay/Stripe, membership credits | Token-gated perks, prepaid credits, affiliate payouts |
| Messaging & notify | Conversations, in-app + FCM push | Buyer–seller chat, opportunity alerts |
| Content & CRM | News, email sequences, AI matcher hooks | Community hub, publisher ring, opportunity notifications |
| Platform settings | AI provider keys, branding, web3 oracle | SUPERadmin namespace config per clone |
When you ringize a deployment, you are not buying a rigid CRM schema. You inherit a proven marketplace + community skeleton that already connects:
Zod schemas at the route boundary — how Ring ensures data integrity before it reaches the database.
When Postgres is primary vs Firebase-full; shared pool SSOT and raw SQL escape hatch.
PostGIS setup, connection pool tuning, K8s deployment.
Auth.js tables in the same JSONB model.
One article, two lenses. Use the Founder / Developer tabs in the docs sidebar to filter this page. Shared sections stay visible for both audiences; wrapped blocks show concepts or integration detail respectively.
Ring Platform stores almost all application data in PostgreSQL using a JSONB-first document shape: every row is id + data + timestamps. That gives founders a flexible product model (add fields without migrations for every tweak) and gives developers a single db() contract across every Ring clone.
| Domain | What founders configure | Typical clone scenarios |
|---|---|---|
| Users & auth | Roles, profiles, credit balance | Member portals, gated content, admin consoles |
| Entities | Organizations, vendor profiles, verified listings | Directory, marketplace sellers, NGO profiles |
| Opportunities | Jobs, grants, bounties, RFPs | Job board, grant matcher, project marketplace |
| Store & orders | Multi-vendor catalog, inventory, checkout | White-label shop, B2B catalog, subscription boxes |
| Wallet & payments | Ledger, WayForPay/Stripe, membership credits | Token-gated perks, prepaid credits, affiliate payouts |
| Messaging & notify | Conversations, in-app + FCM push | Buyer–seller chat, opportunity alerts |
| Content & CRM | News, email sequences, AI matcher hooks | Community hub, publisher ring, opportunity notifications |
| Platform settings | AI provider keys, branding, web3 oracle | SUPERadmin namespace config per clone |
When you ringize a deployment, you are not buying a rigid CRM schema. You inherit a proven marketplace + community skeleton that already connects:
Zod schemas at the route boundary — how Ring ensures data integrity before it reaches the database.
When Postgres is primary vs Firebase-full; shared pool SSOT and raw SQL escape hatch.
PostGIS setup, connection pool tuning, K8s deployment.
Auth.js tables in the same JSONB model.
One article, two lenses. Use the Founder / Developer tabs in the docs sidebar to filter this page. Shared sections stay visible for both audiences; wrapped blocks show concepts or integration detail respectively.
Ring Platform stores almost all application data in PostgreSQL using a JSONB-first document shape: every row is id + data + timestamps. That gives founders a flexible product model (add fields without migrations for every tweak) and gives developers a single db() contract across every Ring clone.
| Domain | What founders configure | Typical clone scenarios |
|---|---|---|
| Users & auth | Roles, profiles, credit balance | Member portals, gated content, admin consoles |
| Entities | Organizations, vendor profiles, verified listings | Directory, marketplace sellers, NGO profiles |
| Opportunities | Jobs, grants, bounties, RFPs | Job board, grant matcher, project marketplace |
| Store & orders | Multi-vendor catalog, inventory, checkout | White-label shop, B2B catalog, subscription boxes |
| Wallet & payments | Ledger, WayForPay/Stripe, membership credits | Token-gated perks, prepaid credits, affiliate payouts |
| Messaging & notify | Conversations, in-app + FCM push | Buyer–seller chat, opportunity alerts |
| Content & CRM | News, email sequences, AI matcher hooks | Community hub, publisher ring, opportunity notifications |
| Platform settings | AI provider keys, branding, web3 oracle | SUPERadmin namespace config per clone |
When you ringize a deployment, you are not buying a rigid CRM schema. You inherit a proven marketplace + community skeleton that already connects:
Zod schemas at the route boundary — how Ring ensures data integrity before it reaches the database.
When Postgres is primary vs Firebase-full; shared pool SSOT and raw SQL escape hatch.
PostGIS setup, connection pool tuning, K8s deployment.
Auth.js tables in the same JSONB model.
You do not need separate databases per feature. Postgres + JSONB lets each clone emphasize store, opportunities, or community without forking the codebase. Schema SSOT: data/schema.sql (v4.0.3).
web3 |
features/wallet/services/ring-token-oracle.ts |
Never write raw SQL or instantiate a private pg.Pool for platform_settings. The adapter hybrid path is the only supported write surface.
All server code goes through db() from @/lib/database — never raw SQL in route handlers (except PostGIS via getSharedPgPool()).
readDoc / queryDocs return { success, data, error }. error is an Error object, not a string. Throw on failure in services; Server Actions may map to { error: string } for forms only.
The email CRM feature does not open its own database connection. features/email-crm/lib/jsonb-collection.ts wraps db().*Doc:
| Helper | Delegates to |
|---|---|
readDoc | db().readDoc |
upsertDoc | db().readDoc + updateDoc or createDoc |
queryDocs | db().queryDocs |
deleteDoc | db().deleteDoc |
Repositories (jsonb-contact-repository.ts, jsonb-draft-repository.ts, etc.) import from jsonb-collection.ts — same JSONB row shape as other collections.
Single file: data/schema.sql (v4.0.3). Do not use deprecated scripts/postgres-schema.sql.
Production rings use DB_BACKEND_MODE=k8s-postgres-fcm. See Backend modes and databases.
(data->>'status') = 'open' with btree expression indexes on hot keys.lib/geolocation/geolocation-service.ts and getSharedPgPool() — not private pools.Deep dive: AI-CONTEXT/concepts/database/query-patterns.json and Discovery & mutation sync.
Orders, payments JSONB, webhook idempotency.
You do not need separate databases per feature. Postgres + JSONB lets each clone emphasize store, opportunities, or community without forking the codebase. Schema SSOT: data/schema.sql (v4.0.3).
web3 |
features/wallet/services/ring-token-oracle.ts |
Never write raw SQL or instantiate a private pg.Pool for platform_settings. The adapter hybrid path is the only supported write surface.
All server code goes through db() from @/lib/database — never raw SQL in route handlers (except PostGIS via getSharedPgPool()).
readDoc / queryDocs return { success, data, error }. error is an Error object, not a string. Throw on failure in services; Server Actions may map to { error: string } for forms only.
The email CRM feature does not open its own database connection. features/email-crm/lib/jsonb-collection.ts wraps db().*Doc:
| Helper | Delegates to |
|---|---|
readDoc | db().readDoc |
upsertDoc | db().readDoc + updateDoc or createDoc |
queryDocs | db().queryDocs |
deleteDoc | db().deleteDoc |
Repositories (jsonb-contact-repository.ts, jsonb-draft-repository.ts, etc.) import from jsonb-collection.ts — same JSONB row shape as other collections.
Single file: data/schema.sql (v4.0.3). Do not use deprecated scripts/postgres-schema.sql.
Production rings use DB_BACKEND_MODE=k8s-postgres-fcm. See Backend modes and databases.
(data->>'status') = 'open' with btree expression indexes on hot keys.lib/geolocation/geolocation-service.ts and getSharedPgPool() — not private pools.Deep dive: AI-CONTEXT/concepts/database/query-patterns.json and Discovery & mutation sync.
Orders, payments JSONB, webhook idempotency.
You do not need separate databases per feature. Postgres + JSONB lets each clone emphasize store, opportunities, or community without forking the codebase. Schema SSOT: data/schema.sql (v4.0.3).
web3 |
features/wallet/services/ring-token-oracle.ts |
Never write raw SQL or instantiate a private pg.Pool for platform_settings. The adapter hybrid path is the only supported write surface.
All server code goes through db() from @/lib/database — never raw SQL in route handlers (except PostGIS via getSharedPgPool()).
readDoc / queryDocs return { success, data, error }. error is an Error object, not a string. Throw on failure in services; Server Actions may map to { error: string } for forms only.
The email CRM feature does not open its own database connection. features/email-crm/lib/jsonb-collection.ts wraps db().*Doc:
| Helper | Delegates to |
|---|---|
readDoc | db().readDoc |
upsertDoc | db().readDoc + updateDoc or createDoc |
queryDocs | db().queryDocs |
deleteDoc | db().deleteDoc |
Repositories (jsonb-contact-repository.ts, jsonb-draft-repository.ts, etc.) import from jsonb-collection.ts — same JSONB row shape as other collections.
Single file: data/schema.sql (v4.0.3). Do not use deprecated scripts/postgres-schema.sql.
Production rings use DB_BACKEND_MODE=k8s-postgres-fcm. See Backend modes and databases.
(data->>'status') = 'open' with btree expression indexes on hot keys.lib/geolocation/geolocation-service.ts and getSharedPgPool() — not private pools.Deep dive: AI-CONTEXT/concepts/database/query-patterns.json and Discovery & mutation sync.
Orders, payments JSONB, webhook idempotency.