Fills the gaps between the admin panel screens and the backend: a full
free-text + slide-count + language -> AI-generated presentation flow with
new slide-cloning logic in TemplateFillService, a "my presentations" list
endpoint, a swappable payment-gateway structure for wallet top-ups (fake
driver for now), and avatar upload / public-profile toggle / account
deletion / password change / notification preference endpoints.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Round-tripping real-world .pptx files through PhpPresentation's object model
was silently corrupting/losing content it doesn't fully model (themes, masters,
layouts, fonts), so placeholder replacement wasn't reliable. Now the service
edits the .pptx as a zip archive directly: only the touched slide XML text runs
and swapped image bytes change, everything else stays byte-identical to the
source file. Drops the now-unused phpoffice/phppresentation dependency.
chore: update composer dependencies to include phppresentation
chore: update composer.lock after adding phppresentation
feat: create categories migration for category management
feat: create templates migration for template storage
feat: create template generations migration for tracking template usage
feat: create template keys migration for template customization
feat: create notifications migration for user notifications
feat: update API routes for categories, templates, and user profile management
docs: update API documentation to include new endpoints for profile and wallet