Turn Telegram Messages into Beautiful, Shareable Images.
- 🔗 One-Click Convert - Paste a Telegram link, instantly generate an image
- 🎨 Multiple Backgrounds - 8 beautiful gradient backgrounds to choose from
- 📐 Custom Spacing - Flexibly adjust padding around the card
- 🔒 Hide Link - Option to hide post link, show timestamp only
- 📥 HD Export - 4x scale for crisp, sharp images
- 📋 Copy Source Link - One-click copy of the original Telegram link
- 🖼️ Multi-Media Support - Renders photo albums, video thumbnails, and GIF badges
- 💬 Reply & Forward - Displays quoted replies and forwarded-from attribution
⚠️ Smart Error Toasts - Distinct notifications for private, restricted, and content-protected links- 🛡️ Secure & Reliable - XSS protection, SSRF protection, rate limiting
- Node.js 18+
- npm or pnpm
# Clone the repository
git clone https://github.com/Eyozy/telesnap.git
cd telesnap
# Install dependencies
npm install# Start the development server
npm run devVisit http://localhost:3000
# Build for production
npm run build
# Preview production build locally
npm run previewtelesnap/
├── app/
│ ├── assets/css/ # Global styles
│ ├── components/ # Vue components
│ │ ├── ActionButtons.vue # Download/Copy buttons
│ │ ├── AppHeader.vue # Top navigation bar
│ │ ├── CustomizePanel.vue # Customization panel
│ │ └── TelegramCard.vue # Telegram card component
│ ├── composables/ # Composable functions
│ │ └── useImageGenerator.ts # Image generation logic
│ ├── constants/ # Constant configurations
│ ├── pages/ # Page components
│ └── types/ # TypeScript type definitions
├── server/
│ ├── api/ # API endpoints
│ │ └── fetch-post.ts # Fetch, parse & sanitize Telegram posts (media, reply, forwarded)
│ └── middleware/ # Server middleware
│ └── rate-limit.ts # Rate limiting
├── public/ # Static assets
├── nuxt.config.ts # Nuxt configuration
└── package.json
Issues and Pull Requests are welcome!
- Fork this repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
MIT License - See LICENSE file for details