{"id":15194235,"url":"https://github.com/lebtoki/presentapulse","last_synced_at":"2026-02-24T15:39:19.025Z","repository":{"id":248294754,"uuid":"828306145","full_name":"LebToki/PresentaPulse","owner":"LebToki","description":"PresentaPulse leverages the power of LivePortrait and Real-ESRGAN to create ultra-realistic animated portraits. Developed by Tarek Tarabichi from 2TInteractive, this tool integrates advanced AI models to enhance image quality and create stunning animations.","archived":false,"fork":false,"pushed_at":"2024-07-13T20:19:08.000Z","size":27042,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-01T11:17:13.565Z","etag":null,"topics":["ai","animation","deeplearning","deeplearning-ai","enhancement-and-restoration","gradio-python-app","imageenhancement","img2video","liveportrait","multiprocessing","portrait-animation","python","real-esrgan","videoprocessing","windows-11"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/LebToki.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-07-13T18:18:04.000Z","updated_at":"2024-08-29T17:57:12.000Z","dependencies_parsed_at":null,"dependency_job_id":"3180fd07-f6b5-44b0-ada5-672229f47e8e","html_url":"https://github.com/LebToki/PresentaPulse","commit_stats":{"total_commits":26,"total_committers":1,"mean_commits":26.0,"dds":0.0,"last_synced_commit":"c34dc005f7f15c3e42e6b96146cea31424032558"},"previous_names":["lebtoki/presentapulse"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/LebToki/PresentaPulse","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LebToki%2FPresentaPulse","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LebToki%2FPresentaPulse/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LebToki%2FPresentaPulse/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LebToki%2FPresentaPulse/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/LebToki","download_url":"https://codeload.github.com/LebToki/PresentaPulse/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LebToki%2FPresentaPulse/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278931652,"owners_count":26070788,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-08T02:00:06.501Z","response_time":56,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","animation","deeplearning","deeplearning-ai","enhancement-and-restoration","gradio-python-app","imageenhancement","img2video","liveportrait","multiprocessing","portrait-animation","python","real-esrgan","videoprocessing","windows-11"],"created_at":"2024-09-27T22:42:24.236Z","updated_at":"2026-02-24T15:39:19.019Z","avatar_url":"https://github.com/LebToki.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n![PresentaPulse Banner](assets/images/OG_Banner_PresentaPulse.png)\n\n# 🎬 PresentaPulse\n\n### Ultra-Realistic Portrait Animation Studio\n\n**Transform still images into lifelike animated portraits using LivePortrait and Real-ESRGAN**\n\n[![Python](https://img.shields.io/badge/Python-3.8+-blue.svg)](https://www.python.org/)\n[![License](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE)\n[![Platform](https://img.shields.io/badge/Platform-Windows%20%7C%20Linux-lightgrey.svg)]()\n[![Gradio](https://img.shields.io/badge/UI-Gradio-purple.svg)](https://gradio.app/)\n\n[Features](#-features) • [Installation](#-installation) • [Quick Start](#-quick-start) • [Models](#-pretrained-models) • [Requirements](#-system-requirements) • [API](#-api-integration) • [Documentation](#-documentation)\n\n---\n\n\u003c/div\u003e\n\n## 📋 Table of Contents\n\n- [Overview](#-overview)\n- [Features](#-features)\n- [Installation](#-installation)\n- [Quick Start](#-quick-start)\n- [Pretrained Models](#-pretrained-models)\n- [System Requirements](#-system-requirements)\n- [Usage Guide](#-usage-guide)\n- [API Integration](#-api-integration)\n- [Performance](#-performance-optimization)\n- [Troubleshooting](#-troubleshooting)\n- [Contributing](#-contributing)\n- [License](#-license)\n\n---\n\n## 🎯 Overview\n\n**PresentaPulse** is a powerful, feature-rich application for creating ultra-realistic animated portraits from still images. Built on top of LivePortrait and enhanced with Real-ESRGAN, it provides a comprehensive suite of tools for professional-quality portrait animation.\n\n### Key Highlights\n\n- ✨ **Advanced AI Models** - Powered by LivePortrait and Real-ESRGAN\n- 🎨 **Modern UI/UX** - Beautiful dark theme with glassmorphism design\n- ⚡ **High Performance** - GPU acceleration, batch processing, and optimization\n- 🔧 **Extensive Controls** - Fine-tune every aspect of your animations\n- 📦 **Multiple Export Formats** - MP4, MOV, WebM, GIF, and frame sequences\n- 🔌 **REST API** - Programmatic access for integration\n\n---\n\n## ✨ Features\n\n### 🎥 Core Animation Features\n\n| Feature                  | Description                                       |\n|--------------------------|---------------------------------------------------|\n| **Portrait Animation**   | Transform still images into animated portraits    |\n| **Multi-Face Detection** | Detect and process multiple faces in group photos |\n| **Face Selection**       | Choose which faces to animate                     |\n| **Eye/Lip Retargeting**  | Fine-tune facial expressions                      |\n| **Relative Motion**      | Natural motion transfer from driving videos       |\n\n### 🎨 Enhancement Features\n\n| Feature                     | Description                              |\n|-----------------------------|------------------------------------------|\n| **Real-ESRGAN Integration** | Multiple model support (4 models)        |\n| **Quality Presets**         | Low, Medium, High, Ultra quality options |\n| **Temporal Smoothing**      | Reduce jitter between frames             |\n| **Denoising**               | Remove noise from videos                 |\n| **Motion Stabilization**    | Reduce camera shake                      |\n\n### 📐 Format \u0026 Export Features\n\n| Feature                     | Description                              |\n|-----------------------------|------------------------------------------|\n| **Aspect Ratios**           | 1:1, 16:9, 9:16, 4:3, 21:9, Custom       |\n| **Smart Cropping**          | Center, face-aware, directional cropping |\n| **Background Preservation** | Padding mode maintains full image        |\n| **Export Formats**          | MP4, MOV, WebM, GIF, Frame sequences     |\n| **Custom Resolution**       | Export at any resolution                 |\n\n### ⚡ Performance Features\n\n| Feature                   | Description                    |\n|---------------------------|--------------------------------|\n| **GPU Memory Management** | Automatic memory optimization  |\n| **Batch Processing**      | Process multiple images/videos |\n| **Processing Queue**      | Thread-safe queue system       |\n| **Multi-GPU Support**     | Automatic GPU selection        |\n| **Low-Memory Mode**       | Optimized for weaker GPUs      |\n| **Checkpoint/Resume**     | Resume interrupted processing  |\n\n### 🎯 Advanced Controls\n\n| Feature                  | Description                           |\n|--------------------------|---------------------------------------|\n| **Expression Intensity** | Amplify or reduce expression strength |\n| **Blink Frequency**      | Control blink rate                    |\n| **Head Movement**        | Adjust head movement intensity        |\n| **Gaze Direction**       | Control eye gaze direction            |\n| **Expression Presets**   | 6 predefined expression presets       |\n\n### 🔊 Audio Features\n\n| Feature                 | Description                               |\n|-------------------------|-------------------------------------------|\n| **Audio Sync**          | Extract and sync audio from driving video |\n| **Background Music**    | Add background music with volume control  |\n| **Audio Normalization** | Consistent audio levels                   |\n| **Loop Audio**          | Loop audio if shorter than video          |\n\n### 🎨 UI/UX Features\n\n| Feature                | Description                          |\n|------------------------|--------------------------------------|\n| **Real-time Preview**  | Preview frames during processing     |\n| **History \u0026 Gallery**  | View and manage previous generations |\n| **Comparison View**    | Before/after side-by-side comparison |\n| **Keyboard Shortcuts** | Quick actions with keyboard          |\n| **Progress Tracking**  | Real-time progress with ETA          |\n\n---\n\n## 🚀 Installation\n\n### Prerequisites\n\n- **Python** 3.8 or higher\n- **pip** (Python package manager)\n- **FFmpeg** (for video processing)\n- **CUDA-capable GPU** (recommended, CPU mode available)\n\n### Step 1: Clone Repository\n\n```bash\ngit clone https://github.com/LebToki/PresentaPulse.git\ncd PresentaPulse\n```\n\n### Step 2: Create Virtual Environment\n\n**Windows:**\n```batch\npython -m venv venv\nvenv\\Scripts\\activate\n```\n\n**Linux/Mac:**\n```bash\npython -m venv venv\nsource venv/bin/activate\n```\n\n### Step 3: Install Dependencies\n\n**Windows (Recommended):**\n```batch\ninstall.bat\n```\n\n**Manual:**\n```bash\npip install -r requirements.txt\n```\n\n### Step 4: Verify Setup\n\n```batch\ncheck_setup.bat\n```\n\n---\n\n## ⚡ Quick Start\n\n### Windows\n\n```batch\n# Run application\nrun.bat\n```\n\n### Manual\n\n```bash\npython app.py\n```\n\n### Access Web Interface\n\nOpen your browser and navigate to:\n```\nhttp://localhost:8080\n```\n\n---\n\n## 📦 Pretrained Models\n\n### Required Models (~2.5 GB total)\n\nDownload all models to `pretrained_weights/` directory.\n\n#### LivePortrait Models (~1.3 GB)\n\n```bash\n# Clone LivePortrait models (requires git-lfs)\ngit lfs install\ngit clone https://huggingface.co/KwaiVGI/liveportrait pretrained_weights\n```\n\n**Model Files:**\n- `liveportrait/landmark.onnx` (~50 MB)\n- `liveportrait/base_models/appearance_feature_extractor.pth` (~200 MB)\n- `liveportrait/base_models/motion_extractor.pth` (~150 MB)\n- `liveportrait/base_models/spade_generator.pth` (~400 MB)\n- `liveportrait/base_models/warping_module.pth` (~300 MB)\n- `liveportrait/retargeting_models/stitching_retargeting_module.pth` (~200 MB)\n\n#### InsightFace Models (~500 MB)\n\nIncluded in LivePortrait repository:\n- `insightface/models/buffalo_l/2d106det.onnx` (~200 MB)\n- `insightface/models/buffalo_l/det_10g.onnx` (~300 MB)\n\n#### Real-ESRGAN Models (~165 MB)\n\n| Model                            | Size   | Use Case                     | Download                                                                                                     |\n|----------------------------------|--------|------------------------------|--------------------------------------------------------------------------------------------------------------|\n| `RealESRGAN_x4plus.pth`          | ~67 MB | General purpose 4x upscaling | [Download](https://github.com/xinntao/Real-ESRGAN/releases/download/v0.1.0/RealESRGAN_x4plus.pth)            |\n| `RealESRGAN_x4plus_anime_6B.pth` | ~17 MB | Anime/illustration optimized | [Download](https://github.com/xinntao/Real-ESRGAN/releases/download/v0.2.2.4/RealESRGAN_x4plus_anime_6B.pth) |\n| `realesr-animevideov3.pth`       | ~17 MB | Anime video optimized        | [Download](https://github.com/xinntao/Real-ESRGAN/releases/download/v0.2.5.0/realesr-animevideov3.pth)       |\n| `RealESRNet_x4plus.pth`          | ~64 MB | Network-based 4x upscaling   | [Download](https://github.com/xinntao/Real-ESRGAN/releases/download/v0.1.1/RealESRNet_x4plus.pth)            |\n\n### Complete Directory Structure\n\n```\npretrained_weights/\n├── RealESRGAN_x4plus.pth                    (~67 MB)\n├── RealESRGAN_x4plus_anime_6B.pth           (~17 MB)\n├── realesr-animevideov3.pth                 (~17 MB)\n├── RealESRNet_x4plus.pth                    (~64 MB)\n│\n├── insightface/\n│   └── models/\n│       └── buffalo_l/\n│           ├── 2d106det.onnx                (~200 MB)\n│           └── det_10g.onnx                 (~300 MB)\n│\n└── liveportrait/\n    ├── landmark.onnx                        (~50 MB)\n    ├── base_models/\n    │   ├── appearance_feature_extractor.pth  (~200 MB)\n    │   ├── motion_extractor.pth              (~150 MB)\n    │   ├── spade_generator.pth              (~400 MB)\n    │   └── warping_module.pth               (~300 MB)\n    └── retargeting_models/\n        └── stitching_retargeting_module.pth  (~200 MB)\n\nTotal: ~2.5 GB\n```\n\n---\n\n## 💻 System Requirements\n\n### Minimum Requirements\n\n| Component   | Specification                            |\n|-------------|------------------------------------------|\n| **OS**      | Windows 10/11, Linux (Ubuntu 20.04+)     |\n| **CPU**     | Intel i5 / AMD Ryzen 5 (4+ cores)        |\n| **RAM**     | 8 GB                                     |\n| **GPU**     | NVIDIA GTX 1060 (6GB VRAM) or equivalent |\n| **Storage** | 10 GB free space (models + outputs)      |\n| **Python**  | 3.8+                                     |\n\n### Recommended Requirements\n\n| Component   | Specification                         |\n|-------------|---------------------------------------|\n| **OS**      | Windows 11 / Linux (Ubuntu 22.04+)    |\n| **CPU**     | Intel i7 / AMD Ryzen 7 (8+ cores)     |\n| **RAM**     | 16 GB+                                |\n| **GPU**     | NVIDIA RTX 3060 (12GB VRAM) or better |\n| **Storage** | 20 GB+ SSD (faster processing)        |\n| **Python**  | 3.10+                                 |\n\n### Optimal Performance (RTX Series)\n\n| Component   | Specification                         |\n|-------------|---------------------------------------|\n| **GPU**     | NVIDIA RTX 3070/3080/3090 (8GB+ VRAM) |\n| **RAM**     | 32 GB                                 |\n| **Storage** | NVMe SSD                              |\n| **CUDA**    | 11.8+                                 |\n| **cuDNN**   | 8.6+                                  |\n\n### Power Consumption Estimates\n\n| GPU Model       | Idle | Processing | Peak |\n|-----------------|------|------------|------|\n| GTX 1060 (6GB)  | 20W  | 120W       | 150W |\n| RTX 3060 (12GB) | 30W  | 170W       | 200W |\n| RTX 3070 (8GB)  | 25W  | 220W       | 250W |\n| RTX 3080 (10GB) | 30W  | 320W       | 350W |\n| RTX 3090 (24GB) | 50W  | 350W       | 450W |\n\n**Processing Times:**\n- **GTX 1060**: ~2-5 minutes per animation\n- **RTX 3060**: ~30-60 seconds per animation\n- **RTX 3070+**: ~15-30 seconds per animation\n\n---\n\n## 📖 Usage Guide\n\n### Basic Animation\n\n1. **Upload Image** - Select or upload a portrait image\n2. **Upload Video** - Choose a driving video with facial expressions\n3. **Configure Settings** (optional):\n   - Enable/disable relative motion\n   - Set crop and paste-back options\n   - Adjust smoothing and denoising\n4. **Click \"Generate Animation\"**\n5. **Download Result** - Get your animated portrait!\n\n### Multi-Face Processing\n\n1. Upload image with multiple faces\n2. Click **\"Detect Faces\"** button\n3. Preview shows detected faces with bounding boxes\n4. Select which faces to animate (or leave empty for all)\n5. Generate animation - each face processed individually\n\n### Aspect Ratio Customization\n\n1. Open **\"Animation Settings\"** accordion\n2. Select aspect ratio (16:9, 9:16, custom, etc.)\n3. Choose crop mode (center, face-aware, etc.)\n4. Enable \"Preserve Background\" for padding mode\n5. Generate with your preferred format\n\n### Batch Processing\n\n1. Go to **\"Batch Processing\"** tab\n2. Upload multiple images and videos\n3. Configure batch settings\n4. Click **\"Start Batch Processing\"**\n5. Download individual files or ZIP archive\n\n### Keyboard Shortcuts\n\n- `Ctrl + Enter` - Generate Animation\n- `Ctrl + R` - Refresh History Gallery\n- `Ctrl + K` - Toggle Shortcuts Panel\n- `Esc` - Close Modals/Accordions\n\n---\n\n## 🔌 API Integration\n\n### REST API Server\n\nPresentaPulse includes a REST API server for programmatic access.\n\n#### Start API Server\n\n```bash\npython api_server.py\n```\n\nThe API server runs on `http://localhost:5000` by default.\n\n### API Endpoints\n\n#### Health Check\n\n```http\nGET /api/health\n```\n\n**Response:**\n```json\n{\n  \"status\": \"healthy\",\n  \"timestamp\": \"2024-01-01T00:00:00\",\n  \"version\": \"1.0.0\"\n}\n```\n\n#### Generate Animation\n\n```http\nPOST /api/v1/generate\nHeaders:\n  X-API-Key: your_api_key\nContent-Type: application/json\n\n{\n  \"image_path\": \"path/to/image.jpg\",\n  \"video_path\": \"path/to/video.mp4\",\n  \"parameters\": {\n    \"relative_motion\": true,\n    \"do_crop\": true,\n    \"remap\": true\n  }\n}\n```\n\n**Response:**\n```json\n{\n  \"job_id\": \"abc123\",\n  \"status\": \"queued\",\n  \"estimated_time\": 60\n}\n```\n\n#### Get Job Status\n\n```http\nGET /api/v1/job/{job_id}\nHeaders:\n  X-API-Key: your_api_key\n```\n\n#### Create API Key\n\n```http\nPOST /api/v1/keys\nContent-Type: application/json\n\n{\n  \"name\": \"My Application\",\n  \"rate_limit\": 100\n}\n```\n\n#### Register Webhook\n\n```http\nPOST /api/v1/webhook\nHeaders:\n  X-API-Key: your_api_key\nContent-Type: application/json\n\n{\n  \"url\": \"https://example.com/webhook\",\n  \"events\": [\"job.completed\", \"job.failed\"]\n}\n```\n\n### Rate Limiting\n\n- Default: 1000 requests per hour per IP\n- Per-endpoint limits can be configured\n- API key-based rate limiting available\n\n### Authentication\n\nAPI keys are required for most endpoints. Include the API key in headers:\n\n```\nX-API-Key: your_api_key\n```\n\nOr as a query parameter:\n\n```\n?api_key=your_api_key\n```\n\n---\n\n## ⚡ Performance Optimization\n\n### GPU Memory Management\n\n- Automatic cache clearing\n- Memory usage monitoring\n- Low-memory mode for weaker GPUs\n\n### Enable Low-Memory Mode\n\nSet environment variable:\n```bash\nexport LOW_MEMORY_MODE=true\n```\n\nOr toggle in UI: **Performance \u0026 System Info** → **Low Memory Mode**\n\n### Batch Processing Tips\n\n- Process multiple items in queue\n- Automatic resource management\n- Progress tracking per item\n\n### Multi-GPU Support\n\n- Automatic GPU detection\n- Load balancing\n- Device selection in UI\n\n---\n\n## 🛠️ Troubleshooting\n\n### Common Issues\n\n#### Import Errors\n\n**Problem:** `Import \"src.utils.helper\" could not be resolved`\n\n**Solution:** Clone LivePortrait repository and copy `src/` directory:\n```bash\ngit clone https://github.com/KwaiVGI/LivePortrait.git\ncp -r LivePortrait/src PresentaPulse/src\n```\n\n#### CUDA Out of Memory\n\n**Solution:** Enable low-memory mode or reduce batch size\n\n#### FFmpeg Not Found\n\n**Solution:** Install FFmpeg and ensure it's in PATH:\n- Windows: Download from [ffmpeg.org](https://ffmpeg.org/download.html)\n- Linux: `sudo apt-get install ffmpeg`\n- Mac: `brew install ffmpeg`\n\n#### Models Not Found\n\n**Solution:** Download models to `pretrained_weights/` directory (see [Pretrained Models](#-pretrained-models))\n\n### Getting Help\n\n- Check [SETUP.md](SETUP.md) for detailed setup instructions\n- Review [ENHANCEMENTS.md](ENHANCEMENTS.md) for feature documentation\n- Open an issue on GitHub for bugs or feature requests\n\n---\n\n## 📚 Documentation\n\n### Additional Documentation Files\n\n- **[SETUP.md](SETUP.md)** - Detailed setup instructions\n- **[ENHANCEMENTS.md](ENHANCEMENTS.md)** - Complete feature roadmap\n- **[CHANGELOG.md](CHANGELOG.md)** - Version history\n- **[ENHANCEMENTS_SUMMARY.md](ENHANCEMENTS_SUMMARY.md)** - Quick feature reference\n- **[FEATURES_COMPLETE.md](FEATURES_COMPLETE.md)** - Completed features list\n\n---\n\n## 🤝 Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.\n\n### Contribution Guidelines\n\n1. Fork the repository\n2. Create your feature branch (`git checkout -b feature/AmazingFeature`)\n3. Commit your changes (`git commit -m 'Add some AmazingFeature'`)\n4. Push to the branch (`git push origin feature/AmazingFeature`)\n5. Open a Pull Request\n\n### Code Style\n\n- Follow PEP 8 Python style guide\n- Add docstrings to functions and classes\n- Include type hints where possible\n- Write clear commit messages\n\n---\n\n## 🙏 Acknowledgements\n\nSpecial thanks to the creators of:\n\n- **[LivePortrait](https://github.com/KwaiVGI/LivePortrait)** - Core animation technology\n- **[Real-ESRGAN](https://github.com/xinntao/Real-ESRGAN)** - Video enhancement\n- **[InsightFace](https://github.com/deepinsight/insightface)** - Face detection\n- **[Gradio](https://gradio.app/)** - Web interface framework\n\n---\n\n## 📄 License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n---\n\n## 👤 Author\n\n**Tarek Tarabichi**  \n[2TInteractive](https://2tinteractive.com)\n\n---\n\n## 🌟 Show Your Support\n\nIf you find this project useful, please consider:\n\n- ⭐ **Starring** the repository\n- 🐛 **Reporting** bugs\n- 💡 **Suggesting** new features\n- 📢 **Sharing** with others\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\n**Made with ❤️ by [2TInteractive](https://2tinteractive.com)**\n\n[Website](https://2tinteractive.com) • [GitHub](https://github.com/LebToki) • [Issues](https://github.com/LebToki/PresentaPulse/issues)\n\n---\n\n*Last Updated: November 20th, 2025*\n\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flebtoki%2Fpresentapulse","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flebtoki%2Fpresentapulse","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flebtoki%2Fpresentapulse/lists"}