Skip to content

bteodora/travel-tales-ecosystem

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1,369 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Travel Tales Logo

Travel Tales Ecosystem

The Next-Generation Immersive Tourism & Social Exploration Platform

DDD .NET Angular PostgreSQL Team

Travel Tales is a sophisticated, enterprise-grade digital ecosystem designed to gamify the human travel experience. Built to handle complex geospatial data, real-time user telemetry, and an internal virtual economy, it bridges the gap between digital content and physical exploration.

📄 Read the Engineering Specification (PDF) »
🏛 Explore Architecture » · 🤖 Meet Gavrilo AI » · 📸 Visual Gallery »



1. Executive Summary & Scale

Travel Tales is not merely a booking application; it is a Distributed Social & Location-Based Service (LBS) platform engineered by a massive cross-functional team. The project simulates a high-pressure enterprise environment, tackling challenges inherent to large-scale software development: concurrency, complex domain logic, and strict collaborative workflows.

The "16-Engineer" Challenge

Orchestrating code contribution from 16 developers simultaneously on a monolithic codebase requires military-grade discipline.

  • Infrastructure: Hierarchical Scrum methodology utilizing Jira for deep backlog management.
  • Pipeline: Strict GitFlow strategy with mandatory Code Reviews, protecting the main branch from regression.
  • Result: A cohesive system where sub-teams (Marketplace, Social, Core, Gamification) integrated complex modules without architectural collision.

2. Architectural Mastery: Domain-Driven Design (DDD)

The system is architected to survive complexity. We moved away from traditional CRUD (Create, Read, Update, Delete) to a Rich Domain Model approach.

2.1 The Core Engine

  • Modular Monolith: The application is physically monolithic for deployment simplicity but logically separated into strict Bounded Contexts (Stakeholders, Tours, Payments, Encounters).
  • Aggregate Roots: We enforced strict transaction boundaries. For example, the Tour aggregate ensures that Checkpoints and Equipment maintain invariant consistency before any persistence occurs.
  • Value Objects: Concepts like Coordinates, Money, and DateRange are immutable Value Objects, preventing "primitive obsession" and ensuring data integrity at the lowest level.

2.2 Technology Stack & Patterns

Layer Technology Engineering Highlights
Presentation Angular 15+ Component-based architecture, RxJS for reactive state management of real-time location streams.
Application .NET 7 API CQRS-inspired service layer, AutoMapper, Dependency Injection.
Domain C# Core Pure business logic, devoid of external dependencies, fully testable via xUnit.
Persistence PostgreSQL Utilizes PostGIS extensions for high-performance spatial queries (e.g., "Find tours within 5km radius").
Testing TDD / Moq Critical business rules (e.g., Discount calculation, XP logic) were developed using Test-Driven Development.

3. "Gavrilo" - Cognitive AI Integration

We pushed the boundaries of standard web apps by integrating Gavrilo, a context-aware AI assistant that serves as the platform's brain.

"Gavrilo is not a chatbot. He is an intelligent navigator for the physical and digital world."

  • Accessibility & Inclusion: Gavrilo utilizes Text-to-Speech (TTS) engines to audibly describe Tour Checkpoints and surroundings, making tourism accessible to visually impaired users.
  • Contextual Navigation: Users can issue natural language commands to navigate the complex UI.
  • Smart Recommendations: Utilizing a proprietary algorithm fed by user quizzes and behavioral data, Gavrilo curates personalized travel itineraries.

4. Gamification & "Encounters" Engine

Inspired by Augmented Reality (AR) mechanics, we engineered a location-based gameplay loop that turns the world into a game board.

4.1 The Encounter Protocol

The system tracks user location in real-time (via GPS or our custom Position Simulator) to trigger events:

  • Social Proximity Logic: Complex algorithms calculate clusters of users. A "Social Encounter" only activates when $N$ users interact within a geofenced radius of $X$ meters simultaneously.
  • Hidden Location Analysis: Users solve riddles using visual data. The system verifies if the user is standing at the exact vantage point of a reference image.
  • XP & Leveling System: A complete RPG-like progression system. Earning XP unlocks "Content Creator" privileges at Level 10, turning consumers into producers.

4.2 The Badge Ecosystem

A sophisticated achievement system tracks user telemetry to award prestige badges.

  • Algorithm Example: The "Mountain Conqueror" badge tracks cumulative elevation gain across multiple tours.
  • Social Status: Badges like "Party Maniac" or "Relaxation Guru" dynamically alter the user's social profile appearance.

5. Geospatial Intelligence & Tour Lifecycle

At the heart of Travel Tales is a robust geospatial engine.

5.1 Real-Time Tour Telemetry

The Tour Execution Session is a stateful process that monitors the user's journey.

  • Heartbeat Mechanism: The frontend transmits telemetry packets every 10 seconds.
  • Proximity Calculation: The backend performs spatial calculations against thousands of potential checkpoints to validate user presence.
  • Anti-Cheat & Validation: Logic ensures a user cannot review a tour unless they have physically completed >35% of the path and the time-delta is realistic (preventing GPS spoofing).

5.2 Content & Secret Unlocking

Tours are designed as "Discovery Chains." Reaching a checkpoint triggers a Domain Event that decrypts "Secret Content" (hidden stories, images, or next clues), delivering a narrative-driven experience.


6. Virtual Economy & Marketplace

We implemented a self-contained financial ecosystem to handle digital asset exchange.

  • Adventure Coins (AC) Ledger: A secure, internal currency system allowing for micro-transactions.
  • Complex Discount Strategy: The pricing engine handles overlapping logic: Bundles (Grouped Items) vs Coupons (User specific) vs Flash Sales (Time-limited). The system automatically resolves the "Best Price" for the user.
  • Inventory & Tokenization: Buying a tour generates a cryptographic-like PurchaseToken, permanently binding the content to the user's library.

7. Social Governance & Community

The platform includes a self-moderating social network.

  • Reputation Algorithm: Blog posts are governed by a Reddit-style upvote/downvote logic.
    • Score < -10: Auto-quarantine (Read-only).
    • Score > 500: Promotion to "Famous" status, increasing visibility in global feeds.
  • Club Hierarchies: Fully featured community management with Invite/Kick logic and member role delegation.

8. Setup & Deployment

The system is designed for containerized deployment.

# Clone the repository
git clone https://github.com/your-org/travel-tales-ecosystem.git

# Spin up the infrastructure (Database + API + Client)
docker-compose up -d --build

# The system initializes the PostGIS extensions automatically.
# Access the Web Dashboard at http://localhost:4200

9. Roadmap & Future Engineering

  • Microservices Migration: Extracting the Encounters and Payment modules into independent services communicating via RabbitMQ.
  • Mobile Native: Porting the Frontend to .NET MAUI or Flutter for native sensor access (Gyroscope/Compass).
  • Blockchain Integration: Converting Badges into NFTs (Non-Fungible Tokens) for permanent ownership on the blockchain.

Screenshots

Experience the interface

| Interactive Map & Telemetry | Gavrilo AI Assistant | |:---:|:---:| |

|

| | *Real-time user tracking with geofenced encounters* | *Context-aware voice & text assistance* |
Virtual Wallet & Market Gamification Profile
Complex bundle logic and currency ledger Dynamic badge rendering based on telemetry

About

Enterprise-grade social tourism platform driven by AI & Gamification. Built using Domain-Driven Design (DDD) by a 16-engineer Scrum team. Features geospatial telemetry & virtual economy.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors