Skip to main content
AndanDo Logo

What is AndanDo?

AndanDo is a full-featured tour marketplace platform that enables tour operators to publish, manage, and sell their tours while providing travelers with a seamless booking experience. Built with Blazor Server and .NET 10, AndanDo offers a complete end-to-end solution for the tour and services industry.

For Tour Operators

Create and manage tours with detailed itineraries, ticket types, extras, and pricing. Track reservations and earnings through a comprehensive dashboard.

For Travelers

Discover tours with advanced search, geolocation filtering, view detailed information, read reviews, and book with flexible payment options.

Key Features

Public Marketplace

Beautiful marketplace with tour cards displaying pricing, duration, ratings, and availability. Features a slider showcasing recent tours.

Advanced Search

Autocomplete search with geolocation support via Nominatim API. Filters persist in Base64 format with intelligent normalization.

Tour Management

Complete tour creation/editing with hero highlights, inclusions/exclusions, itinerary builder, FAQ system, and ticket type configuration.

Booking Flow

Multi-step reservation process with contact info, ticket selection, extras, and totals. All data persists in SQL Server.

Payment Integration

PayPal integration for secure payments with support for instant bookings, quotes, and deposits.

Creator Dashboard

Comprehensive dashboard with metrics, reservation management, invoice generation, and earnings tracking.

Architecture Overview

AndanDo follows a clean, service-oriented architecture:
1

Frontend Layer

Blazor Server components in Components/Pages including Home, Marketplace, SearchResults, TourDetails, NewTour, Dashboard pages, and Auth flows.
2

Service Layer

Domain services including TourService for tour management, AuthService for authentication with PBKDF2 hashing, and utility services for likes, reviews, currency conversion, and AI assistance.
3

Data Layer

SQL Server database accessed via stored procedures for optimal performance. Uses Microsoft.Data.SqlClient for data access.

Core Services

Program.cs
// Authentication & Session
builder.Services.AddScoped<IAuthService, AuthService>();
builder.Services.AddScoped<IJwtTokenService, JwtTokenService>();
builder.Services.AddScoped<UserSession>();
builder.Services.AddScoped<ProtectedLocalStorage>();

// Tour Management
builder.Services.AddScoped<ITourService, TourService>();

// Payment Processing
builder.Services.AddHttpClient<IPaypalService, PaypalService>();

// Utility Services
builder.Services.AddScoped<ICurrencyConversionService, CurrencyConversionService>();
builder.Services.AddScoped<IPostLikeService, PostLikeService>();
builder.Services.AddScoped<IReviewService, ReviewService>();
builder.Services.AddHttpClient<IAssistanceTextService, AssistanceTextService>();

Technology Stack

Backend

  • .NET 10 - Modern web framework
  • Blazor Server - Interactive web UI
  • SQL Server - Relational database
  • Entity Framework Core - Data access

Key Libraries

  • Microsoft.Data.SqlClient - Database connectivity
  • System.IdentityModel.Tokens.Jwt - JWT authentication
  • MailKit - Email services
  • System.Drawing.Common - Image processing

Security & Authentication

AndanDo implements enterprise-grade security:

Password Security

PBKDF2 with SHA256 hashing, 100,000 iterations, 16-byte salt, and 32-byte key size for secure password storage.

Session Management

JWT tokens for authentication with ProtectedLocalStorage for client-side session persistence in Blazor Server.
AuthService.cs
public string HashPassword(string password)
{
    var salt = RandomNumberGenerator.GetBytes(Pbkdf2SaltSize);
    var hash = Rfc2898DeriveBytes.Pbkdf2(
        password,
        salt,
        Pbkdf2Iterations,
        HashAlgorithmName.SHA256,
        Pbkdf2KeySize);

    return $"{Convert.ToBase64String(salt)}:{Convert.ToBase64String(hash)}";
}

Recent Updates

AndanDo is actively developed with continuous improvements and new features.
  • Reports Dashboard - Event selector with metrics (entries, reservations, sales) and expandable reservation tables
  • Ticket Management - Grouped ticket display from TourReservation and TourReservationTicket tables
  • Invoice Generation - HTML invoice generation using templates with “View Invoices” action menu per reservation
  • Ticket Listing - Display ticket codes and documents with duplicate prevention

What You’ll Learn

This documentation will guide you through:

Getting Started

Quick setup guide to get AndanDo running locally in minutes

Installation

Detailed installation with database setup and configuration

Tour Management

Creating and managing tours with all features

Booking System

Understanding the multi-step booking workflow

Payment Integration

Configuring PayPal and handling payments

Dashboard Features

Using the creator dashboard and reports

Prerequisites

Before you begin, ensure you have:

Development Tools

  • .NET SDK 10.0 (or .NET 8.0)
  • Visual Studio 2022+ or VS Code
  • SQL Server or SQL Express

External Services

  • Internet for geolocation (Nominatim)
  • PayPal developer account (optional)
  • Google Maps API key (optional)
If you don’t have .NET 10 SDK, you can temporarily change TargetFramework in AndanDo.csproj to net8.0.

Support & Community

This is a production codebase. Always replace example credentials and API keys before deploying to production.
Ready to get started? Head over to the Quickstart Guide to get AndanDo running in minutes!

Build docs developers (and LLMs) love