Skip to content

Commit

Permalink
upload project
Browse files Browse the repository at this point in the history
  • Loading branch information
avictormorais committed Apr 13, 2024
1 parent f26fb7f commit 04737a8
Show file tree
Hide file tree
Showing 14 changed files with 1,874 additions and 0 deletions.
42 changes: 42 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
<p align="center">
<img width="150" height="150" src="https://avictormorais.github.io/posterfy/styles/logo.png">
</p>

<h1 align="center">Posterfy</h1>

<h3 align="left">🔭 Overview</h3>

Posterfy is a web application that allows users to create posters for their favorite albums using data and images from Spotify's free API. Users can search for albums, select one, and Posterfy will gather the necessary information and organize it visually using the HTML canvas element. The project is open source and does not generate any revenue. All rights to images and information belong to Spotify and the respective artists.

<h3 align="left">📷 Possible results</h3>

![Screenshot](https://avictormorais.github.io/posterfy/styles/albuns.png)

<h3 align="left">👾 API's and tools used</h3>

- **[Spotify API](https://developer.spotify.com/)**: Search and get albums infos.

- **[HTML Canvas](https://developer.mozilla.org/docs/Web/API/Canvas_API/Tutorial)**: Organize all infos into a image using Javascript.

<h3 align="left">🔧 How it Works</h3>

```bash
1️⃣ Search for Album: Users enter the name of the album they want to create a poster for.
2️⃣ Select Album: Posterfy presents the search results, and users can select the desired album.
3️⃣ Data Gathering: Once an album is selected, Posterfy gathers data and images from Spotify's API.
4️⃣ Visual Organization: Posterfy organizes the data visually using the HTML canvas element.
5️⃣ Poster Generation: The organized data is used to generate a rendered image of the canvas.
```
<h3 align="left">⚡ Use it!</h3>
You can access the Posterfy project live on GitHub Pages [here](https://avictormorais.github.io/posterfy/).
<h3 align="left">📕 - Disclaimer</h3>
- **🛡️ Non-profit** - This project is made for educational and non-commercial purposes. All rights to images and information belong to Spotify and the respective artists.
- **🪚 Contributing** - Contributions are welcome! Feel free to submit bug reports, feature requests, translation to your language, or pull requests.
## License
This project is licensed under the MIT License.
176 changes: 176 additions & 0 deletions index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,176 @@
<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Posterfy</title>
<link rel="stylesheet" href="styles/style.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/lottie-web/5.12.2/lottie.min.js" integrity="sha512-jEnuDt6jfecCjthQAJ+ed0MTVA++5ZKmlUcmDGBv2vUI/REn6FuIdixLNnQT+vKusE2hhTk2is3cFvv5wA+Sgg==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css" integrity="sha512-DTOQO9RWCH3ppGqcWaEA1BIZOC6xxalwEsw9c2QQeAIftl+Vegovlnee1c9QX4TctnWMn13TZye+giMm8e2LwA==" crossorigin="anonymous" referrerpolicy="no-referrer" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/color-thief/2.3.0/color-thief.umd.js"></script>
<script src="index.js"></script>
<link rel="shortcut icon" href="styles/icon.png" type="image/x-icon">
</head>
<header>
<img src="styles/logo.png" id="logoheader" alt="">
<h1>Posterfy</h1>
<img src="styles/br.svg" id="bandeira" alt="">
</header>
<body>
<section id="inicio">
<img src="styles/albuns.png" alt="">
<h2 id="welcome">Turn your passion for music into <span id="welcomeSpan">art</span>!</h2>
</section>
<section id="criacao">
<div id="inicioCriacao">
<h1 id="title">Create your own <span> Posterfy</span>!</h1>
<h2 id="instrucao">To begin, enter the name of the album you want to create your poster, then you can edit it as you wish.</h2>
<div id="buscaDiv">
<i class="fa-solid fa-magnifying-glass"></i>
<input type="text" placeholder="Nome do álbum" id="buscaAlbum" autocomplete="off">
</div>
<div id="animSearch"></div>
<div id="animCreating"></div>
<h2 id="criandoArte">Creating your <span>poster</span>...</h2>
<div id="gridAlbuns">
</div>
</div>
<div id="divCriacao">
<div id="preview">
<img src="" alt="" id="imgPreview">
</div>
<div id="configs">
<h3 id="Ajuste">Adjust as you like:</h3>
<div id="gridConfigs">
<div class="config">
<h2 class="tituloInput" id="titleAlbumName">Album name</h2>
<input type="text" placeholder="Album name" id="inputNome" class="inputOpcoes" autocomplete="off">
</div>
<div class="config">
<h2 class="tituloInput" id="titleArtistName">Artist</h2>
<input type="text" placeholder="Artist name" id="inputArtista" class="inputOpcoes" autocomplete="off">
</div>
<div class="config">
<input type="text" placeholder="Release date" id="placeDataLancamento" class="tituloInput" autocomplete="off">
<input type="text" placeholder="Date" id="inputData" class="inputOpcoes" autocomplete="off">
</div>
<div class="config">
<input type="text" placeholder="Playback time" id="placeTempo" class="tituloInput" autocomplete="off">
<input type="text" placeholder="Time" id="inputTempo" class="inputOpcoes" autocomplete="off">
</div>
<div class="config">
<h2 class="tituloInput" id="titleTitleSize">Title size</h2>
<input type="text" placeholder="Size" id="inputTamanhoTitulo" class="inputOpcoes" autocomplete="off">
</div>
<div class="config">
<h2 class="tituloInput" id="TitleAS">Artist size</h2>
<input type="text" placeholder="Size" id="inputTamanhoArtista" class="inputOpcoes" autocomplete="off">
</div>
<div class="config">
<h2 class="tituloInput" id="musicSize">Music size</h2>
<input type="text" placeholder="Size" id="inputTamanhoMusica" class="inputOpcoes" autocomplete="off">
</div>
<div class="config">
<h2 class="tituloInput" id="titleMarginTop">Margin top</h2>
<input type="text" placeholder="Qntd" id="inputMarginTitle" class="inputOpcoes" autocomplete="off">
</div>
<div class="config">
<h2 class="tituloInput" id="TitleBC">Background color</h2>
<div class="divInputCor" id="btnCorFundo" data-display="displayCorFundo" data-textoCor="textoCorFundo">
<div class="cor" id="displayCorFundo"></div>
<h2 class="textoCor" id="textoCorFundo">#ffffff</h2>
</div>
</div>
<div class="config">
<h2 class="tituloInput" id="titleTC">Text color</h2>
<div class="divInputCor" id="btnCorTexto" data-display="displayCorTexto" data-textoCor="textoCorTexto">
<div class="cor" id="displayCorTexto"></div>
<h2 class="textoCor" id="textoCorTexto">#ffffff</h2>
</div>
</div>
<div class="config">
<h2 class="tituloInput" id="titleCor1">Color 1</h2>
<div class="divInputCor" id="btnCor1" data-display="displayCor1" data-textoCor="textoCor1">
<div class="cor" id="displayCor1"></div>
<h2 class="textoCor" id="textoCor1">#ffffff</h2>
</div>
</div>
<div class="config">
<h2 class="tituloInput" id="titleCor2">Color 2</h2>
<div class="divInputCor" id="btnCor2" data-display="displayCor2" data-textoCor="textoCor2">
<div class="cor" id="displayCor2"></div>
<h2 class="textoCor" id="textoCor2">#ffffff</h2>
</div>
</div>
<div class="config">
<h2 class="tituloInput" id="titleCor3">Color 3</h2>
<div class="divInputCor" id="btnCor3" data-display="displayCor3" data-textoCor="textoCor3">
<div class="cor" id="displayCor3"></div>
<h2 class="textoCor" id="textoCor3">#ffffff</h2>
</div>
</div>
<div class="config">
<h2 class="tituloInput" id="titleDegrade">Fade</h2>
<div>
<input type="checkbox" id="inputDegrade" name="concordar">
<label for="inputDegrade" class="label" id="labelFade">Use fade</label>
</div>
</div>
<div class="config">
<h2 class="tituloInput" id="titleLista">Tracklist</h2>
<div>
<input type="checkbox" id="inputLista" name="usar lista">
<label for="inputLista" class="label" id="labelTracklist">Show tracklist</label>
</div>
</div>
</div>
<div id="btns">
<div id="voltar">
<i class="fa-solid fa-ban"></i>
<h2 id="titleDelete">Delete</h2>
</div>
<div id="baixar"><i class="fa-solid fa-download"></i></div>
<div id="atualizar">
<i class="fa-solid fa-rotate-right"></i>
<h2 id="titleApply">Apply</h2>
</div>
</div>
</div>
</div>
</section>
<section id="sobre">
<h2 id="sobreTitulo">How it works</h2>
<p id="sobreP1">To obtain the data and images, Posterfy uses Spotify's free API. After the search result and the user selects the album, Posterfy gathers all the data
and organizes it visually using the HTML canvas element in a pre-organized way through JavaScript and generates a rendered image of the canvas.</p>
<p id="sobreP2">This project is open source and does not generate any revenue.
All rights to images and information belong to Spotify and the respective artists. Source code available at: <a href="https://github.com/avictormorais/posterfy">Github</a></p>
</section>
<div id="colorPicker">
<input type="text" placeholder="Código da cor" id="inputTextColor" autocomplete="off">
<div id="showColor"></div>
<div id="hueColors">
<input class="color-range" type="range" min="0" max="100" value="75">
</div>
<div id="divCores">
<div class="cor" id="cor1"></div>
<div class="cor" id="cor2"></div>
<div class="cor" id="cor3"></div>
<div class="cor" id="cor4"></div>
<div class="cor" id="corBranco"></div>
<div class="cor" id="corPreto"></div>
</div>
<canvas id="canvasContaGotas"></canvas>
<div id="btnsColorPicker">
<i class="fa-solid fa-xmark" id="dismissCP"></i>
<i class="fa-solid fa-check" id="confirmarCor"></i>
</div>
</div>
</body>
<footer>
<img src="styles/logo.png" alt="" id="logoFooter">
<div>
<h2 id="made">Made with 🎵 in 🇧🇷 by<a href="https://github.com/avictormorais"> Victor</a>.</h2>
<h2 id="na">Not associated with Spotify.</h2>
</div>
</footer>
</html>
Loading

0 comments on commit 04737a8

Please sign in to comment.