Code Monkey home page Code Monkey logo

clipify's People

Contributors

mikyan0207 avatar

Stargazers

 avatar

Watchers

 avatar  avatar

clipify's Issues

1- Setup

  • install Visual Studio Community 2019
  • grab a Resharper licence (student)
  • install Postman
  • install Docker
  • Create an account on Docker hub
  • intall Linqpad

Setup Hexagonal Architecture

Use Mediatr to have a clear separation between Webapp and Application.
Setup Projects dependencies

Move the "WeatherForecast" data provider to the infrastructure

2- Create a whole new solution

  • Create an empty solution "clipify.sln"
  • Add solutions folders : "\source" "\tests" "\docs" "\samples" "\solution items"
  • Add a Blazor Server Application named "Clipify.Web" to the source folder
  • Add the CodeOwners file

The default site should be running fine on execution

Create a copy of a playlist

Create new playlist with the same name as the original + something to distinguish it like " - fork" or "- copy"
If possible : move the original playlist into a folder named "originals"

Save in DB the link between original and fork

Create and update the Readme

A good project has a good readme!

Add the readme file to the repository root, and complete it with the following informations :

Description

CI/CD
Deployed url (docker hub)

Architecture
Used technologies

How to run locally

How to open an issue

Release process

List User's Playlist

Create a new page that displays all the users playlist, with their Ids, and the version

  • Update the authentication scope to display user's playlists

Compare User playlist version

Add a button on the playlist page to compare user's playlist version with the ones in DB. Playlists should marked as outdated on the page.

Updated playlists should be available in an Observable List

6- Create solution projects, and add them to the docker file

Add the following projects to the solution (as library)

  • Clipify.Domain
  • Clipify.Application
  • Clipify.Infrastructure

Update the DockerFile accordingly

Add the following projects to the solution as unittests with xUnit

  • Clipify.Domain.UnitTests
  • Clipify.Application.UnitTests

All csproj should be :

  • Targeting .netCore 3.1 or 5.0
  • Handlinging Nullable
  • Using C# 8.0 or C#9.0

Running the solution should rise multiple warnings. This should be fixed, we want 0 warning for now

Refresh Authentication Token

Create a button on the login page that will refresh the authentication token on click

  • get the refresh Token
  • sends it to spotify api
  • gets updated token
  • stores it in DB

Setup serilog

And add logging : on errors, and everytime a quartz task runs

  • Console dans VS
  • Console qui s'ouvre au run de l'app
  • sauvegarde dans un fichier de log journalisé
  • réglage du niveau de log à Info dans les consoles
  • Error dans le fichier

Display user informations

On the login page, when signed in, display basic user information

  • update the auth request and add a scope to it (token will then allow to access user info)
  • call spotify api to get user info
  • display user info in the page

4- Create Ci

  • Create a github action workflow that build and test the app on each push, on the main branch and on feature/**

Authorization on page

A user shouldn't have access to a page if he's not logged into spotify.

  • Move User Information to a new page
  • This page should be visible only if the user is logged in.
  • Otherwise reroute to login page.

Note : we need a way to handle user login status. Could just be Auth Token in local storage

5- Publish Docker image to Docker hub

  • on Github, define 2 secrets and fill them with the Docker Hub Credentials
    DOCKERHUB_PASSWORD
    DOCKERHUB_USERNAME

Password is a new PAT from DockerHub (ask for it)
Username is clipify

  • Create a new github workflow named docker-publish
  • test the workflow : the docker image should be published on docker hub and public

3- Dockerize the application

  • Using Visual Studio, add a Dockerfile to the Blazor application
  • Add the volumes to DockerFile :
    VOLUME /config /data
  • in the csproj, add the following :

<PropertyGroup> <DockerfileRunArguments>-v "C:\Docker\Clipify\data:/data" -v "C:\Docker\Clipify\config:/config"</DockerfileRunArguments> </PropertyGroup>

Logout

Add a logout button to the login page

  • delete tokens from DB
  • delete tokens from local storage

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.