Skip to main content
Kin Conecta offers rich profile features tailored to both tourists and guides, enabling meaningful connections and personalized experiences.

Tourist Profiles

Tourist profiles help travelers showcase their preferences and connect with compatible guides.

Profile Information

Personal Details

Manage location, bio, avatar, and cover images to create an attractive profile

Travel Preferences

Define travel style, trip type, pace preferences, and activity levels

Interests & Languages

Add interests and languages to improve matching with guides

Badges & Recognition

Earn badges based on membership status and platform activity

Key Fields

The TouristProfile model includes:
  • Basic Info: Location, bio, member since date, avatar/cover URLs
  • Travel Style: Travel style, trip type, pace and company preferences
  • Activity Level: Enum values for activity intensity (LOW, MODERATE, HIGH, VERY_HIGH)
  • Planning Level: Enum values for planning preferences (SPONTANEOUS, FLEXIBLE, STRUCTURED, VERY_PLANNED)
  • Preferences: Group size, dietary preferences, amenities, transport options
  • Accessibility: Accessibility requirements and additional notes
  • Photos: Photo taking preferences
Tourist profiles are linked to user accounts via user_id and stored in the tourist_profiles table.

Managing Interests

Tourists can add multiple interests to their profile:
// Model: TouristProfileInterest.java
// Links tourists to interests via composite key
@EmbeddedId
private TouristProfileInterestId id;
Interests are managed through:
  • InterestController.java - CRUD operations for interest categories
  • TouristProfileInterestController.java - Link/unlink interests to profiles

Language Support

Tourists can specify languages they speak:
// Model: TouristProfileLanguage.java
// Composite key linking user_id + language_code
@EmbeddedId
private TouristProfileLanguageId id;
Managed via TouristProfileLanguageController.java for adding/removing languages.

Guide Profiles

Guide profiles are more comprehensive, showcasing expertise, availability, and professional credentials.

Profile Components

Professional Info

Summary, story, hourly rate, experience level, and tour style

Ratings & Reviews

Average rating and review count displayed prominently

Expertise Areas

Multiple expertise areas to attract relevant tourists

Certifications

Display professional certifications and credentials

Key Fields

The GuideProfile model includes:
  • Profile Content: Summary, story, status text, avatar/cover URLs
  • Pricing: Hourly rate and currency
  • Reputation: Average rating (rating_avg) and reviews count
  • Location: Location label for guide’s area of operation
  • Experience: Experience level and tour style
  • Tour Details: Group size preferences, tour intensity, transport offered
  • Photo Style: Photography style and approach
  • Updates: Post text, images, captions with publish timestamps
Guide profiles track reputation metrics automatically through the review system.

Expertise Management

Guides can add multiple expertise areas:
// Model: GuideExpertiseArea.java
// Defines categories like "History", "Food", "Nature", etc.
Controllers:
  • GuideExpertiseAreaController.java - Manage expertise categories
  • GuideProfileExpertiseController.java - Link expertise to guide profiles

Certifications

Guides can add professional certifications:
// Model: GuideCertification.java
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long certificationId;

private Long userId;
private String name;
Managed via GuideCertificationController.java at:
/api/v1/guide-certifications

Languages & Adaptations

Guides specify:
  • Languages: Managed via GuideProfileLanguageController.java
  • Adaptations: Special accommodations offered (e.g., wheelchair accessible) via GuideAdaptationController.java

Availability Calendar

Guides manage availability through calendar events:
// Model: GuideCalendarEvent.java
enum EventType { AVAILABLE, BLOCKED, BOOKING }
enum Status { PENDING, CONFIRMED, CANCELLED }
enum Source { MANUAL, BOOKING, SYSTEM }
The calendar system at GuideCalendarEventController.java tracks:
  • Start and end datetime
  • Event type and status
  • Source (manual entry, booking, or system-generated)

Location Management

Guides can define multiple service locations:
// Model: GuideLocation.java
// Controller: GuideLocationController.java

API Endpoints

Tourist Profile

GET    /api/v1/tourist-profiles/{id}
POST   /api/v1/tourist-profiles
PUT    /api/v1/tourist-profiles/{id}
DELETE /api/v1/tourist-profiles/{id}

Guide Profile

GET    /api/v1/guide-profiles/{id}
POST   /api/v1/guide-profiles
PUT    /api/v1/guide-profiles/{id}
DELETE /api/v1/guide-profiles/{id}
Tourist profiles focus on preferences, interests, and travel style to help match with guides. Guide profiles are professional portfolios showcasing expertise, certifications, availability, and pricing information.
Yes, users can have both profile types linked to their user account, allowing them to both book tours as tourists and offer tours as guides.
Profile images are stored via URLs in avatar_url and cover_url fields. The actual file storage and upload handling is managed separately from the profile data.

Compatibility Matching

Learn how profiles power our matching algorithm

Reviews & Ratings

See how reviews update guide profile ratings

Build docs developers (and LLMs) love