Documentation Index
Fetch the complete documentation index at: https://mintlify.com/Ishaq74/concordia/llms.txt
Use this file to discover all available pages before exploring further.
Services Marketplace
Concordia’s Services Marketplace enables providers to list professional services with flexible scheduling, booking management, multi-language translations, and customer reviews.Overview
The marketplace is built from:services_listings.schema.ts- Core service listingsservices_categories.schema.ts- Service categorizationservices_translations.schema.ts- Multi-language contentservices_availability.schema.ts- Availability schedulesservices_bookings.schema.ts- Reservation systemservices_reviews.schema.ts- Customer reviews
Service Listings
Fromsrc/database/schemas/services_listings.schema.ts:
Core Fields
Service unique identifier
Unique URL-friendly identifier
Reference to service category
User ID of the service provider
Optional organization offering this service
Service Status
Listing status:
pending_review, active, suspended, archivedWhether the service is currently accepting bookings
Featured services get prominent placement
Display on homepage
Pricing
Base price as string (for precise decimal handling)Example:
"50.00"Pricing model:
hourly, fixed, free, negotiableISO 4217 currency code
Service Details
Standard service duration in minutesExample:
60 for 1-hour serviceWhether provider travels to customer location
Maximum number of participants (for workshops/classes)Example:
10Booking Policies
Minimum hours in advance required for bookingExample:
24 (1 day notice)Hours before service start when free cancellation is allowedExample:
48 (2 days)Content Settings
Enable customer reviews for this service
Primary language of the service
Service Categories
Fromsrc/database/schemas/services_categories.schema.ts:
Category identifier
Unique URL slug
Category name in multiple languages
Category description in multiple languages
Icon identifier (e.g., MDI icon name)Example:
"mdi:wrench"Reference to featured image
Parent category for hierarchical structure
Display order within parent
Show on homepage
Show in navigation menu
Category is active and visible
Featured categories get special prominence
Categories are hierarchical via
parentId and ordered by sortOrder for flexible taxonomy.Multi-Language Translations
Fromsrc/database/schemas/services_translations.schema.ts:
Translation entry ID
Reference to parent service listing
ISO 639-1 language code
Service title in this languageExample:
{"fr": "Réparation de plomberie d'urgence"}Full service description
Brief summary for listings
SEO-optimized page title
Meta description for search engines
SEO keywords array
Canonical URL for this translation
Availability Scheduling
Fromsrc/database/schemas/services_availability.schema.ts:
Availability entry ID
Reference to service listing
Day of week: 0 (Sunday) to 6 (Saturday)
Start time in HH:MM formatExample:
"09:00"End time in HH:MM formatExample:
"17:00"Whether this time slot is available for booking
Unique Constraint
The schema enforces uniqueness on(serviceId, dayOfWeek, startTime) to prevent duplicate time slots:
This allows providers to define recurring weekly schedules. Each service can have multiple availability windows per day.
Bookings & Reservations
Fromsrc/database/schemas/services_bookings.schema.ts:
Booking Fields
Booking unique identifier
Reference to booked service
User ID of the customer
User ID of the service provider
Booking Schedule
Date of service in YYYY-MM-DD formatExample:
"2026-03-15"Time of service in HH:MM formatExample:
"14:00"Duration of this booking in minutesExample:
90Payment
Final price as string for precisionExample:
"75.00"ISO 4217 currency code
Booking Status
Booking status:
pending, confirmed, completed, cancelled, no_showCommunication
Message from customer to provider
Provider’s response to booking
Lifecycle Timestamps
When booking was cancelled (if applicable)
When service was completed
When booking was created
Last modification time
Reviews & Ratings
Fromsrc/database/schemas/services_reviews.schema.ts:
Review identifier
Service being reviewed
Parent review ID for threaded replies (provider responses)
Author Information
Reviewer’s display name
Reviewer’s email (for notifications)
Optional authenticated user ID
Review Content
Review text as structured JSON
Star rating (typically 1-5)
Language code of the review
Moderation
Review status:
pending, approved, rejectedThreaded Replies
The schema supports threaded discussions viaparentId:
Providers can respond to reviews by creating a reply with
parentId set to the original review.Media Management
Fromservices_listings.schema.ts, services can have multiple media items:
Media usage type:
cover for main image, gallery for additional imagesDisplay order for gallery images
Database Indexes
Performance optimizations from schema files:Listings Indexes
Bookings Indexes
Reviews Indexes
Integration with Places
Fromconcordia-specs.md (lines 955-980), services can be linked to physical places:
- Professional services tied to a business location
- Geographic search for local services
- Reviews aggregation across place and services
Marketplace Flow
- Provider creates service → Status:
pending_review - Admin moderates → Status:
activeorrejected - Provider sets availability → Define weekly schedule
- Customer books service → Creates booking with
pendingstatus - Provider confirms → Booking status:
confirmed - Service completed → Booking status:
completed,completedAtset - Customer reviews → Review created with
pendingstatus - Moderator approves → Review status:
approved
Best Practices
Pricing Strategy
- Use
priceTypeto set customer expectations - Store prices as strings for decimal precision
- Always specify
currencyfor international users
Availability Management
- Define clear weekly schedules
- Use
isAvailable: falsefor temporary blocks - Consider
bookingAdvanceHoursfor preparation time
Booking Policies
- Set reasonable
cancellationHoursfor flexibility - Use
customerMessagefor special requirements - Update status promptly for good customer experience
Review Moderation
- Review all pending reviews within 24 hours
- Allow providers to respond via threaded replies
- Use
approvedstatus only for legitimate reviews