Transform text into captivating videos with AI-powered automation ✨
An intelligent video generation platform powered by AI
Aeterna AI is a cutting-edge SaaS platform that transforms text prompts into professional-quality videos. Built with Next.js 15 frontend and a Python/FastAPI backend, it leverages advanced AI technologies to automate the entire video creation process from script generation to final rendering.
Perfect for content creators, marketers, educators, and businesses looking to scale their video production without compromising quality.
- AI Script Generation - Intelligent content creation from text prompts
- Text-to-Speech - Natural voice synthesis with Edge TTS
- Automated Subtitles - AI-powered caption generation with Whisper
- Stock Media Integration - Automatic video/image sourcing from Pixabay & Pexels
- Professional Rendering - High-quality video output with MoviePy
- Real-Time Progress Tracking - Live updates on video generation status
- Video Library - Organized dashboard with timestamp sorting
- Processing Priority Queue - Active generations always visible first
- Responsive Design - Beautiful UI built with Tailwind CSS & shadcn/ui
- Clerk Authentication - Secure user management
- Firebase Integration - Reliable data storage
- PostgreSQL Database - Robust data persistence with Drizzle ORM
- Scalable Architecture - Separate frontend/backend deployment
- State Persistence - Task restoration from disk on restart
- Environment-Based Config - Seamless local/production switching
- API-First Design - RESTful FastAPI backend
┌─────────────────────────────────────────────────────────────┐
│ FRONTEND (Next.js 15) │
│ ┌────────────┐ ┌────────────┐ ┌────────────────────┐ │
│ │ Dashboard │ │ Create │ │ Video Library │ │
│ │ & Auth │ │ Video │ │ (Real-time Poll) │ │
│ └────────────┘ └────────────┘ └────────────────────┘ │
│ │ │ │ │
└─────────┼────────────────┼───────────────────┼──────────────┘
│ │ │
└────────────────┴───────────────────┘
│
HTTPS API Calls
│
┌────────────────▼───────────────────┐
│ BACKEND (Python/FastAPI) │
│ │
│ ┌──────────────────────────────┐ │
│ │ Video Generation Engine │ │
│ │ • Script Generation (LLM) │ │
│ │ • Voice Synthesis (TTS) │ │
│ │ • Media Sourcing (APIs) │ │
│ │ • Subtitle Generation │ │
│ │ • Video Rendering (MoviePy) │ │
│ └──────────────────────────────┘ │
│ │
│ ┌──────────────────────────────┐ │
│ │ Task Manager & Storage │ │
│ │ • In-Memory State │ │
│ │ • Disk Persistence │ │
│ │ • Progress Tracking │ │
│ └──────────────────────────────┘ │
└─────────────────────────────────────┘
Deployment:
- Frontend: Vercel (or any Next.js host)
- Backend: Google Cloud Run (containerized FastAPI)
- Database: PostgreSQL + Firebase
- Node.js 18+ and npm/yarn
- Git for cloning the repository
- API Keys (see Environment Variables section)
git clone https://github.com/Theideabased/aeterna.git
cd aeternanpm install
# or
yarn installCreate a .env.local file in the root directory:
# Backend API Configuration
NEXT_PUBLIC_API_BASE_URL=http://127.0.0.1:8080
# Clerk Authentication
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=your_clerk_publishable_key
CLERK_SECRET_KEY=your_clerk_secret_key
NEXT_PUBLIC_CLERK_SIGN_IN_URL=/sign-in
NEXT_PUBLIC_CLERK_SIGN_UP_URL=/sign-up
# Database
NEXT_PUBLIC_DRIZZLE_DATABASE_URL=postgresql://your_database_url
# Firebase
NEXT_PUBLIC_FIREBASE_API_KEY=your_firebase_api_key
# AI Services (Optional - if using frontend AI features)
NEXT_PUBLIC_ELEVEN_LABS_API_KEY=your_eleven_labs_key
NEXT_PUBLIC_CAPTION_API=your_caption_api_key
NEXT_PUBLIC_OPENAI_API_KEY=your_openai_key
HUGGINGFACE_API_KEY=your_huggingface_key
### 4. Set Up Database
```bash
npm run db:pushTo open Drizzle Studio for database management:
npm run db:studionpm run devThe app will be available at http://localhost:3000
- Push your code to GitHub
- Import project in Vercel
- Add environment variables
- Deploy!
The backend API is deployed separately. See the backend repository for deployment instructions.
- Sign Up/Login - Create an account using Clerk authentication
- Navigate to Create - Go to "Create New Video" from the dashboard
- Enter Your Prompt - Describe the video you want to generate
- Configure Options - Choose voice, style, and other parameters
- Generate - Click generate and monitor real-time progress
- View Videos - Access your generated videos in the Videos library
- Download - Download completed videos directly
- Real-time Updates - Progress bars show generation status
- Smart Sorting - Processing videos appear first, then by newest
- Timestamp Tracking - See exactly when each video was created
- Easy Management - View, download, and organize your videos
- Framework: Next.js 15.0
- Language: JavaScript (React)
- Styling: Tailwind CSS + shadcn/ui components
- Authentication: Clerk
- Database ORM: Drizzle ORM
- HTTP Client: Axios
- Video Player: Remotion
- 3D Graphics: Spline
- Framework: FastAPI (Python)
- Video Processing: MoviePy
- AI/ML:
- Whisper (subtitle generation)
- Edge TTS (text-to-speech)
- LLM integration for script generation
- Media APIs: Pixabay, Pexels
- Deployment: Google Cloud Run
- Primary DB: PostgreSQL (via Drizzle ORM)
- File Storage: Firebase
- Task Persistence: Disk-based state management
aeterna/
├── app/ # Next.js 15 App Router
│ ├── (auth)/ # Authentication pages
│ ├── dashboard/ # Dashboard layout
│ │ ├── create-new/ # Video creation page
│ │ ├── videos/ # Video library with real-time updates
│ │ └── sponsor/ # Sponsorship page
│ ├── _context/ # React Context providers
│ ├── layout.js # Root layout
│ └── page.js # Landing page
├── components/ # Reusable React components
│ └── ui/ # shadcn/ui components
├── configs/ # Configuration files
│ ├── db.js # Database config
│ ├── schema.js # Database schema
│ ├── aimodel.js # AI model configs
│ └── FireBaseConfig.jsx # Firebase setup
├── lib/ # Utility functions
├── public/ # Static assets
├── remotion/ # Video rendering components
├── screenshots/ # App screenshots
├── .env.local # Local environment variables (gitignored)
├── .env.production # Production environment variables
├── .gitignore # Git ignore rules
├── next.config.mjs # Next.js configuration
├── tailwind.config.js # Tailwind CSS config
├── drizzle.config.js # Drizzle ORM config
└── package.json # Dependencies and scripts
The backend API provides the following endpoints:
POST /api/v1/video- Create new video generation taskGET /api/v1/tasks- Get all tasksGET /api/v1/tasks/{task_id}- Get specific task detailsGET /api/v1/tasks/{task_id}/video- Download generated video
GET /api/v1/ping- Check API health
Contributions are welcome! Please follow these steps:
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Please ensure your code follows the existing style and includes appropriate tests.
If you find this project helpful, consider sponsoring! Click the "Sponsor" button in the dashboard to get in touch.
Contact: sogunmusire@gmail.com
Distributed under the GNU General Public License. See LICENSE for more information.
- Next.js - The React framework
- FastAPI - Modern Python web framework
- Clerk - Authentication made simple
- shadcn/ui - Beautiful UI components
- Drizzle ORM - TypeScript ORM
- MoviePy - Video editing library
- All the amazing open-source projects that make this possible
.png)
.png)
.png)