šØ Digital Playground
A creative web application for building interactive digital letters and layouts with multimedia elements.

⨠Features
šÆ Core Functionality
- 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
š Content Elements
- 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
š¤ Export & Sharing
- 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
šØ User Interface
- Modern Design: Clean, intuitive interface with smooth animations
- Floating Hamburger Menu: Fixed top-right menu with dropdown options
- Keyboard Shortcuts:
Ctrl+O
: Open file
Ctrl+Shift+E
: Export layout
Ctrl+Shift+S
: Generate shareable link
- Toast Notifications: Beautiful, non-blocking notifications
- Customizable Background: Change canvas background color with preset options
š Quick Start
Prerequisites
- Node.js 18+
- pnpm (recommended) or npm
Installation
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
Build for Production
pnpm build
pnpm preview
š ļø Tech Stack
š Usage
Creating Your First Layout
- 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
Keyboard Shortcuts
Shortcut |
Action |
Ctrl+O |
Open saved layout file |
Ctrl+Shift+E |
Export current layout |
Ctrl+Shift+S |
Generate shareable link |
Voice Recording
- 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
šÆ Use Cases
- 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
š§ Development
Project Structure
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
Available Scripts
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
Contributing
- 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
Commit Convention
This project follows Conventional Commits:
feat
: New features
fix
: Bug fixes
docs
: Documentation changes
style
: Code style changes
refactor
: Code refactoring
test
: Adding or updating tests
chore
: Maintenance tasks
š Privacy & Security
- 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
š± Browser Support
- Modern Browsers: Chrome, Firefox, Safari, Edge (latest versions)
- Mobile Support: Responsive design for tablets and phones
- Progressive Enhancement: Graceful degradation for older browsers
š Deployment
Netlify (Recommended)
- 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
š® Roadmap
š License
This project is licensed under the MIT License - see the LICENSE file for details.
š Acknowledgments
- 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
š Support
Made with ā¤ļø by Ibrahim Raimi