👩💻 Please note that this project currently serves multiple purposes 👨💻
- The original purpose of generating a Spotify playlist that lists all "highlights" of the week of my personal favourite music website Plattentests.de.
- The purpose of getting to know more about serverless, Azure functions, and Azure Container Apps
- A playground for features like
- Codespaces & devcontainers,
- GitHub actions,
- GitHub Copilot and other features of GitHub.
Therefore, some commit messages might not be useful at the moment :)
💡 For your own convenience, make use of Codespaces or run it locally as devcontainer.
There is a Makefile
with multiple targets to be used.
ENV
variables set in a .env
file.
-
To create a token and store it in Azure:
make token
-
To run the project locally as Go binary:
make run
-
To run the project locally as a function:
make run-function
-
To run the web-frontend of the project (located in
./webui
):make web
You can also run the project as a Docker container.
- Azure Function:
docker build -t plattentests-go . docker run -p 8080:8080 plattentests-go
- Web Frontend (make sure it points to the correct function URL)
cd webui docker build -t plattentests-go-web . docker run -p 8081:8081 plattentests-go-web
sequenceDiagram
actor User
participant ACA as Azure Container App (Web UI)
participant Function as Azure Function
participant Plattentests as Plattentests.de Website
User->>ACA: get request
ACA->>Function: get records
Function->>Function: update token
Function->>Plattentests: get records
Plattentests->>Function: records
Function->>ACA: records
ACA->>User: records
sequenceDiagram
actor User
participant ACA as Azure Container App (Web UI)
participant Function as Azure Function
participant Plattentests as Plattentests.de Website
participant Spotify
User->>ACA: create playlist (id)
ACA->>Function: create playlist
Function->>Function: update token
Function->>Plattentests: get records
Plattentests->>Function: records
loop for each record
Function->>Spotify: search record
Spotify->>Function: record
Function->>Spotify: add record to playlist
end
Function->>ACA: records
ACA->>User: records