A creative web application for building interactive digital letters and layouts with multimedia elements.
- Interactive Digital Canvas: Drag-and-drop interface for creating digital layouts
- Multi-element Support: Add sticky notes, photos, voice messages, Spotify tracks, and doodles
- Real-time Editing: Live editing with instant visual feedback
- Responsive Design: Works seamlessly across desktop and mobile devices
- Sticky Notes: Text-based notes with customizable colors and rotation
- Photo Upload: Drag-and-drop image support with automatic resizing
- Voice Messages: Record and play audio messages with duration display
- Spotify Integration: Embed and play Spotify tracks directly on canvas
- Drawing Tool: Freehand doodling with customizable brush sizes and colors
- JSON Export: Save and reload exact canvas layouts
- Shareable Links: Generate URLs that encode canvas data for easy sharing
- Load Layouts: Import previously saved JSON files
- PNG/PDF Export: Coming soon - export canvas as images
- Modern Design: Clean, intuitive interface with smooth animations
- Floating Hamburger Menu: Fixed top-right menu with dropdown options
- Keyboard Shortcuts:
Ctrl+O
: Open fileCtrl+Shift+E
: Export layoutCtrl+Shift+S
: Generate shareable link
- Toast Notifications: Beautiful, non-blocking notifications
- Customizable Background: Change canvas background color with preset options
- Node.js 18+
- pnpm (recommended) or npm
-
Clone the repository
git clone https://github.com/ibrahimraimi/digital-playground.git cd digital-playground
-
Install dependencies
pnpm install
-
Start development server
pnpm dev
-
Open your browser Navigate to
http://localhost:5173
pnpm build
pnpm preview
- Frontend: SvelteKit 2.22.0, Svelte 5.0.0
- Styling: Tailwind CSS 4.0.0, tw-animate-css 1.3.6
- Icons: Lucide Svelte 0.537.0
- Notifications: svelte-french-toast 1.2.0
- Export Libraries: html2canvas 1.4.1, jsPDF 3.0.1
- Development: TypeScript 5.0.0, Vite 7.0.4, ESLint 9.18.0, Prettier 3.4.2
- Add Elements: Use the toolbar to add sticky notes, photos, voice messages, or drawings
- Customize: Click on elements to edit their content, colors, or position
- Arrange: Drag elements around the canvas to create your desired layout
- Save: Use the hamburger menu to export your layout as JSON
- Share: Generate a shareable link to send to others
Shortcut | Action |
---|---|
Ctrl+O |
Open saved layout file |
Ctrl+Shift+E |
Export current layout |
Ctrl+Shift+S |
Generate shareable link |
- Click the microphone icon in the toolbar
- Grant microphone permissions when prompted
- Click the record button to start recording
- Click stop when finished
- Preview your recording before adding to canvas
- Select the drawing tool from the toolbar
- Choose your brush size and color
- Click and drag on the canvas to draw
- Use the eraser to remove unwanted lines
- Digital Greeting Cards: Create personalized digital messages
- Creative Presentations: Build interactive visual presentations
- Educational Content: Develop engaging learning materials
- Personal Projects: Organize ideas and concepts visually
- Collaborative Sharing: Share creative layouts with others
src/
โโโ lib/
โ โโโ components/
โ โ โโโ items/ # Canvas item components
โ โ โโโ modals/ # Modal dialogs
โ โ โโโ ... # Other components
โ โโโ stores/ # Svelte stores
โ โโโ types/ # TypeScript type definitions
โ โโโ utils/ # Utility functions
โโโ routes/ # SvelteKit routes
โโโ app.css # Global styles
pnpm dev # Start development server
pnpm build # Build for production
pnpm preview # Preview production build
pnpm check # Type check
pnpm format # Format code with Prettier
pnpm lint # Lint code with ESLint
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'feat: add amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
This project follows Conventional Commits:
feat
: New featuresfix
: Bug fixesdocs
: Documentation changesstyle
: Code style changesrefactor
: Code refactoringtest
: Adding or updating testschore
: Maintenance tasks
- Client-side Processing: All data processing happens in the browser
- No Server Storage: User data is not stored on servers
- Secure File Handling: Safe file upload and download operations
- Permission-based Features: Microphone access only when needed
- Modern Browsers: Chrome, Firefox, Safari, Edge (latest versions)
- Mobile Support: Responsive design for tablets and phones
- Progressive Enhancement: Graceful degradation for older browsers
- Connect your GitHub repository to Netlify
- Set build command:
pnpm build
- Set publish directory:
build
- Deploy!
The app can be deployed to any static hosting platform:
- Vercel
- GitHub Pages
- Cloudflare Pages
- AWS S3 + CloudFront
- Enhanced Export Options: PNG and PDF export functionality
- Collaborative Features: Real-time multi-user editing
- Template Library: Pre-built layout templates
- Advanced Drawing Tools: More sophisticated drawing capabilities
- Audio Effects: Voice message enhancement features
- Cloud Storage: Optional cloud backup and sync
This project is licensed under the MIT License - see the LICENSE file for details.
- Svelte team for the amazing framework
- Tailwind CSS for the utility-first CSS framework
- Lucide for the beautiful icons
- Vite for the fast build tool
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Email: Contact via GitHub
Made with โค๏ธ by Ibrahim Raimi