Scouttlo
Todas las ideas/contact management/Una plataforma SaaS que ofrezca un módulo de gestión de contactos multi-inquilino con persistencia, endpoints administrativos y cumplimiento GDPR integrados.
GitHubB2BCRMcontact management

Una plataforma SaaS que ofrezca un módulo de gestión de contactos multi-inquilino con persistencia, endpoints administrativos y cumplimiento GDPR integrados.

Detectado hace 11 horas

7.3/ 10
Score general

Convierte esta senal en ventaja

Te ayudamos a construirla, validarla y llegar primero.

Del dolor detectado a un plan accionable: quien paga, que MVP lanzar primero, como validarlo con usuarios reales y que medir antes de invertir meses.

Analisis ampliado

Entiende por que esta idea vale la pena

Desbloquea el analisis completo: que significa la oportunidad, que problema existe hoy, como esta idea lo resuelve y los conceptos clave que tienes que conocer para construirla.

Solo usamos tu correo para enviarte el digest. Cancelas cuando quieras.

Desglose del score

Urgencia8.0
Tamano de mercado7.0
Viabilidad8.0
Competencia6.0
El dolor

La gestión unificada y segura de contactos para múltiples inquilinos y clientes host en aplicaciones SaaS es compleja y requiere cumplimiento de privacidad.

Quien pagaria

Empresas SaaS que gestionan múltiples clientes o inquilinos y necesitan manejar contactos con privacidad y administración centralizada.

Senal que disparo la idea

"Ship the new `Granit.Contacts` module: `Contact` aggregate + persistence + admin endpoints + GDPR handlers."

Traduccion: "Lanzar el nuevo módulo `Granit.Contacts`: agregado de `Contact`, persistencia, endpoints administrativos y manejadores GDPR."

Publicacion original

[FEATURE] Granit.Contacts module — domain, persistence, endpoints, privacy

Publicado: hace 11 horas

Repository: granit-fx/granit-dotnet Author: jfmeyers ## Parent epic #1220 ## Goal Ship the new `Granit.Contacts` module: `Contact` aggregate + persistence + admin endpoints + GDPR handlers. **No migration of downstream modules in this feature** — this lands the module in isolation so it can be reviewed standalone and consumed by Features 2–5 in subsequent PRs. ## Dual-use design (see Epic for context) The `Contact` aggregate is `IMultiTenant`: - `TenantId == null` ⇒ **host-scoped customer** (the SaaS host's B2B customers — i.e. its tenants viewed as billable entities) - `TenantId == <tenant>` ⇒ **tenant-scoped customer** (an e-commerce app running on a tenant stores its own end-customers here) Both kinds share the same table, same behavior, same admin endpoints — the existing `IMultiTenant` query filter handles isolation. Tenant admins see only their own customers; host admins (no tenant context) see host-scoped customers and can opt-in to cross-tenant browsing via `IDataFilter.Disable<IMultiTenant>()`. ## Module split (Granit convention) - `Granit.Contacts` — abstractions: `Contact` aggregate (with `IMultiTenant`), `ContactExternalMapping`, `BillingAddress` (moved here from Invoicing), `ContactStatus`, `ContactId` value object, reader/writer interfaces, domain + integration events, `GranitCustomersModule` - `Granit.Contacts.EntityFrameworkCore` — `ContactsDbContext`, `EfContactStore`, `EfContactQueryableSource`, entity configurations - `Granit.Contacts.Endpoints` — admin CRUD + external mapping management endpoints (visible at both host and tenant scope; permissions split `Contacts.Manage` per `MultiTenancySides`) - `Granit.Contacts.Privacy` — `IPersonalDataExportHandler` + `IPersonalDataDeletionHandler` for the customer's personal-data fields (email, billing address). DPO-driven. - `Granit.Contacts.Tests` (+ `.Tests.Integration` if needed) ## User stories - #1226 - Design Contact aggregate, value objects, and events - #1227 - EF Core persistence — ContactsDbContext, EfContactStore, configurations - #1228 - Admin endpoints — CRUD + external mapping management - #1229 - Privacy handlers — IPersonalDataExportHandler + IPersonalDataDeletionHandler - #1230 - Validate dual-use semantics — host-scope and tenant-scope coexistence - #1231 - Default customer resolver — bridge from tenantId to host-scoped customer ## Acceptance criteria - All four packages compile and reference each other per `[DependsOn]` convention - `dotnet test` green for the new test projects, coverage ≥ 80% on the module - Architecture tests pass (`Granit.ArchitectureTests`); pairing rule satisfied (`CustomerQueryDefinition` + `CustomerExportDefinition`) - `dotnet format --verify-no-changes` clean - New test projects added to `.github/test-shards.json` (likely the `business` shard) - Endpoints exposed at both `/contacts` (tenant scope) and `/admin/contacts` (host scope) per Granit's MultiTenancySides convention

Tu digest diario

Te gusto esta? Recibe 5 como esta cada manana.

Oportunidades SaaS puntuadas por IA en urgencia, tamano de mercado, viabilidad y competencia. Curadas desde Reddit, HackerNews y mas.

Gratis. Sin spam. Cancela cuando quieras.