SmallYa is a free, open-source alternative to services like Headliner, built to transform your audio into captivating videos effortlessly. With an intuitive drag-and-drop editor, anyone can create professional-looking audiograms with dynamic waveforms, text, and graphics. It's the perfect tool for podcasters, musicians, and creators looking to boost their social media presence without the complexity or cost of traditional video software.
Tired of using heavy, complex video software just to add a dynamic waveform to your podcast or audio clips?
SmallYa is designed to solve this problem. We provide a lightweight, focused, and efficient online editor that lets you:
- Create in Minutes: Forget complex timelines. Create audio visualization videos in minutes with an intuitive canvas.
- Cloud-Native: Built on Cloudflare, ensuring a smooth and fast experience for users worldwide.
- Fully Open-Source: Freely use, modify the code, or deploy it on your own servers.
- Visual Audio Editor: Create stunning audio visualizations with a drag-and-drop canvas.
- AI-Powered Tools: Intelligent audio processing and content generation (planned).
- Multi-Format Support: Export to various video formats (MP4, WebM).
- Responsive Design: Works seamlessly across all devices.
- Cloud-Native Architecture: Built with modern cloud technologies for scalability.
- Customizable Templates: Pre-built templates for quick content creation.
- Node.js 18.x or later
- pnpm package manager
- Cloudflare account (for deployment, not required for local use)
# Clone the repository
git clone https://github.com/your-username/smallya.git
cd smallya
# Install dependencies
pnpm install# API configuration
cd apps/api
cp .env.example .dev.vars
cp wrangler.toml.example wrangler.tomlcd ../web
cp .env.example .env.localcd ../renderer
cp .env.example .env# Return to project root
pnpm setup
# or
node scripts/init-db.js- Web Application: http://localhost:3000
- API Server: http://localhost:8787
- Renderer Service: http://localhost:8788
# Start all services
pnpm devPort conflicts:
# Windows (automatic port cleanup)
pnpm dev
# Linux/Mac (manual port cleanup)
pnpm dev:linuxDatabase issues:
# Check if database is initialized
cd apps/api
pnpm db:check
# Reset database (delete and recreate)
pnpm db:resetEnvironment variable issues:
- Ensure all required
.envfiles are created from.examplefiles - Verify
JWT_SECRETandNEXTAUTH_SECRETare set - Check that
wrangler.tomlexists inapps/api/
Dependency issues:
# Clean and reinstall
pnpm clean
rm -rf node_modules
pnpm install# Build all applications
pnpm build
# Build individual applications
pnpm build:api
pnpm build:webSmallYa follows a modern monorepo architecture with these main components:
- Frontend (
apps/web): Next.js 14, React, TypeScript, Tailwind CSS, Zustand, Fabric.js - Backend (
apps/api): Cloudflare Workers, Hono.js, Drizzle ORM, Cloudflare D1 & R2 - Renderer Service (
apps/renderer): Fastify, Puppeteer, FFmpeg, AudioMotion-analyzer - Shared Packages:
packages/shared-types: Shared TypeScript types across services.packages/ui: Reusable UI components.
We are excited about the future of SmallYa! Here are some features we are planning:
- AI Auto-Subtitles: Integrate speech recognition to auto-generate and align subtitles.
- More Visualization Templates: Provide a richer library of waveform styles and background templates.
- Team Collaboration: Support real-time collaboration on the same project.
- Plugin System: Allow the community to create and share their own visualization plugins.
We welcome your ideas and suggestions in the Issues!
smallya/
├── apps/
│ ├── api/ # Cloudflare Workers API
│ ├── web/ # Next.js Web Application
│ └── renderer/ # Video Rendering Service
├── packages/
│ ├── shared-types/ # Shared TypeScript types
│ └── ui/ # Shared UI components
├── docs/ # Documentation
└── ...
Projects in SmallYa consist of:
- Audio files stored in Cloudflare R2
- Canvas design configurations stored as JSON
- Video format settings (landscape, portrait, square)
- Rendering status and output URLs
The application uses a dual-layer authentication system:
- NextAuth.js handles user authentication on the frontend
- Cloudflare Workers API uses JWT tokens for secure communication
All files (audio, images, videos) are stored in Cloudflare R2 with pre-signed URLs for secure access.
- Users create projects with audio files and canvas designs
- Projects are exported to trigger rendering
- Rendering service processes the project and generates videos
- Completed videos are stored in R2 and made available to users
We welcome contributions to SmallYa! Here's how you can help:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Please read our Contributing Guidelines for more details.
- Create an issue for bug reports or feature requests
- Thanks to all contributors who have helped shape SmallYa
- Special thanks to the open-source community for the amazing tools that make this project possible
