Skip to content

Latest commit

 

History

History
177 lines (128 loc) · 4.73 KB

README.md

File metadata and controls

177 lines (128 loc) · 4.73 KB


veems

An open-source platform for online video.

The code powering https://veems.tv. A next generation video sharing platform, with freedom of speech values.

https://github.com/VeemsHQ/veems/workflows/Tests/badge.svg Maintainability

Stay in touch

Contributing

We're actively looking for help with both frontend and backend development.

Join us on Discord if you're interested in being involved.

https://i.imgur.com/Ujf8Ti8.png

Screenshots

A preview of what we're building.

Further design materials can be found here.

https://i.imgur.com/pkrQgzE.png

https://i.imgur.com/ZMJYNvl.png

https://i.imgur.com/VGC6FQj.png

Feature Roadmap

In order of priority.

Alpha Release

  • Uploading, transcoding of content, playlist video packaging (backend ✅, frontend ✅).
  • Playback of video content (backend ✅, frontend ✅).
  • User & API authentication (backend ✅, frontend ✅).
  • Creation of "Channels" (backend ✅, frontend ✅).
  • Homepage video listings ✅.
  • Search function ✅.
  • Channel Manager (basics).
    • Video Management (backend ✅, frontend ⏳).
    • Channel customisation (backend ✅, frontend ⏳).
  • Like/dislike videos (backend ✅, frontend ✅).
  • Related videos suggestions, Video playback page.
  • Sync channel(s) content from YT to Veems automatically.
    • Channel Dashboard, sync configuration.
    • Background sync process.
    • Related user notifications.
  • Video view metrics.
  • Follow (Subscribe to) a Channel.
  • User notifications.
    • Email notifications.
  • Moderation
    • Ability to report content.
    • Moderation queue in Admin with actions.
    • Content error pages if unavailable due to moderation.
    • IP logging.
    • DMCA submission form.

Beta Release

  • Video comments.
  • Video responses.
  • Video categories pages.
    • Sport
    • Comedy
    • etc
  • Trending videos.
    • Trending algorithm.
    • Trending section on Homepage.
  • User notifications.
    • UI notifications.
  • Live streaming.
  • User controlled content hiding. (e.g. Don't show me any cat videos).
  • User Badges (earned by performing actions on the platform).
  • Monetization.
    • Revenue share from Premium user accounts.
    • Banner ads.
    • Pre-roll video player ads.
    • Video view validation.
  • Embeddable video player.

This section is work-in-progress, more to be added shortly.

Installation

First install OS dependencies, ffmpeg and ffprobe. You will also need Docker.

Linux:

sudo apt update
sudo apt install ffmpeg
ffmpeg -version

Mac:

brew install ffmpeg

From within a Python 3.6+ virtualenv (we recommend using pyenv to manage your virtualenvs).

make install

Set of the required environment variables for the application, see .env.template for examples. A few of the secrets relating to the hosting provider (ACCESS_KEY_ID, SECRET_ACCESS_KEY) you may need to request values for.

Running the tests

Start up the supporting docker containers (RabbitMQ, Postgres, Localstack). Then run the tests.

make start-deps
make test

Usage

Running the webserver

make start-deps
python manage.py collectstatic --noinput
python manage.py migrate --noinput
python manage.py runserver

Via docker:

make run

Then visit http://localhost:8000/

Importing seed data

make reset

Running the background Celery workers

./celeryworker-entrypoint.sh
./celerybeat-entrypoint.sh

Architectural Concepts

  • Channel -- a Channel containing many Videos.
    • Upload -- a raw video file upload into the system
      • Video -- a video, which you can view via the website
        • Video Rendition -- a version of the Video file at a specific resolution, bitrate, etc. e.g. 1080p
          • Video Rendition Segment -- a small chunk of the Video Rendition video file to be served to the video player
          • Video Rendition Thumbnail -- a thumbnail at a certain timestamp within the Video Rendition video file