This commit introduces a significant update to both the frontend and backend, focusing on enhanced user engagement and a consistent visual identity.
Key changes include:
- **Frontend UI/UX Refactor**:
- Implemented a "hand-drawn" aesthetic across the entire application using CSS overrides, custom SVG charts, and specific border/shadow styles to match the Excalidraw experience.
- Added a new notification system in the Header to display user updates.
- Enhanced the Template Picker with more variety and improved interaction models.
- Added a "Presentation Mode" in the Editor.
- Improved Dashboard visualizations with hand-drawn style sparklines and charts.
- Added modal dialogs for creating drawings and templates with custom names.
- **Backend & API Enhancements**:
- Implemented full CRUD support for custom templates, allowing users to save their drawings as reusable templates.
- Added a notification service with endpoints to list, mark as read, and mark all as read.
- Updated the API client to handle more robust JSON responses and error states.
- Improved CORS/Origin validation in the HTTP middleware to handle proxy headers (`X-Forwarded-Host`, `X-Forwarded-Proto`) more reliably.
- **Database & Infrastructure**:
- Added a new PostgreSQL migration for the `notifications` table.
- Updated the data models in the workspace to support templates (including snapshot storage) and notifications.
- Updated `.gitignore` to exclude graphify cache and AST files.
Introduces a 'thumbnail' field to the Canvas model and updates all storage backends (AWS S3, filesystem, memory, and SQLite) to handle storing and retrieving this field. Also updates the API handler to accept and save the thumbnail, and switches SQLite driver to modernc.org/sqlite for improved compatibility. Updates .gitignore to exclude .db files.