140 lines
5.8 KiB
Python
140 lines
5.8 KiB
Python
# Sunday Comics - Comic data configuration
|
|
# Copyright (c) 2025 Tomasita Cabrera
|
|
# Licensed under the MIT License - see LICENSE file for details
|
|
#
|
|
# Edit this file to add, remove, or modify comics
|
|
|
|
# Global setting: The name of your comic/website
|
|
COMIC_NAME = 'Sunday Comics'
|
|
|
|
# Global setting: The name to display in the copyright notice
|
|
# If not set (None), defaults to COMIC_NAME
|
|
COPYRIGHT_NAME = None # e.g., 'Your Name' or 'Your Studio Name'
|
|
|
|
# Global setting: Your website's domain (used for RSS feed, Open Graph tags, etc.)
|
|
# Update this to your production domain when deploying
|
|
SITE_URL = 'http://localhost:3000'
|
|
|
|
# Global setting: CDN URL for static assets (set to None to use local assets)
|
|
# When set, all static assets will be served from this CDN
|
|
# Example: CDN_URL = 'https://cdn.example.com' (no trailing slash)
|
|
# Leave as None for local development or if not using a CDN
|
|
CDN_URL = None
|
|
|
|
# Global setting: Set to True to make all comics full-width by default
|
|
# Individual comics can override this with 'full_width': False
|
|
FULL_WIDTH_DEFAULT = False
|
|
|
|
# Global setting: Set to True to hide header and remove nav border by default
|
|
# Individual comics can override this with 'plain': False
|
|
PLAIN_DEFAULT = False
|
|
|
|
# Global setting: Path to site logo (relative to static/images/)
|
|
# Set to None to disable logo
|
|
# Example: LOGO_IMAGE = 'logo.png' will use static/images/logo.png
|
|
LOGO_IMAGE = 'logo.png'
|
|
|
|
# Global setting: Logo display mode
|
|
# 'beside' - Display logo next to the site title
|
|
# 'replace' - Replace the site title with the logo
|
|
# Only applies when LOGO_IMAGE is set
|
|
LOGO_MODE = 'beside'
|
|
|
|
# Global setting: Path to header image (relative to static/images/)
|
|
# Set to None to disable header image
|
|
# Example: HEADER_IMAGE = 'title.jpg' will use static/images/title.jpg
|
|
HEADER_IMAGE = None
|
|
|
|
# Global setting: Path to footer image (relative to static/images/)
|
|
# Set to None to disable footer image
|
|
# Example: FOOTER_IMAGE = 'footer.jpg' will use static/images/footer.jpg
|
|
FOOTER_IMAGE = None
|
|
|
|
# Global setting: Path to shareable banner image (relative to static/images/)
|
|
# Set to None to disable "Link to Us" section in footer
|
|
# Example: BANNER_IMAGE = 'banner.jpg' will use static/images/banner.jpg
|
|
BANNER_IMAGE = 'banner.jpg'
|
|
|
|
# Global setting: Set to True to display footer in compact mode
|
|
# Compact mode: single line, no border, horizontal layout
|
|
COMPACT_FOOTER = False
|
|
|
|
# Global setting: Set to True to make archive page full-width with 4 columns (2 on mobile)
|
|
# Full-width archive shows square thumbnails with only dates, no titles
|
|
ARCHIVE_FULL_WIDTH = True
|
|
|
|
# Global setting: Set to True to enable sections/chapters on the archive page
|
|
# Add 'section': 'Chapter Title' to comics where a new section starts
|
|
SECTIONS_ENABLED = True
|
|
|
|
# Global setting: Set to True to use icon images for comic navigation buttons
|
|
# Icons should be in static/images/icons/ (first.png, previous.png, next.png, latest.png)
|
|
USE_COMIC_NAV_ICONS = True
|
|
|
|
# Global setting: Set to True to show icons next to main header navigation text
|
|
# Uses alert.png for Latest, archive.png for Archive, info.png for About
|
|
USE_HEADER_NAV_ICONS = True
|
|
|
|
# Global setting: Set to True to use icons instead of text for footer social links
|
|
# Uses instagram.png, youtube.png, and mail.png from static/images/icons/
|
|
USE_FOOTER_SOCIAL_ICONS = True
|
|
|
|
# Global setting: Set to True to show icons in share buttons (permalink and embed)
|
|
# Uses link.png for permalink and embed.png for embed from static/images/icons/
|
|
USE_SHARE_ICONS = True
|
|
|
|
# Global setting: Set to True to show newsletter section in footer
|
|
NEWSLETTER_ENABLED = False
|
|
|
|
# Global setting: Custom HTML for newsletter form (only used if NEWSLETTER_ENABLED is True)
|
|
# Paste your newsletter service's form HTML here (Mailchimp, ConvertKit, Buttondown, etc.)
|
|
# Example:
|
|
# NEWSLETTER_HTML = '''
|
|
# <form action="https://yourservice.com/subscribe" method="post" class="newsletter-form">
|
|
# <input type="email" name="email" placeholder="Enter your email" required>
|
|
# <button type="submit">Subscribe</button>
|
|
# </form>
|
|
# '''
|
|
NEWSLETTER_HTML = '<p class="newsletter-placeholder">Newsletter coming soon!</p>'
|
|
|
|
# Social media links - add/remove/reorder as needed
|
|
# Each link should have 'label', 'url', and optionally 'icon' (filename in static/images/icons/)
|
|
# Set to empty list [] to show no social links
|
|
SOCIAL_LINKS = [
|
|
# Example links (uncomment and customize):
|
|
# {'label': 'Instagram', 'url': 'https://instagram.com/yourhandle', 'icon': 'instagram.png'},
|
|
# {'label': 'YouTube', 'url': 'https://youtube.com/@yourchannel', 'icon': 'youtube.png'},
|
|
# {'label': 'Email', 'url': 'mailto:your@email.com', 'icon': 'mail.png'},
|
|
# {'label': 'Bluesky', 'url': 'https://bsky.app/profile/yourhandle', 'icon': 'bluesky.png'},
|
|
# {'label': 'Patreon', 'url': 'https://patreon.com/yourname', 'icon': 'patreon.png'},
|
|
# {'label': 'Ko-fi', 'url': 'https://ko-fi.com/yourname', 'icon': 'kofi.png'},
|
|
# {'label': 'Mastodon', 'url': 'https://mastodon.social/@yourhandle', 'icon': 'mastodon.png'},
|
|
]
|
|
|
|
# API documentation link - set to None to hide the link
|
|
# Path is relative to static/ directory
|
|
API_SPEC_LINK = None # Set to 'openapi.yml' to enable
|
|
|
|
# Global setting: Set to True to enable comic embed functionality
|
|
# When enabled, users can get embed codes to display comics on other websites
|
|
EMBED_ENABLED = True
|
|
|
|
# Global setting: Set to True to enable permalink copy button
|
|
# When enabled, users can easily copy a direct link to the current comic
|
|
PERMALINK_ENABLED = True
|
|
|
|
# Load comics from YAML files
|
|
from data_loader import load_comics_from_yaml, validate_comics
|
|
|
|
COMICS = load_comics_from_yaml('data/comics')
|
|
|
|
# Validate loaded comics
|
|
if not validate_comics(COMICS):
|
|
print("Warning: Comic validation failed. Please check your YAML files.")
|
|
|
|
# Show loaded comics count
|
|
if COMICS:
|
|
print(f"Loaded {len(COMICS)} comics from data/comics/")
|
|
else:
|
|
print("Warning: No comics loaded! Please add .yaml files to data/comics/")
|