A sophisticated animation generation platform powered by Manim and modern web technologies
Pixel Pilot is a cutting-edge platform that transforms text prompts into stunning mathematical animations using Manim. Built with a modern microservices architecture, it features real-time processing, and seamless user experience.
- π¨ Intelligent Animation Generation: Convert natural language prompts into mathematical animations
- β‘ Real-time Processing: WebSocket-powered live updates and progress tracking
- π Advanced Animations: Framer Motion powered transitions and state management
- π Scalable Architecture: Microservices with Redis queue management
- π± Responsive Design: Beautiful UI that works across all devices
- Next.js 14 - React framework with App Router
- TypeScript - Type-safe development
- Framer Motion - Advanced animations and transitions
- Tailwind CSS - Utility-first styling
- shadcn/ui - Beautiful component library
- Node.js - Runtime environment
- Express.js - Web framework
- Prisma - Database ORM
- Redis - Queue management and caching
- WebSocket - Real-time communication
- Manim - Mathematical animation engine
- Python - Manim runtime
- FFmpeg - Video processing
- AWS S3 - Video storage
- PostgreSQL - Primary database
- Turborepo - Monorepo management
- Node.js 18+
- Python 3.8+
- PostgreSQL
- Redis
- FFmpeg
-
Clone the repository
git clone https://github.com/kiralightyagami/pixel-pilot.git cd pixel-pilot
-
Install dependencies
npm install
-
Set up environment variables
# Copy environment files cp apps/frontend/.env.example apps/frontend/.env.local cp apps/api/.env.example apps/api/.env cp packages/db/.env.example packages/db/.env
-
Set up the database
cd packages/db npx prisma migrate dev npx prisma generate
-
Install Manim dependencies
cd apps/worker python setup_manim.py
-
Start development servers
# Start all services npm run dev
pixel-pilot/
βββ apps/
β βββ frontend/ # Next.js web application
β β βββ app/ # App router pages
β β βββ components/ # React components
β β βββ lib/ # Utilities and hooks
β βββ api/ # Express.js API server
β βββ worker/ # Manim animation worker
β βββ worker-orchestrator/ # Queue management
βββ packages/
β βββ db/ # Prisma database package
β βββ redis/ # Redis utilities
β βββ ui/ # Shared UI components
β βββ eslint-config/ # ESLint configurations
β βββ typescript-config/ # TypeScript configurations
βββ media/ # Generated animations
- Natural language to Manim code conversion
- Support for geometric shapes, graphs, and mathematical concepts
- Real-time generation progress tracking
- High-quality video output in multiple resolutions
- WebSocket connections for live updates
- Progress tracking during animation generation
- Instant feedback and error handling
- Queue status monitoring
# Development
npm run dev # Start all development servers
npm run build # Build all applications
npm run lint # Lint all packages
npm run type-check # Type check all packages
# Database
npm run db:migrate # Run database migrations
npm run db:generate # Generate Prisma client
npm run db:studio # Open Prisma Studio
# Individual apps
npm run dev:frontend # Frontend only
npm run dev:api # API only
npm run dev:worker # Worker only
NEXT_PUBLIC_API_URL=http://localhost:3001
NEXT_PUBLIC_WS_URL=ws://localhost:3001
DATABASE_URL=postgresql://username:password@localhost:5432/pixelpilot
REDIS_URL=redis://localhost:6379
AWS_ACCESS_KEY_ID=your_aws_key
AWS_SECRET_ACCESS_KEY=your_aws_secret
S3_BUCKET_NAME=your_bucket_name
DATABASE_URL=postgresql://username:password@localhost:5432/pixelpilot
We welcome contributions! Please see our Contributing Guide for details.
- Fork the repository
- Create your 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
This project is licensed under the MIT License - see the LICENSE file for details.
- Manim Community for the incredible animation engine
- Framer Motion for smooth animations
- shadcn/ui for beautiful components
If you have any questions or need help, please:
- Open an issue on GitHub
- Check our documentation
- Join our community discussions
Built with β€οΈ by the Asvin Shrivas