Skip to content

Create stunning video mockups and screenshots with professional device frames and smooth scrolling animations directly in your browser

Notifications You must be signed in to change notification settings

Deepender25/Presenta

Repository files navigation

preview-image

✨ Presenta ✨

Create Stunning Video Mockups & Screenshots with Professional Device Frames.

Build Python FastAPI Vercel License

OverviewGalleryFeaturesGetting Started


📸 Gallery & Demos

Check out what you can create with Presenta! Below are some examples of our video exports and high-quality screenshots.

🎥 Videos

demo1.mp4
demo2.mp4

🖼️ Screenshots

Screenshot 1 Example Screenshot 2 Example

⭐ Overview

Presenta is a powerful web-based application designed to elevate your presentation game. It helps creators, developers, and designers generate high-quality video mockups and screenshots by wrapping content in realistic device frames.

The Problem 😩

Presenting digital products often requires complex tools like After Effects or generic mockup generators that lack flexibility. Users struggle to create smooth, realistic scrolling animations or precise screenshots without diving into heavy proprietary software.

The Solution 💡

Presenta provides a lightweight, browser-based solution. By combining a FastAPI backend with a high-performance Vanilla JS frontend, it offers real-time rendering on an HTML Canvas. Users can upload images or videos, apply device skins (like Browsers or iPhones), and define custom animation paths.

The tool includes a sophisticated Smart Dropdown system for better UI usability and Security best practices (Rate Limiting, Trusted Hosts) to ensure a safe production environment.


✨ Key Features

Presenta is engineered for both ease of use and professional output.

🎨 Device Mockup Engine

Instantly wrap your content in professional frames.

  • 🖥️ Browser Window: A modern, clean browser interface with a customizable address bar.
  • 📱 Mobile Devices: Realistic iPhone frames for mobile content showcases.
  • 📐 Responsive: Automatically adjusts to 16:9, 9:16, or 1:1 aspect ratios.

🎬 Advanced Animation Control

Create silky smooth scrolling videos without keyframing nightmares.

  • 🌊 Human-Like Scrolling: Simulates natural reading patterns with pauses and variable speeds.
  • ⏱️ Custom Timeline: Add drag-and-drop stops on the timeline to control exactly where the scroll pauses.
  • 👀 Live Preview: Hover over timeline stops to instantly preview the frame.

🔧 Smart UI Components

Experience a glitch-free interface.

  • 🧠 Intelligent Dropdowns: Menus automatically detect screen edges and flip upwards to prevent clipping.
  • 📏 Dynamic Resizing: Dropdown lists adjust their height based on available viewport space.
  • 🛡️ Scroll & Click Safety: Enhanced event handling ensures menus stay open during interaction but close when necessary.

🔒 Enterprise-Grade Security

Built with production safety in mind.

  • 🚦 Rate Limiting: Protects resources with slowapi (60 requests/min).
  • 🔐 Secure Headers: Implements blocking XSS, Clickjacking, and MIME-sniffing protections.
  • 🕵️ Host Validation: Strictly verifies Host headers to prevent injection attacks.

🛠️ Tech Stack & Architecture

Presenta leverages a modern, clean architecture for maximum performance and easy deployment.

Technology Purpose Why it was Chosen
Python (FastAPI) Backend Server High performance, easy async support, and great ecosystem for security middleware.
Vanilla JavaScript Frontend Logic Zero-dependency approach ensures blazing fast load times and direct DOM manipulation.
HTML5 Canvas Rendering Engine Allows for real-time video compositing and frame generation in the browser.
Vercel Hosting Seamless serverless deployment for Python apps with global CDN distribution.

📁 Project Structure

📂 Presenta/
├── 📄 main.py                  # Entry point: FastAPI app, Middleware, and Routes
├── 📄 requirements.txt         # Python dependencies
├── 📄 vercel.json              # Config for Serverless deployment
├── 📂 static/
│   ├── 📂 css/                 # Modern, variable-based CSS
│   └── 📂 js/
│       ├── 📄 app.js           # UI Interaction logic
│       └── 📄 renderer.js      # Core Canvas rendering and animation engine
├── 📂 templates/
│   └── 📄 index.html           # Main application view (Jinja2)
└── 📄 README.md                # Project documentation

🚀 Getting Started

Follow these steps to set up Presenta on your local machine.

Prerequisites

  • Python 3.8+
  • pip package manager

1. Clone the Repository

git clone https://github.com/your-username/presenta.git
cd presenta

2. Create Virtual Environment

# Windows
python -m venv venv
.\venv\Scripts\Activate

# macOS/Linux
python3 -m venv venv
source venv/bin/activate

3. Install Dependencies

pip install -r requirements.txt

4. Run Development Server

python main.py

Open your browser and navigate to: http://127.0.0.1:8000


🌍 Deployment

Presenta is optimized for Vercel.

  1. Install Vercel CLI: npm i -g vercel
  2. Deploy: vercel --prod (The vercel.json file handles all routing and Python runtime configuration automatically)

🤝 Contributing

Contributions are always welcome! Whether it's a new device frame, CSS tweaks, or better animation curves.

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

📝 License

Distributed under the MIT License. See LICENSE for more information.

Made with ❤️ for Creators.
⬆️ Back to Top

About

Create stunning video mockups and screenshots with professional device frames and smooth scrolling animations directly in your browser

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published