Reworked service configuration to allow individual services to be conditionally excluded from the main index, increasing the flexibility of the display. Configuration files have been restructured and moved into appropriate subdirectories to improve project organization.
- Added `exclude_from_index` flags to all services within `services.json` to facilitate granular control over their visibility on the index page.
- Modified the `index.html` template to respect the new `exclude_from_index` setting, thus excluding specified services from being listed on the index page.
- Migrated `Caddyfile` and `privatecoffee.ini` to `contrib` directory for better separation of project contributions and core configuration files.
This update enhances the site's privacy features and enables easier navigation by allowing selective service display.
Implemented a shared base HTML template to DRY up the markup across the service’s various pages, including the index, legal, privacy, and terms pages. This centralizes common elements like headers, footers, and imports, facilitating easier updates and consistency in design across the platform. Existing content from these individual pages is now extending the base template, adhering to best practices in templating and reducing code duplication.
Adjust the dropdown button's color in the index page to reflect service status dynamically. Buttons now show as 'btn-primary' when the service is operational ('OK') and 'btn-danger' when it isn't, improving visual feedback for users.
Refactored the website to serve dynamic content using Flask, replacing static HTML pages. This allows for the centralized management of service data through a JSON file. Optimizations include:
- Added a .gitignore file to exclude Python and Flask-specific temporary files.
- Migrated static assets into an organized directory structure to facilitate Flask's static file serving.
- Removed redundant HTML files and created Flask template versions with dynamic content rendering.
- Introduced Caddy server configuration for the new Flask architecture, including headers for security and CORS policy, and reverse proxy settings for route handling.
With these changes, website maintenance and updates are simplified, allowing for service information to be updated in a single location (`services.json`), which then propagates to the user-facing pages automatically.