{"slug":"fictbase","name":"FICTBASE","description":"Serialized fiction and web novel plugin for WordPress. Chapters, drip scheduling, reader bookmarks — self-hosted, no platform lock-in.","author":"fictbase09","active_installs":0,"version":"2.2.13","wp_org_url":"https://wordpress.org/plugins/fictbase/","is_closed":false,"cleanup":{"has_uninstall_hook":true,"drops_tables_on_uninstall":true,"deletes_options_on_uninstall":true},"tables":[{"table_name":"fictbase_bookmarks","full_table_name":"wp_fictbase_bookmarks","description":"Stores fictbase bookmarks data created by this plugin.","detection_method":"static","confidence":"medium","columns":[{"name":"id","type":"BIGINT UNSIGNED","nullable":false,"primary_key":true},{"name":"wp_user_id","type":"BIGINT UNSIGNED","nullable":false,"primary_key":false},{"name":"story_id","type":"BIGINT UNSIGNED","nullable":false,"primary_key":false},{"name":"chapter_id","type":"BIGINT UNSIGNED","nullable":false,"primary_key":false},{"name":"scroll_position","type":"TINYINT UNSIGNED","nullable":false,"primary_key":false},{"name":"created_at","type":"DATETIME","nullable":false,"primary_key":false},{"name":"updated_at","type":"DATETIME","nullable":false,"primary_key":false}],"create_sql":"CREATE TABLE wp_fictbase_bookmarks ( id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, wp_user_id BIGINT UNSIGNED NOT NULL, story_id BIGINT UNSIGNED NOT NULL, chapter_id BIGINT UNSIGNED NOT NULL, scroll_position TINYINT UNSIGNED NOT NULL DEFAULT 0, created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id), UNIQUE KEY user_story (wp_user_id, story_id), KEY chapter_id (chapter_id) ) $charset;\" );"},{"table_name":"fictbase_chapter_views","full_table_name":"wp_fictbase_chapter_views","description":"Stores fictbase chapter views data created by this plugin.","detection_method":"static","confidence":"medium","columns":[{"name":"id","type":"BIGINT UNSIGNED","nullable":false,"primary_key":true},{"name":"chapter_id","type":"BIGINT UNSIGNED","nullable":false,"primary_key":false},{"name":"ip_hash","type":"VARCHAR(64)","nullable":true,"primary_key":false},{"name":"wp_user_id","type":"BIGINT UNSIGNED","nullable":true,"primary_key":false},{"name":"viewed_at","type":"DATETIME","nullable":false,"primary_key":false}],"create_sql":"CREATE TABLE wp_fictbase_chapter_views ( id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, chapter_id BIGINT UNSIGNED NOT NULL, ip_hash VARCHAR(64) DEFAULT NULL, wp_user_id BIGINT UNSIGNED DEFAULT NULL, viewed_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id), KEY chapter_id (chapter_id) ) $charset;\" );"},{"table_name":"fictbase_chapters","full_table_name":"wp_fictbase_chapters","description":"Stores fictbase chapters data created by this plugin.","detection_method":"static","confidence":"medium","columns":[{"name":"id","type":"BIGINT UNSIGNED","nullable":false,"primary_key":true},{"name":"story_id","type":"BIGINT UNSIGNED","nullable":false,"primary_key":false},{"name":"title","type":"VARCHAR(255)","nullable":false,"primary_key":false},{"name":"slug","type":"VARCHAR(255)","nullable":false,"primary_key":false},{"name":"content","type":"LONGTEXT","nullable":true,"primary_key":false},{"name":"recap","type":"TEXT","nullable":true,"primary_key":false},{"name":"chapter_number","type":"INT UNSIGNED","nullable":false,"primary_key":false},{"name":"chapter_status","type":"VARCHAR(20)","nullable":false,"primary_key":false},{"name":"is_premium","type":"TINYINT(1)","nullable":false,"primary_key":false},{"name":"scheduled_at","type":"DATETIME","nullable":true,"primary_key":false},{"name":"published_at","type":"DATETIME","nullable":true,"primary_key":false},{"name":"word_count","type":"INT UNSIGNED","nullable":false,"primary_key":false},{"name":"created_at","type":"DATETIME","nullable":false,"primary_key":false},{"name":"updated_at","type":"DATETIME","nullable":false,"primary_key":false}],"create_sql":"CREATE TABLE wp_fictbase_chapters ( id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, story_id BIGINT UNSIGNED NOT NULL, title VARCHAR(255) NOT NULL, slug VARCHAR(255) NOT NULL, content LONGTEXT, recap TEXT DEFAULT NULL, chapter_number INT UNSIGNED NOT NULL DEFAULT 0, chapter_status VARCHAR(20) NOT NULL DEFAULT 'draft', is_premium TINYINT(1) NOT NULL DEFAULT 0, scheduled_at DATETIME DEFAULT NULL, published_at DATETIME DEFAULT NULL, word_count INT UNSIGNED NOT NULL DEFAULT 0, created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id), KEY story_id (story_id) ) $charset;\" );"},{"table_name":"fictbase_license","full_table_name":"wp_fictbase_license","description":"Stores fictbase license data created by this plugin.","detection_method":"static","confidence":"medium","columns":[{"name":"id","type":"BIGINT UNSIGNED","nullable":false,"primary_key":true},{"name":"license_key","type":"VARCHAR(64)","nullable":false,"primary_key":false},{"name":"license_status","type":"VARCHAR(20)","nullable":false,"primary_key":false},{"name":"plan","type":"VARCHAR(50)","nullable":false,"primary_key":false},{"name":"activated_at","type":"DATETIME","nullable":true,"primary_key":false},{"name":"expires_at","type":"DATETIME","nullable":true,"primary_key":false},{"name":"last_checked_at","type":"DATETIME","nullable":true,"primary_key":false},{"name":"created_at","type":"DATETIME","nullable":false,"primary_key":false}],"create_sql":"CREATE TABLE wp_fictbase_license ( id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, license_key VARCHAR(64) NOT NULL DEFAULT '', license_status VARCHAR(20) NOT NULL DEFAULT 'invalid', plan VARCHAR(50) NOT NULL DEFAULT 'pro', activated_at DATETIME DEFAULT NULL, expires_at DATETIME DEFAULT NULL, last_checked_at DATETIME DEFAULT NULL, created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id), UNIQUE KEY license_key (license_key) ) $charset;\" );"},{"table_name":"fictbase_stories","full_table_name":"wp_fictbase_stories","description":"Stores fictbase stories data created by this plugin.","detection_method":"static","confidence":"medium","columns":[{"name":"id","type":"BIGINT UNSIGNED","nullable":false,"primary_key":true},{"name":"wp_author_id","type":"BIGINT UNSIGNED","nullable":false,"primary_key":false},{"name":"title","type":"VARCHAR(255)","nullable":false,"primary_key":false},{"name":"slug","type":"VARCHAR(255)","nullable":false,"primary_key":false},{"name":"description","type":"TEXT","nullable":true,"primary_key":false},{"name":"cover_image_url","type":"VARCHAR(500)","nullable":true,"primary_key":false},{"name":"genre","type":"VARCHAR(100)","nullable":true,"primary_key":false},{"name":"story_status","type":"VARCHAR(20)","nullable":false,"primary_key":false},{"name":"created_at","type":"DATETIME","nullable":false,"primary_key":false},{"name":"updated_at","type":"DATETIME","nullable":false,"primary_key":false}],"create_sql":"CREATE TABLE wp_fictbase_stories ( id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, wp_author_id BIGINT UNSIGNED NOT NULL, title VARCHAR(255) NOT NULL, slug VARCHAR(255) NOT NULL, description TEXT, cover_image_url VARCHAR(500), genre VARCHAR(100), story_status VARCHAR(20) NOT NULL DEFAULT 'draft', created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id), UNIQUE KEY slug (slug) ) $charset;\" );"},{"table_name":"fictbase_subscribers","full_table_name":"wp_fictbase_subscribers","description":"Stores fictbase subscribers data created by this plugin.","detection_method":"static","confidence":"medium","columns":[{"name":"id","type":"BIGINT UNSIGNED","nullable":false,"primary_key":true},{"name":"story_id","type":"BIGINT UNSIGNED","nullable":false,"primary_key":false},{"name":"email","type":"VARCHAR(255)","nullable":false,"primary_key":false},{"name":"token","type":"VARCHAR(64)","nullable":false,"primary_key":false},{"name":"confirmed","type":"TINYINT(1)","nullable":false,"primary_key":false},{"name":"created_at","type":"DATETIME","nullable":false,"primary_key":false}],"create_sql":"CREATE TABLE wp_fictbase_subscribers ( id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, story_id BIGINT UNSIGNED NOT NULL, email VARCHAR(255) NOT NULL, token VARCHAR(64) NOT NULL DEFAULT '', confirmed TINYINT(1) NOT NULL DEFAULT 1, created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id), UNIQUE KEY story_email (story_id, email), KEY story_id (story_id) ) $charset;\" );"}],"table_count":6}