# MarinaConcessions.com
Last updated: 11 September 2026
This README is development documentation. It is not a customer-facing page and
is not part of the public navigation. It is still readable at `/readme`.
Each section separates **CURRENTLY WORKING** from **PLANNED / ARCHITECTURAL
DIRECTION**. Planned items are not built.
---
## 1. Project purpose
MarinaConcessions helps marinas create and manage commercial relationships with
useful marine service providers.
Tagline: Better services for boaters. More value for marinas.
**PLANNED / ARCHITECTURAL DIRECTION**
MarinaConcessions is intended to be the independent infrastructure and operating
layer for marina service relationships, not the consumer-facing brand for every
concession. Three presentation modes are anticipated: marina branded, service
provider branded, and neutral MarinaConcessions branded. For active concessions
the preferred model is usually marina branded or provider branded, with
MarinaConcessions operating underneath the customer experience.
MarinaConcessions does not own the customer relationship. This site is not a
marketplace and does not describe itself as one.
---
## 2. Current public pages
**CURRENTLY WORKING**
- `/` Homepage. Wordmark, tagline, proposition, two calls to action, example
service cards, short explanation of the parties involved.
- `/for-marinas` Marina submission form. Required: marina name, location,
contact name, email. Optional: phone, website, notes, services of interest.
- `/for-service-providers` Provider submission form. Required: business name,
contact name, email, service category. Optional: phone, website, coverage
area, expansion interest, existing marina relationships, notes.
- `/how-it-works` Conceptual page describing four stages, each done by people.
- `/contact` Contact form: name, company, email, message.
- `/readme` This document. Linked only from the footer.
- `/auth` Sign-in and account creation for the admin area. Not indexed.
---
## 3. Current admin functionality
**CURRENTLY WORKING**
- `/admin` requires a signed-in account holding the admin role.
- `/admin/marinas` marina submissions with contacts, services, notes, status,
date.
- `/admin/providers` provider submissions with contacts, categories, coverage,
relationships, notes, status, date.
- `/admin/opportunities` manual creation and listing of concession
opportunities linking a marina, provider and category.
- `/admin/interactions` plain interaction notes against marinas or providers.
---
## 4. Database structure
**CURRENTLY WORKING**
Lovable Cloud backend. Tables: `marinas`, `providers`, `contacts`,
`concession_opportunities`, `interactions`, `user_roles`.
Status values: marinas and providers use new, reviewing, contacted,
conversation, active, paused. Opportunities use idea, reviewing, open,
discussion, active, closed.
No financial, payment, commission or contract tables exist.
---
## 5. Current service categories
Boat brokerage, marine surveying, boat valeting and cleaning, marine
engineering, rigging, marine insurance, training.
---
## 6. Security model
**CURRENTLY WORKING**
- Row Level Security is enabled on every table.
- Public visitors can insert form submissions only. They cannot read any
records.
- Signed-in admins can read and manage records. Roles live in `user_roles` and
are checked server side by a `has_role` function.
- An account has no access until the admin role is granted.
- No service keys or API secrets are exposed in client code.
---
## 7. AI integration points
**PLANNED** — placeholders only, none active: `analyse_marina`,
`analyse_provider`, `suggest_concessions`, `match_providers`,
`prepare_outreach`, `summarise_interaction`.
---
## 8. LLM and search accessibility
Applies only to deliberately public informational pages. It does not make any
private record readable.
| Item | Status |
| --- | --- |
| `/robots.txt` | IMPLEMENTED. Allows general and AI crawlers including OAI-SearchBot. Disallows `/admin` and `/auth`. Declares the sitemap. Verified on the live domain: see the acceptance notes below. |
| `/sitemap.xml` | IMPLEMENTED. Lists `/`, `/for-marinas`, `/for-service-providers`, `/how-it-works`, `/contact` only. |
| `/llms.txt` | IMPLEMENTED. Plain text, factual, no invented claims. |
| Canonical domain | IMPLEMENTED. `https://marinaconcessions.com` on every public page, with matching `og:url`. Lovable preview hostnames are not presented as canonical. |
| Server / pre-rendered public HTML | IMPLEMENTED. Pages are server-rendered by TanStack Start, so headings and body text appear in the initial HTML. |
| Live custom-domain verification | See the acceptance report in the change log entry below. Anything not confirmed there is NOT VERIFIED. |
HTML practice: semantic elements, one H1 per public page, H2 and H3 hierarchy,
labelled form fields, standard crawlable links. Core meaning is not held only in
graphics or in JavaScript that runs after load.
---
## 9. Branding architecture
**CURRENTLY WORKING**
`src/lib/brand.ts` holds a single `Brand` object: name, optional accent suffix,
tagline, optional logo URL, primary and secondary colour tokens, optional
contact details, footer attribution, presentation mode and canonical origin.
`SiteLayout` and `Wordmark` accept a `brand` prop and default to the
MarinaConcessions brand. Visual values come from design tokens in
`src/styles.css`, not hard-coded colour classes.
There is no user interface for editing brands. Current public branding remains
MarinaConcessions.com: white background, dark navy text, blue accent, clean
sans-serif, bold wordmark, single wave motif.
---
## 10. Future turnkey / white-label deployment
**PLANNED / ARCHITECTURAL DIRECTION**
A future live concession may be deployed as a turnkey service using the marina's
or provider's own name, logo, colours, language, domain or subdomain and
customer-facing contact details, with MarinaConcessions providing the underlying
workflow, data structure and administration.
Possible future brand-context attributes: presentation mode, public brand name,
logo, colour settings, customer-facing contact details, custom domain or
subdomain, optional MarinaConcessions attribution.
Not built: custom domains, full white-label administration, multi-tenant
dashboards. Attribution is not required; MarinaConcessions can remain invisible
on deployed concession experiences.
---
## 11. Research and outreach engine
**PLANNED / ARCHITECTURAL DIRECTION** — concepts only, nothing active.
Marina Scout may later research marina ownership, management, berth capacity,
facilities, existing services, existing providers, potential service gaps,
commercial property and recent developments.
Provider Scout may later research service category, operating geography,
existing marina relationships, capabilities and potential expansion areas.
Intended process: discover, research, analyse, human review, helpful outreach,
conversation, structured data update.
Not built and not intended: automated cold email, automatic email scraping,
outreach sequences. Nobody is contacted by the system.
---
## 12. Network-effect hypothesis
**PLANNED / ARCHITECTURAL DIRECTION** — a hypothesis, not a feature.
- A provider operating successfully at one marina may be easier for nearby
marinas to adopt.
- Several nearby marinas may together support a specialist provider.
- Providers may recommend complementary providers.
- Marinas may identify missing categories and invite businesses they trust.
- Providers may identify nearby marinas for expansion.
- A strong provider profile may be reusable across relationships.
- The system may eventually measure regional coverage and provider density.
Not intended: referral rewards, gamification, provider rankings, or assuming a
provider is suitable merely because they are nearby.
---
## 13. Boater-first principle
A concession should not exist merely because it creates income for a marina. A
good concession should also make boating easier, more reliable or more useful
for the boat owner.
- Marina: better services and potential additional commercial value.
- Service provider: structured access to a relevant marina community.
- Boater: easier access to useful services.
- MarinaConcessions: provides the operating infrastructure.
---
## 14. Current limitations
- No pricing, commissions, payments or financial terms.
- No contracts, agreements or legal wording.
- No scoring, ranking, reviews or automated matching.
- No bookings, customer accounts or consumer marketplace search.
- No multi-tenancy, custom domains or white-label administration.
- No automated outreach or transactional email.
- No public API, MCP server or agent actions.
- No invented claims, statistics, case studies or testimonials anywhere.
---
## 15. Change log
- 11 September 2026: First working version. Public pages, submission forms,
private admin area, database with row level security, README page.
- 11 September 2026: Positioning update. Added central brand configuration
(`src/lib/brand.ts`) and made `SiteLayout` and `Wordmark` brand-driven. Added
`/robots.txt`, `/sitemap.xml` and `/llms.txt`. Added canonical URLs and
`og:url` on `marinaconcessions.com` for all public pages. Marked `/readme`
noindex and removed the README button from the header, leaving a small footer
link. Rewrote this README. No database changes.