Skip to content

YoutubeLinks allow users to save YouTube links as playlists. Users are able to download mp3 files from the playlists they create. Project created as part of the "100 Commits" competition.

FritzTheCat9/YoutubeLinks

Repository files navigation

YoutubeLinks

The YoutubeLinks application allow users to save YouTube links as playlists.
Users are able to download mp3 files from the playlists they create.
Downloading playlist links as mp3 files tested on more than 1000 links.

Youtube video presentation:

Youtube Video

Max downloaded mp3 file:

  • length - 03:31:45
  • size - 391 MB

Max downloaded mp4 file:

  • length - 25:44
  • size - 973 MB

Larger files not tested or can not work correctly.

Table of contents

Launch

Run application with one command (setup all docker containers, create database, apply migrations):

cd C:\Users\bartl\source\repos\YoutubeLinks
docker compose up --build -d

Created containers:

  • C# Web API backend:
http://localhost:5000
  • Blazor WASM frontend:
http://localhost:7000
  • MSSQL database:
Host: localhost 
Port: 1433 
Database/Schema: YoutubeLinks
Username: sa
Password: Password1!
Server: youtubelinks.database
  • Seq Api logs:
http://localhost:8081

Login credentials:

Admin:
- Email: ytlinksapp@gmail.com
- Password: Asd123!
User:
- Email: ytlinksapp1@gmail.com
- Password: Asd123!

If You have any problems check issue below or ask me in github issues: #52

Presentation

Users view: Users image

Playlists view: Playlists image

Links view: Links image

Links grid view: Links grid image

Download playlist view: Download playlists image

Technologies

  • C# 12
  • .NET 8.0
  • Blazor WebAssembly
  • Vue 3.4.21

Architecture

Blazor WebAssembly frontend with .NET Minimal API backend connecting to the MSSQL database. Monolithic architecture with Vertical Slices. Code separated by feature.

Project types and references

  • YoutubeLinks.Api - ASP .NET Core Web API (Backend)
  • YoutubeLinks.Blazor - Blazor WebAssembly Standalone App (Frontend)
  • YoutubeLinks.Shared - Class Library (Backend and Frontend shared code)
  • YoutubeLinks.UnitTests - xUnit Test Project (Unit Tests)
  • youtube-links - Vue Project (Frontend 2)

Packages

Nuget packages and libraries used in projects.

Features

  • Users
    • Register new user and send confirmation email
    • Resend confirmation email
    • Confirm user registration and send registration success email
    • Login user if email is confirmed
    • Refresh Jwt Token
    • Forgot password
    • Update user color theme
    • Get all users (paginated, sorted and filtered)
    • Get selected user
  • Playlist
    • Create playlist
    • Delete playlist
    • Update playlist (set playlist as public / private)
    • Export playlist (.json, .txt)
    • Import playlist (.json, .txt)
    • Download playlist (only undownloaded links)
    • Mark all playlist links as downloaded / undownloaded
    • Get all public playlists (paginated, sorted and filtered)
    • Get all user playlists (paginated, sorted and filtered)
    • Get selected playlist
  • Link
    • Create link
    • Delete link
    • Update link (mark as downloaded, change title)
    • Download link (.mp3, .mp4)
    • Download single link (no need to add link to the playlist)
    • Get all playlist links (paginated, sorted and filtered)
    • Get selected link
    • Links grid / table view

Roles

  • Admin - ony one user have Admin role
  • User - can view website data, can do CRUD operations on owned playlists and links
  • Anonymous - can view website data (public playlists / links)

Project status

Project created as part of the "100 Commits" competition. The challenge is to add changes to the repository every day for 100 days.