Skip to content

Latest commit

 

History

History
202 lines (155 loc) · 6.35 KB

README.md

File metadata and controls

202 lines (155 loc) · 6.35 KB

YoutubeLinks

I achieved 8th place in the "100 Commits" competition organized by DevMentors. Over 100 days, I developed the "YoutubeLinks" application, which allows users to create playlists from YouTube links and download those playlists as MP3 and MP4 files.

Downloading playlists as MP3 and MP4 files, tested successfully on over 3000 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: [email protected]
- Password: Asd123!
User:
- Email: [email protected]
- 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 9.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)
  • YoutubeLinks.E2E - NUnit Test Project (E2E 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)
    • Set link downloaded flag
    • 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.

100 Commits results image

I achieved 8th place in the "100 Commits" competition organized by "DevMentors.io". Over 100 days, I developed the "YoutubeLinks" application, which allows users to create playlists from YouTube links and download those playlists as MP3 and MP4 files.

100 Commits results photo image

This project was a significant adventure that taught me perseverance and systematic work to achieve my project goals within the given timeframe. The "100 Commits" gala was a fantastic event, well-organized with engaging talks. I look forward to a potential second edition of the competition in the future.