165 lines
3.4 KiB
Markdown
165 lines
3.4 KiB
Markdown
# 02. Content Architecture and Data Model
|
|
|
|
## Purpose
|
|
|
|
Define the information structure behind the public site and admin area before implementation begins.
|
|
|
|
## Scope
|
|
|
|
- Public pages:
|
|
- homepage
|
|
- listing page
|
|
- property detail page
|
|
- contact page
|
|
- editable content pages
|
|
- Core business entities:
|
|
- property
|
|
- property image
|
|
- amenity
|
|
- pricing rule
|
|
- availability block
|
|
- booking
|
|
- payment
|
|
- enquiry
|
|
- testimonial
|
|
- content page
|
|
- site settings
|
|
|
|
## Proposed Content Architecture
|
|
|
|
### Public Content Layers
|
|
|
|
- Global site content:
|
|
- brand name
|
|
- logo
|
|
- contact details
|
|
- social links
|
|
- footer content
|
|
- site-wide SEO defaults
|
|
- Marketing content:
|
|
- homepage hero
|
|
- testimonials
|
|
- feature blocks
|
|
- location highlights
|
|
- FAQs
|
|
- Property content:
|
|
- title
|
|
- slug
|
|
- summary
|
|
- full description
|
|
- location text
|
|
- capacity details
|
|
- amenities
|
|
- gallery
|
|
- house rules
|
|
- check-in/check-out times
|
|
- pricing summary
|
|
- availability data
|
|
|
|
### Core Entities
|
|
|
|
- Property
|
|
- published status
|
|
- featured status
|
|
- slug
|
|
- summary
|
|
- long description
|
|
- sleeps
|
|
- bedrooms
|
|
- bathrooms
|
|
- pets allowed flag
|
|
- minimum stay rules if needed
|
|
- PropertyImage
|
|
- property relation
|
|
- alt text
|
|
- display order
|
|
- primary image flag
|
|
- Amenity
|
|
- name
|
|
- icon/label if needed
|
|
- property relation
|
|
- PricingRule
|
|
- property relation or global relation
|
|
- base price
|
|
- seasonal overrides
|
|
- weekend override
|
|
- guest-based adjustments if needed
|
|
- AvailabilityBlock
|
|
- property relation
|
|
- start date
|
|
- end date
|
|
- reason/status
|
|
- Booking
|
|
- property relation
|
|
- customer details
|
|
- dates
|
|
- guest counts
|
|
- price totals
|
|
- booking status
|
|
- payment status
|
|
- timestamps
|
|
- Payment
|
|
- booking relation
|
|
- Stripe identifiers
|
|
- amount
|
|
- currency
|
|
- status
|
|
- webhook event tracking
|
|
- Enquiry
|
|
- property relation optional
|
|
- customer details
|
|
- message
|
|
- timestamps
|
|
- Testimonial
|
|
- author name
|
|
- content
|
|
- rating if used
|
|
- publish status
|
|
- ContentPage
|
|
- slug
|
|
- title
|
|
- body content
|
|
- SEO fields
|
|
- SiteSettings
|
|
- business details
|
|
- booking rules
|
|
- default SEO
|
|
- email settings references
|
|
- social links
|
|
|
|
## What Needs to Be Done
|
|
|
|
- Define the entities and their relationships.
|
|
- Define which fields are public, admin-only, or system-managed.
|
|
- Identify which content is reusable across pages.
|
|
- Define the minimum data needed to support the booking flow and SEO pages.
|
|
- Identify any content that should be seeded versus manually managed.
|
|
|
|
## Entity Relationships
|
|
|
|
- A property can have many images.
|
|
- A property can have many amenities.
|
|
- A property can have many pricing rules.
|
|
- A property can have many availability blocks.
|
|
- A property can have many bookings.
|
|
- A booking can have one payment record.
|
|
- A property can have many enquiries.
|
|
- A content page is standalone but uses shared site settings.
|
|
- Testimonials are site-level content and may optionally be linked to a property.
|
|
|
|
## Acceptance Criteria
|
|
|
|
- The project has a clear content model.
|
|
- The admin-managed content is separated from the public-facing content.
|
|
- The model supports multiple properties without special-casing one-off pages.
|
|
- The data model is sufficient to support the later booking and admin docs.
|
|
- Relationship ownership is clear enough to implement later without reinterpretation.
|
|
|
|
## Dependencies
|
|
|
|
- Intake and scope approval.
|
|
|
|
## Notes
|
|
|
|
- If a field is uncertain, it should be marked for decision instead of guessed.
|