InventoryLocations
Docs
    Dealer Brand App

    Decentralized Self-building Future

    Sign In
    Inventory
    Locations
    Service
    My Garage
    How I shop
    Privacy|Contact
    v1.106.1|Sonoratek LLC

    Documentation

    Concepts, value, and typical clone scenarios — less code.

    Dealer desk docs
    Getting started
    First day on the desk
    Features
    Vehicle inventory
    Vehicle stock
    Listing a vehicle by hand
    Rooftops and the dealer group
    Dealer leads
    Rooftop messages
    Garage and how you shop
    Push Notifications with FCM (Ring-Powered)
    Tunnel Protocol

    Documentation

    Concepts, value, and typical clone scenarios — less code.

    Dealer desk docs
    Getting started
    First day on the desk
    Features
    Vehicle inventory
    Vehicle stock
    Listing a vehicle by hand
    Rooftops and the dealer group
    Dealer leads
    Rooftop messages
    Garage and how you shop
    Push Notifications with FCM (Ring-Powered)
    Tunnel Protocol

    Documentation

    Concepts, value, and typical clone scenarios — less code.

    Dealer desk docs
    Getting started
    First day on the desk
    Features
    Vehicle inventory
    Vehicle stock
    Listing a vehicle by hand
    Rooftops and the dealer group
    Dealer leads
    Rooftop messages
    Garage and how you shop
    Push Notifications with FCM (Ring-Powered)
    Tunnel Protocol
    Dealer Brand App Logo

    Loading documentation...

    Preparing Dealer Brand App content

    Dealer Brand App Logo

    Loading documentation...

    Preparing Dealer Brand App content

    Dealer Brand App Logo

    Loading documentation...

    Preparing Dealer Brand App content

    Rooftops and the dealer group

    A dealer clone's organizations are a parent group and the stores it owns. entities.preset is automotive-dealer. The public way to find a store is /rooftops, not the login-gated directory.

    This page is the dealer-pack overlay of the entities article. The Layer 1 entity record, member roles, and parentEntityId are unchanged. The catalog and the public map are the pack.

    Catalog

    Type idWhat it is
    dealer_groupParent company. Partner applications are addressed here when a group exists.
    dealer_rooftopA physical store with its own inventory and staff.
    service_centerService drive, attached or standalone.
    body_shopCollision repair in the group.
    finance_partnerA lender the group works with. Not a credit application on the website.
    insurance_partnerAn insurance desk partner.

    What visitors see

    Visitors open /rooftops, search by city or name, and can ask the browser for nearby stores. Each pin shows the rooftop, a phone link when you published one, directions, and a count of vehicles in stock. Inventory links go to /store, not into a private office.

    Staff still live on the entity. A lead is visible to the shopper who created it, platform admins, and members of that rooftop or its parent group. Choosing "Independent dealer" or "Parts supplier" under How I shop does not add that person to the rooftop.

    Public map

    /rooftops and GET /api/dealer/rooftops. No login.

    Inventory

    Each vehicle carries rooftopId or ownerEntityId.

    Leads

    The rooftop team is who gets the messenger thread.

    Files

    PiecePath
    Catalogfeatures/entities/presets/automotive-dealer.ts
    Preset exportfeatures/entities/presets/index.ts
    Public readerfeatures/dealer/services/rooftops.ts
    Map pageapp/[locale]/rooftops/page.tsx
    Map UIfeatures/dealer/components/rooftops-map.tsx
    APIapp/api/dealer/rooftops/route.ts
    Who may see a leadfeatures/entities/lib/entity-roles.ts (loadViewerEntityAccessIds on Layer 1)

    listPublicRooftops returns name, location, phone, email, geo, group id, and a vehicle count. It does not return owner ids or member lists.

    Frequently asked questions

    Impact

    Can a guest open the entity directory?

    /entities stays login-gated on Layer 1. Send guests to /rooftops.

    Does a partner application make someone a manager?

    No. It is an entity-visible lead to the group. Staff invite members the same way as any other entity.

    Ops

    What if there is no dealer group yet?

    The audience save still stores the note. The application is created only when a dealer_group or dealer_rooftop row exists.

    Related documentation

    Vehicle inventory

    Next-step: the inventory those rooftops publish.

    Dealer leads

    Same workflow: leads addressed to a rooftop or the group.

    1. /
    2. /Rooftops and the dealer group

    Updated Oct 28, 20263 min listen

    Rooftops and the dealer group

    A dealer clone's organizations are a parent group and the stores it owns. entities.preset is automotive-dealer. The public way to find a store is /rooftops, not the login-gated directory.

    This page is the dealer-pack overlay of the entities article. The Layer 1 entity record, member roles, and parentEntityId are unchanged. The catalog and the public map are the pack.

    Catalog

    Type idWhat it is
    dealer_groupParent company. Partner applications are addressed here when a group exists.
    dealer_rooftopA physical store with its own inventory and staff.
    service_centerService drive, attached or standalone.
    body_shopCollision repair in the group.
    finance_partnerA lender the group works with. Not a credit application on the website.
    insurance_partnerAn insurance desk partner.

    What visitors see

    Visitors open /rooftops, search by city or name, and can ask the browser for nearby stores. Each pin shows the rooftop, a phone link when you published one, directions, and a count of vehicles in stock. Inventory links go to /store, not into a private office.

    Staff still live on the entity. A lead is visible to the shopper who created it, platform admins, and members of that rooftop or its parent group. Choosing "Independent dealer" or "Parts supplier" under How I shop does not add that person to the rooftop.

    Public map

    /rooftops and GET /api/dealer/rooftops. No login.

    Inventory

    Each vehicle carries rooftopId or ownerEntityId.

    Leads

    The rooftop team is who gets the messenger thread.

    Files

    PiecePath
    Catalogfeatures/entities/presets/automotive-dealer.ts
    Preset exportfeatures/entities/presets/index.ts
    Public readerfeatures/dealer/services/rooftops.ts
    Map pageapp/[locale]/rooftops/page.tsx
    Map UIfeatures/dealer/components/rooftops-map.tsx
    APIapp/api/dealer/rooftops/route.ts
    Who may see a leadfeatures/entities/lib/entity-roles.ts (loadViewerEntityAccessIds on Layer 1)

    listPublicRooftops returns name, location, phone, email, geo, group id, and a vehicle count. It does not return owner ids or member lists.

    Frequently asked questions

    Impact

    Can a guest open the entity directory?

    /entities stays login-gated on Layer 1. Send guests to /rooftops.

    Does a partner application make someone a manager?

    No. It is an entity-visible lead to the group. Staff invite members the same way as any other entity.

    Ops

    What if there is no dealer group yet?

    The audience save still stores the note. The application is created only when a dealer_group or dealer_rooftop row exists.

    Related documentation

    Vehicle inventory

    Next-step: the inventory those rooftops publish.

    Dealer leads

    Same workflow: leads addressed to a rooftop or the group.

    1. /
    2. /Rooftops and the dealer group

    Updated Oct 28, 20263 min listen

    Rooftops and the dealer group

    A dealer clone's organizations are a parent group and the stores it owns. entities.preset is automotive-dealer. The public way to find a store is /rooftops, not the login-gated directory.

    This page is the dealer-pack overlay of the entities article. The Layer 1 entity record, member roles, and parentEntityId are unchanged. The catalog and the public map are the pack.

    Catalog

    Type idWhat it is
    dealer_groupParent company. Partner applications are addressed here when a group exists.
    dealer_rooftopA physical store with its own inventory and staff.
    service_centerService drive, attached or standalone.
    body_shopCollision repair in the group.
    finance_partnerA lender the group works with. Not a credit application on the website.
    insurance_partnerAn insurance desk partner.

    What visitors see

    Visitors open /rooftops, search by city or name, and can ask the browser for nearby stores. Each pin shows the rooftop, a phone link when you published one, directions, and a count of vehicles in stock. Inventory links go to /store, not into a private office.

    Staff still live on the entity. A lead is visible to the shopper who created it, platform admins, and members of that rooftop or its parent group. Choosing "Independent dealer" or "Parts supplier" under How I shop does not add that person to the rooftop.

    Public map

    /rooftops and GET /api/dealer/rooftops. No login.

    Inventory

    Each vehicle carries rooftopId or ownerEntityId.

    Leads

    The rooftop team is who gets the messenger thread.

    Files

    PiecePath
    Catalogfeatures/entities/presets/automotive-dealer.ts
    Preset exportfeatures/entities/presets/index.ts
    Public readerfeatures/dealer/services/rooftops.ts
    Map pageapp/[locale]/rooftops/page.tsx
    Map UIfeatures/dealer/components/rooftops-map.tsx
    APIapp/api/dealer/rooftops/route.ts
    Who may see a leadfeatures/entities/lib/entity-roles.ts (loadViewerEntityAccessIds on Layer 1)

    listPublicRooftops returns name, location, phone, email, geo, group id, and a vehicle count. It does not return owner ids or member lists.

    Frequently asked questions

    Impact

    Can a guest open the entity directory?

    /entities stays login-gated on Layer 1. Send guests to /rooftops.

    Does a partner application make someone a manager?

    No. It is an entity-visible lead to the group. Staff invite members the same way as any other entity.

    Ops

    What if there is no dealer group yet?

    The audience save still stores the note. The application is created only when a dealer_group or dealer_rooftop row exists.

    Related documentation

    Vehicle inventory

    Next-step: the inventory those rooftops publish.

    Dealer leads

    Same workflow: leads addressed to a rooftop or the group.

    1. /
    2. /Rooftops and the dealer group

    Updated Oct 28, 20263 min listen

    GET /api/dealer/audience and PUT /api/dealer/audience write users.data.dealerAudience only (shopper, independent_dealer, parts_supplier, other). They never write users.data.role and never call assertEntityRole to grant membership.

    When the audience is independent_dealer or parts_supplier, the route resolves the first dealer_group (or, if none, the first dealer_rooftop) and calls createDealerLead with kind: 'partner_application'. An open application for that user is reused.

    The page is app/[locale]/(protected)/profile/audience/page.tsx. Desktop nav id audience points at /profile/audience. It is not on the landing page or the store.

    Docs
    Features

    GET /api/dealer/audience and PUT /api/dealer/audience write users.data.dealerAudience only (shopper, independent_dealer, parts_supplier, other). They never write users.data.role and never call assertEntityRole to grant membership.

    When the audience is independent_dealer or parts_supplier, the route resolves the first dealer_group (or, if none, the first dealer_rooftop) and calls createDealerLead with kind: 'partner_application'. An open application for that user is reused.

    The page is app/[locale]/(protected)/profile/audience/page.tsx. Desktop nav id audience points at /profile/audience. It is not on the landing page or the store.

    Docs
    Features

    GET /api/dealer/audience and PUT /api/dealer/audience write users.data.dealerAudience only (shopper, independent_dealer, parts_supplier, other). They never write users.data.role and never call assertEntityRole to grant membership.

    When the audience is independent_dealer or parts_supplier, the route resolves the first dealer_group (or, if none, the first dealer_rooftop) and calls createDealerLead with kind: 'partner_application'. An open application for that user is reused.

    The page is app/[locale]/(protected)/profile/audience/page.tsx. Desktop nav id audience points at /profile/audience. It is not on the landing page or the store.

    Docs
    Features