- Background layer: color picker (real-time) + image upload + clear
- Image preview shows in sidebar after upload
- Uploaded image scales to fill the card dimensions
- All layer properties now update canvas in real-time (no apply button needed)
- Border: color + thickness slider real-time
- Text: font size slider real-time
- Click canvas objects to select layer and sync properties
- All objects now selectable on canvas (hasControls=false, lockMovement enabled)
- Clicking canvas objects syncs activeLayer
- Add property editor panel for bg/border/text layers
- Background: color picker to change fill color
- Border: color picker + thickness slider
- Text: font size slider
- Layer properties (fillColor, strokeColor, textSize) stored in layer state
- Click layer to toggle visibility and redraw canvas
- Click ▲/▼ buttons to reorder layers (z-index)
- Active layer highlighted with left red border
- Each layer now actually renders: bg/white, border/frame, pattern/suit symbol, text/corner labels
- Fix fabric.js imports (Canvas, FabricText, Rect)
- Replace Element Plus components with pure HTML/CSS
- Use inline styles for reliable rendering
- Fix templates URL duplicate path issue
- Insert template data (4 templates) via Django shell
- Clear Vite cache and restart both servers
- Simplify Home.vue to avoid API loading errors
- Use built-in template data instead of API calls
- Add simple error handling for API requests
- Add test page for debugging
- Fix router import path in main.js
- Handle Django REST Framework pagination format in API calls
- Add getTemplates function to project API
- Restart frontend development server
- Django backend with projects, templates, exports apps
- SQLite database models for Project, Asset, CardLayer
- REST API endpoints for project management
- Vue frontend with Vite, Element Plus, Fabric.js
- Home page for project selection
- Editor page with Fabric.js canvas integration