├── .gitignore ├── README.md ├── app ├── __init__.py ├── config.py ├── db.py ├── handlers.py ├── indexing │ ├── __init__.py │ ├── client.py │ └── schemas.py ├── main.py ├── playlists │ ├── __init__.py │ ├── models.py │ ├── routers.py │ └── schemas.py ├── shortcuts.py ├── templates │ ├── account.html │ ├── auth │ │ ├── login.html │ │ ├── logout.html │ │ └── signup.html │ ├── base.html │ ├── dashboard.html │ ├── errors │ │ ├── 404.html │ │ └── main.html │ ├── home.html │ ├── playlists │ │ ├── create.html │ │ ├── delete.html │ │ ├── detail.html │ │ ├── htmx │ │ │ └── add-video.html │ │ ├── list.html │ │ └── sidebar.html │ ├── search │ │ ├── detail.html │ │ └── search_form.html │ ├── snippets │ │ ├── form_errors.html │ │ └── nav.html │ └── videos │ │ ├── create.html │ │ ├── delete.html │ │ ├── detail.html │ │ ├── edit.html │ │ ├── htmx │ │ ├── create.html │ │ ├── edit.html │ │ ├── link.html │ │ └── list-inline.html │ │ ├── list.html │ │ ├── renderers │ │ └── youtube.html │ │ └── sidebar.html ├── tests │ ├── __init__.py │ └── test_users.py ├── users │ ├── __init__.py │ ├── auth.py │ ├── backends.py │ ├── decorators.py │ ├── exceptions.py │ ├── models.py │ ├── schemas.py │ ├── security.py │ └── validators.py ├── utils.py ├── videos │ ├── __init__.py │ ├── exceptions.py │ ├── extractors.py │ ├── models.py │ ├── routers.py │ └── schemas.py └── watch_events │ ├── __init__.py │ ├── models.py │ ├── routers.py │ └── schemas.py ├── commands.md ├── nbs ├── Drop Database Table.ipynb ├── Experiment with JWT Tokens.ipynb ├── Playlist Tests.ipynb ├── Prepare Search Index.ipynb ├── User Data Validation with pydantic.ipynb ├── Users & Analyze Features.ipynb └── Video Add Tests.ipynb ├── notes.md ├── pytest.ini ├── pyvenv.cfg ├── requirements.dev.txt ├── requirements.txt └── video-membership.code-workspace /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingforentrepreneurs/video-membership/HEAD/.gitignore -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingforentrepreneurs/video-membership/HEAD/README.md -------------------------------------------------------------------------------- /app/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/config.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingforentrepreneurs/video-membership/HEAD/app/config.py -------------------------------------------------------------------------------- /app/db.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingforentrepreneurs/video-membership/HEAD/app/db.py -------------------------------------------------------------------------------- /app/handlers.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingforentrepreneurs/video-membership/HEAD/app/handlers.py -------------------------------------------------------------------------------- /app/indexing/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/indexing/client.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingforentrepreneurs/video-membership/HEAD/app/indexing/client.py -------------------------------------------------------------------------------- /app/indexing/schemas.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingforentrepreneurs/video-membership/HEAD/app/indexing/schemas.py -------------------------------------------------------------------------------- /app/main.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingforentrepreneurs/video-membership/HEAD/app/main.py -------------------------------------------------------------------------------- /app/playlists/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/playlists/models.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingforentrepreneurs/video-membership/HEAD/app/playlists/models.py -------------------------------------------------------------------------------- /app/playlists/routers.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingforentrepreneurs/video-membership/HEAD/app/playlists/routers.py -------------------------------------------------------------------------------- /app/playlists/schemas.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingforentrepreneurs/video-membership/HEAD/app/playlists/schemas.py -------------------------------------------------------------------------------- /app/shortcuts.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingforentrepreneurs/video-membership/HEAD/app/shortcuts.py -------------------------------------------------------------------------------- /app/templates/account.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingforentrepreneurs/video-membership/HEAD/app/templates/account.html -------------------------------------------------------------------------------- /app/templates/auth/login.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingforentrepreneurs/video-membership/HEAD/app/templates/auth/login.html -------------------------------------------------------------------------------- /app/templates/auth/logout.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingforentrepreneurs/video-membership/HEAD/app/templates/auth/logout.html -------------------------------------------------------------------------------- /app/templates/auth/signup.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingforentrepreneurs/video-membership/HEAD/app/templates/auth/signup.html -------------------------------------------------------------------------------- /app/templates/base.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingforentrepreneurs/video-membership/HEAD/app/templates/base.html -------------------------------------------------------------------------------- /app/templates/dashboard.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingforentrepreneurs/video-membership/HEAD/app/templates/dashboard.html -------------------------------------------------------------------------------- /app/templates/errors/404.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingforentrepreneurs/video-membership/HEAD/app/templates/errors/404.html -------------------------------------------------------------------------------- /app/templates/errors/main.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingforentrepreneurs/video-membership/HEAD/app/templates/errors/main.html -------------------------------------------------------------------------------- /app/templates/home.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingforentrepreneurs/video-membership/HEAD/app/templates/home.html -------------------------------------------------------------------------------- /app/templates/playlists/create.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingforentrepreneurs/video-membership/HEAD/app/templates/playlists/create.html -------------------------------------------------------------------------------- /app/templates/playlists/delete.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/templates/playlists/detail.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingforentrepreneurs/video-membership/HEAD/app/templates/playlists/detail.html -------------------------------------------------------------------------------- /app/templates/playlists/htmx/add-video.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingforentrepreneurs/video-membership/HEAD/app/templates/playlists/htmx/add-video.html -------------------------------------------------------------------------------- /app/templates/playlists/list.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingforentrepreneurs/video-membership/HEAD/app/templates/playlists/list.html -------------------------------------------------------------------------------- /app/templates/playlists/sidebar.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingforentrepreneurs/video-membership/HEAD/app/templates/playlists/sidebar.html -------------------------------------------------------------------------------- /app/templates/search/detail.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingforentrepreneurs/video-membership/HEAD/app/templates/search/detail.html -------------------------------------------------------------------------------- /app/templates/search/search_form.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingforentrepreneurs/video-membership/HEAD/app/templates/search/search_form.html -------------------------------------------------------------------------------- /app/templates/snippets/form_errors.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingforentrepreneurs/video-membership/HEAD/app/templates/snippets/form_errors.html -------------------------------------------------------------------------------- /app/templates/snippets/nav.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingforentrepreneurs/video-membership/HEAD/app/templates/snippets/nav.html -------------------------------------------------------------------------------- /app/templates/videos/create.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingforentrepreneurs/video-membership/HEAD/app/templates/videos/create.html -------------------------------------------------------------------------------- /app/templates/videos/delete.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/templates/videos/detail.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingforentrepreneurs/video-membership/HEAD/app/templates/videos/detail.html -------------------------------------------------------------------------------- /app/templates/videos/edit.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingforentrepreneurs/video-membership/HEAD/app/templates/videos/edit.html -------------------------------------------------------------------------------- /app/templates/videos/htmx/create.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingforentrepreneurs/video-membership/HEAD/app/templates/videos/htmx/create.html -------------------------------------------------------------------------------- /app/templates/videos/htmx/edit.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingforentrepreneurs/video-membership/HEAD/app/templates/videos/htmx/edit.html -------------------------------------------------------------------------------- /app/templates/videos/htmx/link.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingforentrepreneurs/video-membership/HEAD/app/templates/videos/htmx/link.html -------------------------------------------------------------------------------- /app/templates/videos/htmx/list-inline.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingforentrepreneurs/video-membership/HEAD/app/templates/videos/htmx/list-inline.html -------------------------------------------------------------------------------- /app/templates/videos/list.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingforentrepreneurs/video-membership/HEAD/app/templates/videos/list.html -------------------------------------------------------------------------------- /app/templates/videos/renderers/youtube.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingforentrepreneurs/video-membership/HEAD/app/templates/videos/renderers/youtube.html -------------------------------------------------------------------------------- /app/templates/videos/sidebar.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingforentrepreneurs/video-membership/HEAD/app/templates/videos/sidebar.html -------------------------------------------------------------------------------- /app/tests/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/tests/test_users.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingforentrepreneurs/video-membership/HEAD/app/tests/test_users.py -------------------------------------------------------------------------------- /app/users/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/users/auth.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingforentrepreneurs/video-membership/HEAD/app/users/auth.py -------------------------------------------------------------------------------- /app/users/backends.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingforentrepreneurs/video-membership/HEAD/app/users/backends.py -------------------------------------------------------------------------------- /app/users/decorators.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingforentrepreneurs/video-membership/HEAD/app/users/decorators.py -------------------------------------------------------------------------------- /app/users/exceptions.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingforentrepreneurs/video-membership/HEAD/app/users/exceptions.py -------------------------------------------------------------------------------- /app/users/models.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingforentrepreneurs/video-membership/HEAD/app/users/models.py -------------------------------------------------------------------------------- /app/users/schemas.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingforentrepreneurs/video-membership/HEAD/app/users/schemas.py -------------------------------------------------------------------------------- /app/users/security.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingforentrepreneurs/video-membership/HEAD/app/users/security.py -------------------------------------------------------------------------------- /app/users/validators.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingforentrepreneurs/video-membership/HEAD/app/users/validators.py -------------------------------------------------------------------------------- /app/utils.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingforentrepreneurs/video-membership/HEAD/app/utils.py -------------------------------------------------------------------------------- /app/videos/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/videos/exceptions.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingforentrepreneurs/video-membership/HEAD/app/videos/exceptions.py -------------------------------------------------------------------------------- /app/videos/extractors.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingforentrepreneurs/video-membership/HEAD/app/videos/extractors.py -------------------------------------------------------------------------------- /app/videos/models.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingforentrepreneurs/video-membership/HEAD/app/videos/models.py -------------------------------------------------------------------------------- /app/videos/routers.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingforentrepreneurs/video-membership/HEAD/app/videos/routers.py -------------------------------------------------------------------------------- /app/videos/schemas.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingforentrepreneurs/video-membership/HEAD/app/videos/schemas.py -------------------------------------------------------------------------------- /app/watch_events/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/watch_events/models.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingforentrepreneurs/video-membership/HEAD/app/watch_events/models.py -------------------------------------------------------------------------------- /app/watch_events/routers.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingforentrepreneurs/video-membership/HEAD/app/watch_events/routers.py -------------------------------------------------------------------------------- /app/watch_events/schemas.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingforentrepreneurs/video-membership/HEAD/app/watch_events/schemas.py -------------------------------------------------------------------------------- /commands.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingforentrepreneurs/video-membership/HEAD/commands.md -------------------------------------------------------------------------------- /nbs/Drop Database Table.ipynb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingforentrepreneurs/video-membership/HEAD/nbs/Drop Database Table.ipynb -------------------------------------------------------------------------------- /nbs/Experiment with JWT Tokens.ipynb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingforentrepreneurs/video-membership/HEAD/nbs/Experiment with JWT Tokens.ipynb -------------------------------------------------------------------------------- /nbs/Playlist Tests.ipynb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingforentrepreneurs/video-membership/HEAD/nbs/Playlist Tests.ipynb -------------------------------------------------------------------------------- /nbs/Prepare Search Index.ipynb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingforentrepreneurs/video-membership/HEAD/nbs/Prepare Search Index.ipynb -------------------------------------------------------------------------------- /nbs/User Data Validation with pydantic.ipynb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingforentrepreneurs/video-membership/HEAD/nbs/User Data Validation with pydantic.ipynb -------------------------------------------------------------------------------- /nbs/Users & Analyze Features.ipynb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingforentrepreneurs/video-membership/HEAD/nbs/Users & Analyze Features.ipynb -------------------------------------------------------------------------------- /nbs/Video Add Tests.ipynb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingforentrepreneurs/video-membership/HEAD/nbs/Video Add Tests.ipynb -------------------------------------------------------------------------------- /notes.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingforentrepreneurs/video-membership/HEAD/notes.md -------------------------------------------------------------------------------- /pytest.ini: -------------------------------------------------------------------------------- 1 | [pytest] 2 | norecursedirs = lib/* bin/* include/* -------------------------------------------------------------------------------- /pyvenv.cfg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingforentrepreneurs/video-membership/HEAD/pyvenv.cfg -------------------------------------------------------------------------------- /requirements.dev.txt: -------------------------------------------------------------------------------- 1 | jupyter -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingforentrepreneurs/video-membership/HEAD/requirements.txt -------------------------------------------------------------------------------- /video-membership.code-workspace: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingforentrepreneurs/video-membership/HEAD/video-membership.code-workspace --------------------------------------------------------------------------------