{
  "format": "dataset-manifest/1",
  "slug": "customizable-travel-guides-app",
  "version": 1,
  "seed": "customizable-travel-guides-app:1",
  "spec": {
    "format": "dataset/1",
    "slug": "customizable-travel-guides-app",
    "name": "Travel Guide Insights",
    "tagline": "User interactions with customizable travel guides, including downloads, purchases, and popular sections.",
    "description": "Users explore a variety of customizable travel guides tailored to their preferences and interests, enhancing their travel experiences. This business thrives on providing detailed itineraries, local insights, and accommodation recommendations, enabling travelers to navigate new destinations with confidence. Each user can engage with multiple guides, often downloading several for different locations while only a select few opt to purchase premium content. As a result, the interaction between users and their chosen guides creates a dynamic landscape of travel preferences and trends.\n\nThe dataset captures several interconnected tables that reveal valuable insights into user behavior and guide popularity. The 'users' table represents individual travelers, containing information such as demographics and preferences. 'guides' details the available travel guides, including their unique features and themes. Each guide is made up of various 'guide_sections', which break down the content into manageable parts, highlighting specific tips and recommendations. The 'user_guide_interactions' table tracks the actions that users take with the guides, showing which ones are downloaded, favorited, or explored in detail. Lastly, 'guide_purchases' records transactions for premium guide content, providing a clear picture of purchasing behavior.\n\nThis dataset offers a wealth of opportunities to answer critical business questions, such as analyzing user preferences, understanding which guides lead to purchases, and identifying popular sections within guides. Developers can practice techniques in data analysis, join operations, and user behavior modeling, all while working with synthetic data that simulates real-world scenarios in the travel industry.",
    "domain": "travel",
    "shape": "transactional",
    "useCases": [
      "sql-practice",
      "orm-seeding"
    ],
    "keywords": [
      "travel",
      "guides",
      "customizable",
      "user interactions",
      "downloads",
      "purchases",
      "tips"
    ],
    "locale": "en",
    "license": "CC0-1.0",
    "version": 1,
    "tables": {
      "users": {
        "description": "Each row represents a user of the travel guide app. It holds personal information about users and their interactions.",
        "rows": 200,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for the user."
          },
          "full_name": {
            "kind": "fullName",
            "description": "The user's full name.",
            "nullable": true
          },
          "email": {
            "kind": "email",
            "from": "full_name",
            "description": "The user's email address.",
            "nullable": true
          },
          "created_at": {
            "kind": "datetime",
            "from": "2020-01-01",
            "to": "2023-12-31",
            "description": "The date when the user registered.",
            "dayProfile": "waking"
          }
        }
      },
      "guides": {
        "description": "This table contains information about the customizable travel guides available for users.",
        "rows": 150,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for the guide."
          },
          "title": {
            "kind": "productName",
            "description": "The title of the travel guide.",
            "nullable": true
          },
          "destination": {
            "kind": "city",
            "description": "The destination the guide covers.",
            "nullable": true
          },
          "is_premium": {
            "kind": "bool",
            "trueRate": 0.3,
            "description": "Indicates if the guide is premium content.",
            "nullable": true
          },
          "created_at": {
            "kind": "datetime",
            "from": "2020-01-01",
            "to": "2023-12-31",
            "description": "The date when the guide was created.",
            "dayProfile": "waking"
          }
        }
      },
      "guide_sections": {
        "description": "Rows represent different sections within each guide, detailing the topics covered.",
        "rows": 600,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for the section."
          },
          "guide_id": {
            "kind": "fk",
            "ref": "guides.id",
            "description": "Foreign key linking to the guide."
          },
          "section_title": {
            "kind": "words",
            "min": 3,
            "max": 10,
            "description": "The title of the section within the guide.",
            "nullable": true
          },
          "content": {
            "kind": "paragraph",
            "min": 50,
            "max": 300,
            "description": "Detailed information or tips in the section.",
            "nullable": true
          }
        }
      },
      "user_guide_interactions": {
        "description": "Tracks interactions of users with the guides, such as downloads and favorites.",
        "rows": 400,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for the interaction."
          },
          "user_id": {
            "kind": "fk",
            "ref": "users.id",
            "description": "Foreign key linking to the user."
          },
          "guide_id": {
            "kind": "fk",
            "ref": "guides.id",
            "description": "Foreign key linking to the guide."
          },
          "interaction_type": {
            "kind": "enum",
            "values": [
              "downloaded",
              "favorited"
            ],
            "description": "Type of interaction with the guide."
          },
          "created_at": {
            "kind": "datetime",
            "from": "2020-01-01",
            "to": "2023-12-31",
            "description": "Timestamp of the interaction.",
            "nullable": true,
            "when": {
              "column": "interaction_type",
              "in": [
                "downloaded",
                "favorited"
              ]
            },
            "dayProfile": "waking",
            "trend": "growing"
          }
        }
      },
      "guide_purchases": {
        "description": "Contains information on purchases made by users for premium guides.",
        "rows": 100,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for the purchase."
          },
          "user_id": {
            "kind": "fk",
            "ref": "users.id",
            "description": "Foreign key linking to the user."
          },
          "guide_id": {
            "kind": "fk",
            "ref": "guides.id",
            "description": "Foreign key linking to the guide."
          },
          "purchase_date": {
            "kind": "datetime",
            "from": "2020-01-01",
            "to": "2023-12-31",
            "description": "The date when the premium guide was purchased.",
            "trend": "seasonal"
          },
          "amount": {
            "kind": "decimal",
            "min": 5,
            "max": 50,
            "scale": 2,
            "description": "Amount paid for the premium guide.",
            "nullable": true
          }
        }
      }
    },
    "structure": "multi-table",
    "traits": [
      "categorical",
      "nullable",
      "timestamped"
    ],
    "analysisQuestions": [
      "What are the most popular destinations among users?",
      "Which sections of the guides receive the most interactions?",
      "How does the purchase behavior differ between premium and non-premium guides?",
      "What is the average time between a user downloading a guide and making a purchase?",
      "Which user demographics lead to higher engagement with travel guides?"
    ],
    "suggestedQueries": [
      {
        "title": "Join Users and Guide Interactions",
        "sql": "SELECT u.full_name, u.email, u.created_at, ugi.interaction_type FROM users u JOIN user_guide_interactions ugi ON u.id = ugi.user_id;",
        "dialect": "postgres"
      },
      {
        "title": "Count Downloads per Guide",
        "sql": "SELECT g.title, COUNT(ugi.id) AS download_count FROM guides g LEFT JOIN user_guide_interactions ugi ON g.id = ugi.guide_id WHERE ugi.interaction_type = 'downloaded' GROUP BY g.id;",
        "dialect": "postgres"
      },
      {
        "title": "Average Purchase Amount for Premium Guides",
        "sql": "SELECT AVG(gp.amount) AS avg_premium_purchase FROM guide_purchases gp JOIN guides g ON gp.guide_id = g.id WHERE g.is_premium = TRUE;",
        "dialect": "postgres"
      },
      {
        "title": "Daily Interactions Over Time",
        "sql": "SELECT DATE(ugi.created_at) AS interaction_date, COUNT(*) AS interaction_count FROM user_guide_interactions ugi GROUP BY interaction_date ORDER BY interaction_date;",
        "dialect": "postgres"
      },
      {
        "title": "User Engagement Trends",
        "sql": "SELECT u.id, COUNT(ugi.id) AS total_interactions, COUNT(gp.id) AS total_purchases FROM users u LEFT JOIN user_guide_interactions ugi ON u.id = ugi.user_id LEFT JOIN guide_purchases gp ON u.id = gp.user_id GROUP BY u.id;",
        "dialect": "postgres"
      }
    ],
    "usageScenarios": [
      {
        "title": "Travel App Development",
        "body": "Developers building a travel app can utilize this dataset to seed their database with realistic user and guide data, ensuring the app's functionality aligns with common user interactions, like downloading guides or making purchases."
      },
      {
        "title": "Analytics for Travel Guides",
        "body": "Data analysts can explore this dataset to identify key trends in travel guide usage, which can inform marketing strategies, guide content creation, and user engagement efforts based on popular destinations and sections."
      },
      {
        "title": "Educational Purposes",
        "body": "Educators can use this dataset in teaching scenarios, allowing students to practice SQL queries and ORM concepts within a context that simulates real-world data, enhancing their understanding of database interactions."
      },
      {
        "title": "User Engagement Analysis",
        "body": "Marketing teams can analyze user engagement with guides to optimize promotional efforts. By understanding which guides are downloaded or purchased, they can tailor campaigns to target specific user segments more effectively."
      }
    ]
  },
  "counts": {
    "guides": 150,
    "guide_sections": 600,
    "users": 200,
    "guide_purchases": 100,
    "user_guide_interactions": 400
  },
  "stats": {
    "users": {
      "rows": 200,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 200,
          "min": 1,
          "max": 200
        },
        "full_name": {
          "nulls": 15,
          "distinct": 183,
          "min": "Ana Ahmed",
          "max": "Zara Silva"
        },
        "email": {
          "nulls": 33,
          "distinct": 167
        },
        "created_at": {
          "nulls": 0,
          "distinct": 200,
          "min": "2020-01-07 14:49:14",
          "max": "2023-12-26 18:57:28"
        }
      }
    },
    "guides": {
      "rows": 150,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 150,
          "min": 1,
          "max": 150
        },
        "title": {
          "nulls": 24,
          "distinct": 104,
          "min": "Classic Bottle",
          "max": "Wireless Speaker"
        },
        "destination": {
          "nulls": 13,
          "distinct": 59,
          "min": "Amsterdam",
          "max": "Zurich"
        },
        "is_premium": {
          "nulls": 11,
          "distinct": 2,
          "min": "false",
          "max": "true"
        },
        "created_at": {
          "nulls": 0,
          "distinct": 150,
          "min": "2020-01-04 15:29:54",
          "max": "2023-12-21 14:41:03"
        }
      }
    },
    "guide_sections": {
      "rows": 600,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 600,
          "min": 1,
          "max": 600
        },
        "guide_id": {
          "nulls": 0,
          "distinct": 147,
          "min": 1,
          "max": 150
        },
        "section_title": {
          "nulls": 65,
          "distinct": 535
        },
        "content": {
          "nulls": 65,
          "distinct": 535
        }
      }
    },
    "user_guide_interactions": {
      "rows": 400,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 400,
          "min": 1,
          "max": 400
        },
        "user_id": {
          "nulls": 0,
          "distinct": 173,
          "min": 1,
          "max": 200
        },
        "guide_id": {
          "nulls": 0,
          "distinct": 140,
          "min": 1,
          "max": 150
        },
        "interaction_type": {
          "nulls": 0,
          "distinct": 2,
          "min": "downloaded",
          "max": "favorited"
        },
        "created_at": {
          "nulls": 0,
          "distinct": 400,
          "min": "2020-01-11 10:18:28",
          "max": "2023-12-31 15:32:45"
        }
      }
    },
    "guide_purchases": {
      "rows": 100,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 100,
          "min": 1,
          "max": 100
        },
        "user_id": {
          "nulls": 0,
          "distinct": 81,
          "min": 1,
          "max": 199
        },
        "guide_id": {
          "nulls": 0,
          "distinct": 64,
          "min": 1,
          "max": 150
        },
        "purchase_date": {
          "nulls": 0,
          "distinct": 100,
          "min": "2020-01-06 12:59:51",
          "max": "2023-12-12 19:11:24"
        },
        "amount": {
          "nulls": 6,
          "distinct": 91,
          "min": 5.31,
          "max": 49.21
        }
      }
    }
  },
  "artifacts": [
    {
      "file": "csv/guides.csv",
      "format": "csv",
      "table": "guides",
      "key": "datasets/customizable-travel-guides-app/v1/csv/guides.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/customizable-travel-guides-app/v1/csv/guides.csv",
      "bytes": 7517,
      "sha256": "dca4303a978a910a31a2b3b69770b1dfd5d275423d912bbb568c9be1cf5e620b",
      "rows": 150,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/guide_sections.csv",
      "format": "csv",
      "table": "guide_sections",
      "key": "datasets/customizable-travel-guides-app/v1/csv/guide_sections.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/customizable-travel-guides-app/v1/csv/guide_sections.csv",
      "bytes": 120082,
      "sha256": "c50a72e339792f5d936033774279085bc2a11d0c015714df55fe5b20f03fb10e",
      "rows": 600,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/users.csv",
      "format": "csv",
      "table": "users",
      "key": "datasets/customizable-travel-guides-app/v1/csv/users.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/customizable-travel-guides-app/v1/csv/users.csv",
      "bytes": 11184,
      "sha256": "85de9fe3becf868edc527934b9eaf16de0001368e2f041091721d7450651bb6b",
      "rows": 200,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/guide_purchases.csv",
      "format": "csv",
      "table": "guide_purchases",
      "key": "datasets/customizable-travel-guides-app/v1/csv/guide_purchases.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/customizable-travel-guides-app/v1/csv/guide_purchases.csv",
      "bytes": 3655,
      "sha256": "191112f71d1c1ba4cfbebab66a33709930789060ea78426dbbf1dfe788231d94",
      "rows": 100,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/user_guide_interactions.csv",
      "format": "csv",
      "table": "user_guide_interactions",
      "key": "datasets/customizable-travel-guides-app/v1/csv/user_guide_interactions.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/customizable-travel-guides-app/v1/csv/user_guide_interactions.csv",
      "bytes": 16849,
      "sha256": "99c27b268a4108a41f6cf25bc621c7b51658cfedd5e4f8cba6f0314d68c92fdb",
      "rows": 400,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "customizable-travel-guides-app.json",
      "format": "json",
      "table": null,
      "key": "datasets/customizable-travel-guides-app/v1/customizable-travel-guides-app.json",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/customizable-travel-guides-app/v1/customizable-travel-guides-app.json",
      "bytes": 302071,
      "sha256": "a8bd3a74398b36dd89ff04d54217b147744b9c35f408997a86b55a0e8da5abfd",
      "rows": null,
      "contentType": "application/json; charset=utf-8"
    },
    {
      "file": "sql/postgres.sql",
      "format": "sql-postgres",
      "table": null,
      "key": "datasets/customizable-travel-guides-app/v1/sql/postgres.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/customizable-travel-guides-app/v1/sql/postgres.sql",
      "bytes": 182324,
      "sha256": "94b098e851605673cebb95d35a2ac20a5154bea230b0fa35cc2aaa27f863629b",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/mysql.sql",
      "format": "sql-mysql",
      "table": null,
      "key": "datasets/customizable-travel-guides-app/v1/sql/mysql.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/customizable-travel-guides-app/v1/sql/mysql.sql",
      "bytes": 181220,
      "sha256": "d0191d1ae263f5ea6552950031339f9c389a157a45b575ea4e68b1a5548c2e9d",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/mssql.sql",
      "format": "sql-mssql",
      "table": null,
      "key": "datasets/customizable-travel-guides-app/v1/sql/mssql.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/customizable-travel-guides-app/v1/sql/mssql.sql",
      "bytes": 184518,
      "sha256": "51f710c8175ec8e54e3570c1d6f718d9503623f41f6eebd9050648265938c67e",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/sqlite.sql",
      "format": "sql-sqlite",
      "table": null,
      "key": "datasets/customizable-travel-guides-app/v1/sql/sqlite.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/customizable-travel-guides-app/v1/sql/sqlite.sql",
      "bytes": 180901,
      "sha256": "1d42b769e91ef0d4fe773f32597112d70f22dc13a54052659385e081bcdb7784",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "prisma/seed.ts",
      "format": "prisma-seed",
      "table": null,
      "key": "datasets/customizable-travel-guides-app/v1/prisma/seed.ts",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/customizable-travel-guides-app/v1/prisma/seed.ts",
      "bytes": 266836,
      "sha256": "840a2552f66e58406c962bd1ba063b4583158616efaebe61d340634cfc3e5a9d",
      "rows": null,
      "contentType": "application/typescript; charset=utf-8"
    },
    {
      "file": "django/fixtures.json",
      "format": "django-fixture",
      "table": null,
      "key": "datasets/customizable-travel-guides-app/v1/django/fixtures.json",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/customizable-travel-guides-app/v1/django/fixtures.json",
      "bytes": 369799,
      "sha256": "00088350316b3db423bcf22f5587f32794a28491723189fca6b9cb5454d3d071",
      "rows": null,
      "contentType": "application/json; charset=utf-8"
    }
  ],
  "publishedAt": 1788767313021,
  "updatedAt": 1788767313021
}
