{
  "format": "dataset-manifest/1",
  "slug": "book-club-and-reading-tracker-app",
  "version": 2,
  "seed": "book-club-and-reading-tracker-app:1",
  "spec": {
    "format": "dataset/1",
    "slug": "book-club-and-reading-tracker-app",
    "name": "Literary Engagement Tracker",
    "tagline": "Members' reading logs, book ratings, club meeting interactions, and voting data from a literature-loving community.",
    "description": "The Literary Engagement Tracker is a synthetic dataset designed to model the interactions and reading habits of a community of book lovers. This dataset features five interconnected tables that represent the various dimensions of literary engagement, including members, books, reading logs, club meetings, and votes for future reads. Each table captures specific attributes, allowing for detailed analysis of reading trends, preferences, and member participation over time.\n\nThe members table records individual user profiles, while the books table catalogs different titles along with their authors and genres. The reading logs table tracks the progress of members as they read and rate books, providing insights into their habits. Club meetings represent the gatherings where discussions and interactions take place, while the votes table captures the democratic process of selecting future reads.\n\nThis dataset enables users to explore questions such as which genres are most popular, how member engagement varies over time, and what factors influence book ratings. It is ideal for practicing data analytics skills, building BI dashboards, or developing applications focused on reading communities. The data is synthetic, ensuring that it reflects realistic scenarios without compromising any privacy concerns.",
    "domain": "saas",
    "shape": "time-series",
    "useCases": [
      "analytics-demo",
      "bi-dashboards"
    ],
    "keywords": [
      "reading habits",
      "book ratings",
      "club meetings",
      "member engagement",
      "literature preferences"
    ],
    "locale": "en",
    "license": "CC0-1.0",
    "version": 1,
    "tables": {
      "members": {
        "description": "This table represents individual members of the book club, capturing their profiles and engagement metrics.",
        "rows": 200,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each member."
          },
          "full_name": {
            "kind": "fullName",
            "description": "The full name of the member.",
            "nullable": true
          },
          "join_date": {
            "kind": "date",
            "from": "2020-01-01",
            "to": "2023-12-31",
            "description": "The date when the member joined the book club.",
            "nullable": true,
            "when": {
              "column": "membership_status",
              "in": [
                "inactive",
                "suspended"
              ]
            }
          },
          "membership_status": {
            "kind": "enum",
            "values": [
              "active",
              "inactive",
              "suspended"
            ],
            "description": "The current status of the member's membership."
          }
        }
      },
      "books": {
        "description": "This table catalogs books available in the club, including their authors and genres.",
        "rows": 150,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each book."
          },
          "title": {
            "kind": "words",
            "min": 1,
            "max": 3,
            "description": "The title of the book.",
            "pool": [
              "whisper",
              "shadow",
              "dream",
              "journey",
              "echo",
              "light",
              "tale",
              "heart",
              "storm",
              "river",
              "song",
              "night",
              "fable",
              "quest",
              "fire",
              "memory",
              "dance",
              "world",
              "secret",
              "path",
              "vision"
            ]
          },
          "author": {
            "kind": "words",
            "min": 1,
            "max": 2,
            "description": "The author of the book.",
            "nullable": true,
            "when": {
              "column": "genre",
              "in": [
                "fiction",
                "non-fiction"
              ]
            },
            "pool": [
              "smith",
              "johnson",
              "williams",
              "brown",
              "jones",
              "miller",
              "davis",
              "garcia",
              "rodriguez",
              "martinez",
              "hernandez",
              "lopez",
              "gonzalez",
              "wilson",
              "anderson",
              "thomas",
              "taylor",
              "moore",
              "jackson",
              "martin"
            ]
          },
          "genre": {
            "kind": "enum",
            "values": [
              "fiction",
              "non-fiction",
              "mystery",
              "fantasy",
              "biography"
            ],
            "description": "The genre of the book."
          },
          "published_year": {
            "kind": "int",
            "min": 1900,
            "max": 2023,
            "description": "The year the book was published.",
            "nullable": true
          }
        }
      },
      "reading_logs": {
        "description": "This table tracks the reading progress of members for different books.",
        "rows": {
          "per": "members",
          "via": "member_id",
          "min": 1,
          "max": 5,
          "skew": "long-tail"
        },
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each reading log entry."
          },
          "member_id": {
            "kind": "fk",
            "ref": "members.id",
            "description": "Reference to the member who logged the reading."
          },
          "book_id": {
            "kind": "fk",
            "ref": "books.id",
            "description": "Reference to the book being read."
          },
          "start_date": {
            "kind": "date",
            "from": "2020-01-01",
            "to": "2023-12-31",
            "description": "The date when reading started."
          },
          "end_date": {
            "kind": "date",
            "after": "start_date",
            "withinDays": 90,
            "description": "The date when reading finished."
          },
          "rating": {
            "kind": "int",
            "min": 1,
            "max": 5,
            "description": "Rating given to the book by the member.",
            "distribution": "high"
          }
        }
      },
      "club_meetings": {
        "description": "This table captures details of club meetings, including attendance and topics discussed.",
        "rows": 50,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each meeting."
          },
          "meeting_date": {
            "kind": "date",
            "from": "2020-01-01",
            "to": "2023-12-31",
            "description": "The date of the club meeting."
          },
          "topic": {
            "kind": "words",
            "min": 1,
            "max": 4,
            "description": "The main topic discussed during the meeting.",
            "nullable": true,
            "pool": [
              "literature",
              "discussion",
              "analysis",
              "theory",
              "genre",
              "character",
              "plot",
              "style",
              "theme",
              "context",
              "narrative",
              "perspective",
              "critique",
              "symbolism",
              "motif",
              "setting",
              "dialogue",
              "conflict",
              "resolution",
              "influence"
            ]
          },
          "attended_members": {
            "kind": "int",
            "min": 5,
            "max": 30,
            "description": "Number of members who attended the meeting."
          }
        }
      },
      "votes": {
        "description": "This table records votes by members for the selection of future reading titles.",
        "rows": {
          "per": "members",
          "via": "member_id",
          "min": 1,
          "max": 3,
          "skew": "long-tail"
        },
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each vote entry."
          },
          "member_id": {
            "kind": "fk",
            "ref": "members.id",
            "description": "Reference to the member who voted."
          },
          "book_id": {
            "kind": "fk",
            "ref": "books.id",
            "description": "Reference to the book being voted for."
          },
          "vote_date": {
            "kind": "date",
            "from": "2020-01-01",
            "to": "2023-12-31",
            "description": "The date when the vote was cast.",
            "trend": "seasonal"
          }
        }
      }
    },
    "structure": "multi-table",
    "traits": [
      "timestamped",
      "categorical",
      "nullable"
    ],
    "analysisQuestions": [
      "What are the top-rated genres among club members?",
      "How do reading habits change over different seasons?",
      "What is the average attendance for club meetings?",
      "Which books received the most votes for future reading?",
      "How does membership status correlate with reading frequency?"
    ],
    "suggestedQueries": [
      {
        "title": "Join Members with Reading Logs",
        "sql": "SELECT m.full_name, r.rating FROM members m JOIN reading_logs r ON m.id = r.member_id;",
        "dialect": "postgres"
      },
      {
        "title": "Average Rating per Genre",
        "sql": "SELECT b.genre, AVG(r.rating) AS average_rating FROM reading_logs r JOIN books b ON r.book_id = b.id GROUP BY b.genre;",
        "dialect": "postgres"
      },
      {
        "title": "Count of Meetings by Year",
        "sql": "SELECT EXTRACT(YEAR FROM meeting_date) AS year, COUNT(*) AS meeting_count FROM club_meetings GROUP BY year;",
        "dialect": "postgres"
      },
      {
        "title": "Vote Trends Over Time",
        "sql": "SELECT EXTRACT(MONTH FROM vote_date) AS month, COUNT(*) AS votes FROM votes GROUP BY month ORDER BY month;",
        "dialect": "postgres"
      }
    ],
    "usageScenarios": [
      {
        "title": "Data Analysis for Book Clubs",
        "body": "Book club organizers can use this dataset to analyze engagement patterns among members, helping them tailor discussions and select future reads that resonate with the group. By examining reading logs and club meeting attendance, they can identify which genres or formats spark the most interest."
      },
      {
        "title": "Academic Research on Reading Trends",
        "body": "Researchers interested in the evolution of reading habits can leverage this dataset to study how book preferences vary among different demographics. By analyzing the ratings and votes, they can draw conclusions about the impact of social interactions on reading choices."
      },
      {
        "title": "Business Intelligence Applications",
        "body": "Developers building BI dashboards for literary platforms can utilize this dataset to create visualizations showcasing member engagement, reading trends, and popular titles. The structured data allows for detailed analysis and reporting, enhancing the user experience."
      },
      {
        "title": "Enhancing Community Engagement",
        "body": "Community managers can use insights gleaned from this dataset to foster greater interaction among members. Understanding which books are frequently read and discussed can help in organizing events that align with member interests, thereby increasing overall engagement."
      }
    ]
  },
  "counts": {
    "books": 150,
    "club_meetings": 50,
    "members": 200,
    "reading_logs": 434,
    "votes": 320
  },
  "stats": {
    "members": {
      "rows": 200,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 200,
          "min": 1,
          "max": 200
        },
        "full_name": {
          "nulls": 24,
          "distinct": 173,
          "min": "Alice Reyes",
          "max": "Zoe Sato"
        },
        "join_date": {
          "nulls": 63,
          "distinct": 129,
          "min": "2020-01-01",
          "max": "2023-12-22"
        },
        "membership_status": {
          "nulls": 0,
          "distinct": 3,
          "min": "active",
          "max": "suspended"
        }
      }
    },
    "books": {
      "rows": 150,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 150,
          "min": 1,
          "max": 150
        },
        "title": {
          "nulls": 0,
          "distinct": 126
        },
        "author": {
          "nulls": 85,
          "distinct": 51
        },
        "genre": {
          "nulls": 0,
          "distinct": 5,
          "min": "biography",
          "max": "non-fiction"
        },
        "published_year": {
          "nulls": 21,
          "distinct": 80,
          "min": 1901,
          "max": 2023
        }
      }
    },
    "reading_logs": {
      "rows": 434,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 434,
          "min": 1,
          "max": 434
        },
        "member_id": {
          "nulls": 0,
          "distinct": 200,
          "min": 1,
          "max": 200
        },
        "book_id": {
          "nulls": 0,
          "distinct": 138,
          "min": 1,
          "max": 150
        },
        "start_date": {
          "nulls": 0,
          "distinct": 371,
          "min": "2020-01-01",
          "max": "2023-12-30"
        },
        "end_date": {
          "nulls": 0,
          "distinct": 382,
          "min": "2020-01-10",
          "max": "2024-03-11"
        },
        "rating": {
          "nulls": 0,
          "distinct": 5,
          "min": 1,
          "max": 5
        }
      }
    },
    "club_meetings": {
      "rows": 50,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 50,
          "min": 1,
          "max": 50
        },
        "meeting_date": {
          "nulls": 0,
          "distinct": 50,
          "min": "2020-01-18",
          "max": "2023-10-17"
        },
        "topic": {
          "nulls": 2,
          "distinct": 42
        },
        "attended_members": {
          "nulls": 0,
          "distinct": 24,
          "min": 5,
          "max": 30
        }
      }
    },
    "votes": {
      "rows": 320,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 320,
          "min": 1,
          "max": 320
        },
        "member_id": {
          "nulls": 0,
          "distinct": 200,
          "min": 1,
          "max": 200
        },
        "book_id": {
          "nulls": 0,
          "distinct": 134,
          "min": 1,
          "max": 150
        },
        "vote_date": {
          "nulls": 0,
          "distinct": 281,
          "min": "2020-01-01",
          "max": "2023-12-27"
        }
      }
    }
  },
  "artifacts": [
    {
      "file": "csv/books.csv",
      "format": "csv",
      "table": "books",
      "key": "datasets/book-club-and-reading-tracker-app/v2/csv/books.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/book-club-and-reading-tracker-app/v2/csv/books.csv",
      "bytes": 5499,
      "sha256": "cd59a83d8fff94b95a62545a11e115fbfda711fdf07d6f89d90d775e718fc59f",
      "rows": 150,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/club_meetings.csv",
      "format": "csv",
      "table": "club_meetings",
      "key": "datasets/book-club-and-reading-tracker-app/v2/csv/club_meetings.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/book-club-and-reading-tracker-app/v2/csv/club_meetings.csv",
      "bytes": 1891,
      "sha256": "0b51d10a91cc49f4914c1aec2797d6b8a35a3667b954e7b85bdb2091537e2deb",
      "rows": 50,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/members.csv",
      "format": "csv",
      "table": "members",
      "key": "datasets/book-club-and-reading-tracker-app/v2/csv/members.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/book-club-and-reading-tracker-app/v2/csv/members.csv",
      "bytes": 6354,
      "sha256": "48257ec69d686152477f8ff22655da43b962842359e4ee6c8c1a43207d7831e0",
      "rows": 200,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/reading_logs.csv",
      "format": "csv",
      "table": "reading_logs",
      "key": "datasets/book-club-and-reading-tracker-app/v2/csv/reading_logs.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/book-club-and-reading-tracker-app/v2/csv/reading_logs.csv",
      "bytes": 15474,
      "sha256": "298940b3780f2755f3f21f6484a29d4dc94663451e49edf8617b58a6e55502f2",
      "rows": 434,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/votes.csv",
      "format": "csv",
      "table": "votes",
      "key": "datasets/book-club-and-reading-tracker-app/v2/csv/votes.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/book-club-and-reading-tracker-app/v2/csv/votes.csv",
      "bytes": 7201,
      "sha256": "9d780fe5839680d156ed2e7749842f2674758a616324864b35f29aaca95e9030",
      "rows": 320,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "book-club-and-reading-tracker-app.json",
      "format": "json",
      "table": null,
      "key": "datasets/book-club-and-reading-tracker-app/v2/book-club-and-reading-tracker-app.json",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/book-club-and-reading-tracker-app/v2/book-club-and-reading-tracker-app.json",
      "bytes": 156917,
      "sha256": "62e2b45339788b0388ba0490afddeed2dd8e2e56d1da346e11d780932064500c",
      "rows": null,
      "contentType": "application/json; charset=utf-8"
    },
    {
      "file": "sql/postgres.sql",
      "format": "sql-postgres",
      "table": null,
      "key": "datasets/book-club-and-reading-tracker-app/v2/sql/postgres.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/book-club-and-reading-tracker-app/v2/sql/postgres.sql",
      "bytes": 55725,
      "sha256": "ba82d57a8ac91d0cc564d9771af02164352af89b292becc0eadf176b0d7bd815",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/mysql.sql",
      "format": "sql-mysql",
      "table": null,
      "key": "datasets/book-club-and-reading-tracker-app/v2/sql/mysql.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/book-club-and-reading-tracker-app/v2/sql/mysql.sql",
      "bytes": 55162,
      "sha256": "305948b1ec0559ad0de9d8aac848f8b091d702981df27a313cb1dbcbf55119c2",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/mssql.sql",
      "format": "sql-mssql",
      "table": null,
      "key": "datasets/book-club-and-reading-tracker-app/v2/sql/mssql.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/book-club-and-reading-tracker-app/v2/sql/mssql.sql",
      "bytes": 57641,
      "sha256": "a13bf7bdf3ef2e93e016faa5117f029b93c407d359253b943f5b24a6a8189b77",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/sqlite.sql",
      "format": "sql-sqlite",
      "table": null,
      "key": "datasets/book-club-and-reading-tracker-app/v2/sql/sqlite.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/book-club-and-reading-tracker-app/v2/sql/sqlite.sql",
      "bytes": 54994,
      "sha256": "e5267676bac9f6d35f663408aaca420e60d393e515828459d50301cf3fe70526",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "prisma/seed.ts",
      "format": "prisma-seed",
      "table": null,
      "key": "datasets/book-club-and-reading-tracker-app/v2/prisma/seed.ts",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/book-club-and-reading-tracker-app/v2/prisma/seed.ts",
      "bytes": 117403,
      "sha256": "c54a51b8733131dbc17fecb9a377e76573396f7ea34e9ed102b9177c0c7afd07",
      "rows": null,
      "contentType": "application/typescript; charset=utf-8"
    },
    {
      "file": "django/fixtures.json",
      "format": "django-fixture",
      "table": null,
      "key": "datasets/book-club-and-reading-tracker-app/v2/django/fixtures.json",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/book-club-and-reading-tracker-app/v2/django/fixtures.json",
      "bytes": 202959,
      "sha256": "eb225e39085f663b69ce649b0daaae3e46edfedaffae027289e70a9870af1dc5",
      "rows": null,
      "contentType": "application/json; charset=utf-8"
    }
  ],
  "publishedAt": 1788767959579,
  "updatedAt": 1788777669853
}
