A full-stack Flask web application to manage your personal YouTube video library.
Users can add, update, view, and delete videos with details like title, duration, and URL.
VidVault provides a clean interface and RESTful backend — perfect for organizing your YouTube watchlist.
https://video-sphere.onrender.com/
- 📜 List all videos
- 🔍 View single video details
- ➕ Add new videos
- ✏️ Update existing videos
- ❌ Delete videos
- 🧱 RESTful API endpoints for Postman testing
- 💾 SQLite (local) / PostgreSQL (cloud) database support
- 🌐 Responsive UI using HTML, CSS, and JavaScript
- ☁️ Deployable on Render
Backend: Flask, SQLAlchemy, Flask-Migrate
Frontend: HTML, CSS, JavaScript, Jinja2 Templates
Database: SQLite (Development), PostgreSQL (Production)
Deployment: Render
Root layout (actual):
DockerFile
requirements.txt
README.md
src/
├─ manager.py # application entry (run with `python -m src.manager`)
└─ app/
├─ __init__.py # Flask app factory
├─ api.py # API endpoints
├─ config.py # configuration
├─ extensions.py # DB, migrations, other extensions
├─ forms.py # Flask-WTF forms
├─ models.py # SQLAlchemy models
├─ routes.py # web routes (views)
└─ templates/ # Jinja2 templates
static/
├─ css/
│ └─ styles.css
└─ js/
└─ main.js
Notes:
- Static assets live at the repository root under
static/. - Application code is under
src/and the app package issrc.app.
Minimum prerequisites
- Python 3.8+ (3.10+ recommended)
- pip
- (optional) Docker if you want to build the container locally
- Clone the repository
git clone https://github.com/kumarBisho/Video-Sphere.git
cd "YouTube_Manager"- Create & activate a virtual environment (PowerShell)
python -m venv .venv
# PowerShell (recommended)
. .\.venv\Scripts\Activate.ps1
# If you get an execution policy error, run (temporary for the session):
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process
. .\.venv\Scripts\Activate.ps1- Install Python dependencies
pip install --upgrade pip
pip install -r requirements.txt- Environment variables (example)
Set these in your shell or create a .env if you use python-dotenv.
$env:FLASK_APP = 'src.manager'
$env:FLASK_ENV = 'development'
# Example DB URL (SQLite file in project root)
$env:DATABASE_URL = "sqlite:///./dev.db"- Initialize database (if using Flask-Migrate)
# only if Flask-Migrate is used in the project
flask db init # only first time
flask db migrate -m "Initial"
flask db upgrade- Run the application
# recommended: run via module so package imports work reliably
python -m src.manager
# OR (if manager.py is executable)
python src\manager.pyThe app should be available at http://127.0.0.1:5000/ unless configured otherwise.
Build the image using the repository DockerFile and run locally:
docker build -f DockerFile -t yourname/video-sphere:latest .
docker run -p 5000:5000 yourname/video-sphere:latestTo push to GitHub Container Registry (GHCR):
# tag and push (after logging in with a PAT if needed)
docker tag yourname/video-sphere:latest ghcr.io/<owner>/video-sphere:latest
docker push ghcr.io/<owner>/video-sphere:latestNote: A GitHub Actions workflow was added to build and push images automatically (see .github/workflows/docker-build-push.yml).
- Virtual env activation fails in PowerShell: run
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Processthen activate. - If imports fail, prefer running the app with
python -m src.managerfrom the repository root. - If database migrations are missing, re-run
flask db migrateandflask db upgrade.
If you want I can also:
- Add an example
.env.examplefile with common environment variables - Add a Makefile or PowerShell script to automate setup
- Update the GitHub Actions workflow to publish to Docker Hub instead of GHCR
Integrate YouTube API for auto metadata Add private or public section for uploading video
B.K. Yadav 🚀 Full Stack Developer | Flask | React | PostgreSQL kumarbisho02@gmail.com https://www.linkedin.com/in/bisho-kumar-9485a126a/