diff --git a/.gitignore b/.gitignore index cf1a6f6..8175042 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ certs/ +public/img/musicart/* docker-compose*.yml !docker-compose-example.yml diff --git a/nginx.conf b/nginx.conf index b181a10..ceaf67d 100644 --- a/nginx.conf +++ b/nginx.conf @@ -1,20 +1,24 @@ server { - listen 443 ssl; - server_name arimelody.me; + listen 443 ssl; + server_name arimelody.me; - ssl_protocols TLSv1.2 TLSv1.3; + ssl_protocols TLSv1.2 TLSv1.3; - ssl_certificate /etc/nginx/ssl/arimelody.crt; - ssl_certificate_key /etc/nginx/ssl/arimelody.key; + ssl_certificate /etc/nginx/ssl/arimelody.crt; + ssl_certificate_key /etc/nginx/ssl/arimelody.key; - root /usr/share/nginx/arimelody/; + root /usr/share/nginx/arimelody/; - client_max_body_size 0; + client_max_body_size 0; - location / { - } + add_header Cache-Control "max-age=604800"; - if ($scheme != "https") { - return 301 https://$server_name$request_uri; - } -} \ No newline at end of file + location / { + try_files $uri $uri/ $uri.html =404; + rewrite ^/music/(.*)$ https://mellodoot.com/music/$1 last; + } + + if ($scheme != "https") { + return 301 https://$server_name$request_uri; + } +} diff --git a/public/audio/transmission20231013.wav b/public/audio/transmission20231013.wav new file mode 100644 index 0000000..10885a8 Binary files /dev/null and b/public/audio/transmission20231013.wav differ diff --git a/public/data/music.xml b/public/data/music.xml new file mode 100644 index 0000000..6299768 --- /dev/null +++ b/public/data/music.xml @@ -0,0 +1,270 @@ + + + + +dream +Dream +single +2022 +https://mellodoot.com/img/music_artwork/mellodoot_-_Dream.webp +https://mellodoot.bandcamp.com/track/dream + +Spotify +https://open.spotify.com/album/5talRpqzjExP1w6j5LFIAh + + +Apple Music +https://music.apple.com/ie/album/dream-single/1650037132 + + +Soundcloud +https://soundcloud.com/mellodoot/dream + + +YouTube +https://www.youtube.com/watch?v=nfFgtMuYAx8 + + + + +gomyway +Go My Way +single +2021 +https://mellodoot.com/img/music_artwork/mellodoot_-_Go_My_Way.webp +https://mellodoot.bandcamp.com/track/go-my-way + +Spotify +https://open.spotify.com/album/35WNtxK12IDHCUoXHDePGE + + +Apple Music +https://music.apple.com/ie/album/go-my-way-single/1547145699 + + +Soundcloud +https://soundcloud.com/mellodoot/go-my-way + + +YouTube +https://www.youtube.com/watch?v=CNptNQdLkl0 + + + + +rowboat +Rowboat +single +2020 +https://mellodoot.com/img/music_artwork/mellodoot_-_Rowboat.webp +https://mellodoot.bandcamp.com/track/rowboat + +Spotify +https://open.spotify.com/album/7jyqJFVKaENCPm58v5O44Y + + +Apple Music +https://music.apple.com/ie/album/rowboat-single/1502608714 + + +Soundcloud +https://soundcloud.com/mellodoot/rowboat + + +YouTube +https://www.youtube.com/watch?v=uOQyILDTzME + + + + +helloworld +Hello World +single +2019 +https://mellodoot.com/img/music_artwork/mellodoot_-_Hello_World.webp +https://mellodoot.bandcamp.com/track/hello-world + +Spotify +https://open.spotify.com/album/3LbElPXD4dsDumttGBuYxx + + +Apple Music +https://music.apple.com/ie/album/hello-world-single/1491880155 + + +Soundcloud +https://soundcloud.com/mellodoot/helloworld + + +YouTube +https://www.youtube.com/watch?v=CQhlRsl0Mjk + + + + +sine +Sine +single +zaire +mellodoot +2019 +https://mellodoot.com/img/music_artwork/zaire_-_Sine_ft._mellodoot.webp + +Spotify +https://open.spotify.com/album/4WPuaJtTV7z86KubD9Rnmk + + +Apple Music +https://music.apple.com/us/album/sine-feat-mellodoot/1489163020 + + +YouTube +https://www.youtube.com/watch?v=z1H1s6VRnyY + + + + +10 +10 +single +2019 +https://mellodoot.com/img/music_artwork/mellodoot_-_10.webp +https://mellodoot.bandcamp.com/track/10 + +Spotify +https://open.spotify.com/album/2x4gbACfDm99unaXpLXyj0 + + +Apple Music +https://music.apple.com/ie/album/ten-single/1483193041 + + +Soundcloud +https://soundcloud.com/mellodoot/ten + + +YouTube +https://www.youtube.com/watch?v=C7WP5L2BK4U + + + + +mad +MAD +single +2018 +https://mellodoot.com/img/music_artwork/mellodoot_-_MAD.webp +https://mellodoot.bandcamp.com/track/mad + +Spotify +https://open.spotify.com/album/59nFXw1WNoRhXou7lXqBZd + + +Apple Music +https://music.apple.com/ie/album/mad/1441233120 + + +Soundcloud +https://soundcloud.com/mellodoot/mad + + +YouTube +https://www.youtube.com/watch?v=OB-Pk6p6mfQ + + + + +welcomingparty +Welcoming Party +album +2018 +https://mellodoot.com/img/music_artwork/mellodoot_-_Welcoming_Party.webp +https://mellodoot.bandcamp.com/album/welcoming-party + +Spotify +https://open.spotify.com/album/3EPa4HZpkISQVRAks64LfR + + +Apple Music +https://music.apple.com/ie/album/welcoming-party-ep/1441161424 + + +Soundcloud +https://soundcloud.com/mellodoot/sets/welcoming-party + + +YouTube +https://www.youtube.com/playlist?list=PLBG_QJeOHrB5EeniiXBIlHpoQbD6CUJca + + +Paradigm + + +Mitrio + + +Level One + + +Cubes + + +Aria + + + + +howtheyknow2018 +How They Know (2018) +single +2018 +https://mellodoot.com/img/music_artwork/mellodoot_-_How_They_Know_2018.webp +https://mellodoot.bandcamp.com/track/how-they-know-2018-remastered +true + +Soundcloud +https://soundcloud.com/mellodoot/how-they-know-2018 + + +YouTube +https://www.youtube.com/watch?v=mbAgSwCzyMw + + + + +howtheyknow +How They Know +single +2017 +https://mellodoot.com/img/music_artwork/mellodoot_-_How_They_Know.webp +https://mellodoot.bandcamp.com/track/how-they-know +true + +Soundcloud +https://soundcloud.com/mellodoot/how-they-know + + +YouTube +https://www.youtube.com/watch?v=q6lzKuG1Emo + + + + +traveller +Traveller +single +2017 +https://mellodoot.com/img/music_artwork/mellodoot_-_Traveller.webp +https://mellodoot.bandcamp.com/track/traveller +true + +Soundcloud +https://soundcloud.com/mellodoot/traveller + + +YouTube +https://www.youtube.com/watch?v=ZTO7IQZ-yXA + + + + diff --git a/public/index.html b/public/index.html index 119a65c..8401936 100644 --- a/public/index.html +++ b/public/index.html @@ -1,6 +1,7 @@ - - + + + @@ -8,6 +9,8 @@ ari melody 💫 + + @@ -19,32 +22,32 @@ - +
@@ -77,7 +80,7 @@

if you're looking to support me financially, that's so cool of you!! if you like, you can buy - one or more of my songs over on bandcamp, so you can at least get something for your + one or more of my songs over on bandcamp, so you can at least get something for your troubles. thank you very much either way!! 💕

@@ -142,15 +145,14 @@ this site is intended to eventually replace mellodoot.com.

- -
- - *made with ♥ by ari, 2023*
- - + + diff --git a/public/music.html b/public/music.html new file mode 100644 index 0000000..147a4a3 --- /dev/null +++ b/public/music.html @@ -0,0 +1,108 @@ + + + + + + + + + music - ari melody 💫 + + + + + + + + + + + + + + + + +
+ +
+ +
+

+ # my music +

+ +
+ +

> "can i use your music in my content?"

+
+

+ yes! well, in most cases... +

+

+ from Dream (2022) onward, all of my self-released songs are + licensed under Creative Commons Attribution-ShareAlike 3.0. anyone may use these + songs freely, so long as they provide credit back to me! +

+

+ a great example of some credit text would be as follows: +

+
+ music used: mellodoot - Dream
+ buy it here: https://arimelody.me/music/dream
+ licensed under CC BY-SA 3.0. +
+

+ for any songs prior to this, they were all either released by me (in which case, i honestly + don't mind), or in collaboration with chill people who i don't see having an issue with it. + do be sure to ask them about it, though! +

+

+ in the event the song you want to use is released under some other label, their usage rights + will more than likely trump whatever i'd otherwise have in mind. i'll try to negotiate some + nice terms, though! ;3 +

+

+ i love the idea of other creators using my songs in their work, so if you do happen to use + my stuff in a work you're particularly proud of, feel free to send it my way! +

+

+ > ari@arimelody.me +

+
+
+ + + +
+ + diff --git a/public/music.json b/public/music.json new file mode 100644 index 0000000..89b5e65 --- /dev/null +++ b/public/music.json @@ -0,0 +1,293 @@ +[ + { + "id": "dream", + "title": "Dream", + "type": "single", + "year": 2022, + "artists": [ "mellodoot" ], + "artwork": "https://mellodoot.com/img/music_artwork/mellodoot_-_Dream.webp", + "buylink": "https://arimelody.bandcamp.com/track/dream", + "links": [ + { + "title": "Spotify", + "url": "https://open.spotify.com/album/5talRpqzjExP1w6j5LFIAh" + }, + { + "title": "Apple Music", + "url": "https://music.apple.com/ie/album/dream-single/1650037132" + }, + { + "title": "Soundcloud", + "url": "https://soundcloud.com/mellodoot/dream" + }, + { + "title": "YouTube", + "url": "https://www.youtube.com/watch?v=nfFgtMuYAx8" + } + ] + }, + { + "id": "gomyway", + "title": "Go My Way", + "type": "single", + "year": 2021, + "artists": [ "mellodoot" ], + "artwork": "https://mellodoot.com/img/music_artwork/mellodoot_-_Go_My_Way.webp", + "buylink": "https://arimelody.bandcamp.com/track/go-my-way", + "links": [ + { + "title": "Spotify", + "url": "https://open.spotify.com/album/35WNtxK12IDHCUoXHDePGE" + }, + { + "title": "Apple Music", + "url": "https://music.apple.com/ie/album/go-my-way-single/1547145699" + }, + { + "title": "Soundcloud", + "url": "https://soundcloud.com/mellodoot/go-my-way" + }, + { + "title": "YouTube", + "url": "https://www.youtube.com/watch?v=CNptNQdLkl0" + } + ] + }, + { + "id": "rowboat", + "title": "Rowboat", + "type": "single", + "year": 2020, + "artists": [ "mellodoot" ], + "artwork": "https://mellodoot.com/img/music_artwork/mellodoot_-_Rowboat.webp", + "buylink": "https://arimelody.bandcamp.com/track/rowboat", + "links": [ + { + "title": "Spotify", + "url": "https://open.spotify.com/album/7jyqJFVKaENCPm58v5O44Y" + }, + { + "title": "Apple Music", + "url": "https://music.apple.com/ie/album/rowboat-single/1502608714" + }, + { + "title": "Soundcloud", + "url": "https://soundcloud.com/mellodoot/rowboat" + }, + { + "title": "YouTube", + "url": "https://www.youtube.com/watch?v=uOQyILDTzME" + } + ] + }, + { + "id": "helloworld", + "title": "Hello World", + "type": "single", + "year": 2019, + "artists": [ "mellodoot" ], + "artwork": "https://mellodoot.com/img/music_artwork/mellodoot_-_Hello_World.webp", + "buylink": "https://arimelody.bandcamp.com/track/hello-world", + "links": [ + { + "title": "Spotify", + "url": "https://open.spotify.com/album/3LbElPXD4dsDumttGBuYxx" + }, + { + "title": "Apple Music", + "url": "https://music.apple.com/ie/album/hello-world-single/1491880155" + }, + { + "title": "Soundcloud", + "url": "https://soundcloud.com/mellodoot/helloworld" + }, + { + "title": "YouTube", + "url": "https://www.youtube.com/watch?v=CQhlRsl0Mjk" + } + ] + }, + { + "id": "sine", + "title": "Sine", + "type": "single", + "artists": [ + "zaire", + "mellodoot" + ], + "year": 2019, + "artwork": "https://mellodoot.com/img/music_artwork/zaire_-_Sine_ft._mellodoot.webp", + "links": [ + { + "title": "Spotify", + "url": "https://open.spotify.com/album/4WPuaJtTV7z86KubD9Rnmk" + }, + { + "title": "Apple Music", + "url": "https://music.apple.com/us/album/sine-feat-mellodoot/1489163020" + }, + { + "title": "YouTube", + "url": "https://www.youtube.com/watch?v=z1H1s6VRnyY" + } + ] + }, + { + "id": "10", + "title": "10", + "type": "single", + "year": 2019, + "artists": [ "mellodoot" ], + "artwork": "https://mellodoot.com/img/music_artwork/mellodoot_-_10.webp", + "buylink": "https://arimelody.bandcamp.com/track/10", + "links": [ + { + "title": "Spotify", + "url": "https://open.spotify.com/album/2x4gbACfDm99unaXpLXyj0" + }, + { + "title": "Apple Music", + "url": "https://music.apple.com/ie/album/ten-single/1483193041" + }, + { + "title": "Soundcloud", + "url": "https://soundcloud.com/mellodoot/ten" + }, + { + "title": "YouTube", + "url": "https://www.youtube.com/watch?v=C7WP5L2BK4U" + } + ] + }, + { + "id": "mad", + "title": "MAD", + "type": "single", + "year": 2018, + "artists": [ "mellodoot" ], + "artwork": "https://mellodoot.com/img/music_artwork/mellodoot_-_MAD.webp", + "buylink": "https://arimelody.bandcamp.com/track/mad", + "links": [ + { + "title": "Spotify", + "url": "https://open.spotify.com/album/59nFXw1WNoRhXou7lXqBZd" + }, + { + "title": "Apple Music", + "url": "https://music.apple.com/ie/album/mad/1441233120" + }, + { + "title": "Soundcloud", + "url": "https://soundcloud.com/mellodoot/mad" + }, + { + "title": "YouTube", + "url": "https://www.youtube.com/watch?v=OB-Pk6p6mfQ" + } + ] + }, + { + "id": "welcomingparty", + "title": "Welcoming Party", + "type": "album", + "year": 2018, + "artists": [ "mellodoot" ], + "artwork": "https://mellodoot.com/img/music_artwork/mellodoot_-_Welcoming_Party.webp", + "buylink": "https://arimelody.bandcamp.com/album/welcoming-party", + "links": [ + { + "title": "Spotify", + "url": "https://open.spotify.com/album/3EPa4HZpkISQVRAks64LfR" + }, + { + "title": "Apple Music", + "url": "https://music.apple.com/ie/album/welcoming-party-ep/1441161424" + }, + { + "title": "Soundcloud", + "url": "https://soundcloud.com/mellodoot/sets/welcoming-party" + }, + { + "title": "YouTube", + "url": "https://www.youtube.com/playlist?list=PLBG_QJeOHrB5EeniiXBIlHpoQbD6CUJca" + } + ], + "tracks": [ + { + "title": "Paradigm" + }, + { + "title": "Mitrio" + }, + { + "title": "Level One" + }, + { + "title": "Cubes" + }, + { + "title": "Aria" + } + ] + }, + { + "id": "howtheyknow2018", + "title": "How They Know (2018)", + "type": "single", + "year": 2018, + "artists": [ "mellodoot" ], + "artwork": "https://mellodoot.com/img/music_artwork/mellodoot_-_How_They_Know_2018.webp", + "buylink": "https://arimelody.bandcamp.com/track/how-they-know-2018-remastered", + "free": true, + "links": [ + { + "title": "Soundcloud", + "url": "https://soundcloud.com/mellodoot/how-they-know-2018" + }, + { + "title": "YouTube", + "url": "https://www.youtube.com/watch?v=mbAgSwCzyMw" + } + ] + }, + { + "id": "howtheyknow", + "title": "How They Know", + "type": "single", + "year": 2017, + "artists": [ "mellodoot" ], + "artwork": "https://mellodoot.com/img/music_artwork/mellodoot_-_How_They_Know.webp", + "buylink": "https://arimelody.bandcamp.com/track/how-they-know", + "free": true, + "links": [ + { + "title": "Soundcloud", + "url": "https://soundcloud.com/mellodoot/how-they-know" + }, + { + "title": "YouTube", + "url": "https://www.youtube.com/watch?v=q6lzKuG1Emo" + } + ] + }, + { + "id": "traveller", + "title": "Traveller", + "type": "single", + "year": 2017, + "artists": [ "mellodoot" ], + "artwork": "https://mellodoot.com/img/music_artwork/mellodoot_-_Traveller.webp", + "buylink": "https://arimelody.bandcamp.com/track/traveller", + "free": true, + "links": [ + { + "title": "Soundcloud", + "url": "https://soundcloud.com/mellodoot/traveller" + }, + { + "title": "YouTube", + "url": "https://www.youtube.com/watch?v=ZTO7IQZ-yXA" + } + ] + } +] diff --git a/public/script/main.js b/public/script/main.js index 3449c5a..199d558 100644 --- a/public/script/main.js +++ b/public/script/main.js @@ -9,6 +9,10 @@ document.addEventListener("DOMContentLoaded", () => { .forEach((e) => { fill_list(e); }); + setTimeout(() => { + document.querySelector("footer").style.display = "none"; + document.querySelector("footer").style.display = null; + }, 1000); }); function type_out(e) { diff --git a/public/script/music.js b/public/script/music.js new file mode 100644 index 0000000..2c4aeb4 --- /dev/null +++ b/public/script/music.js @@ -0,0 +1,59 @@ +function create_music_card(item) { + var artist = "ari melody"; + if (item.artists) { + artist = item.artists.join(", "); + } + let card = document.createElement('a'); + card.href = `/music/${item.id}`; + card.classList.add("music"); + card.id = item.id; + card.innerHTML = + `
+ ${item.title} artwork +
+
+

${item.title}

+

${artist}

+

${item.type}

+ +
`; + return card; +} + +document.querySelectorAll("h2.question").forEach(element => { + element.onclick = (e) => { + const url = `${window.location.protocol}//${window.location.host}${window.location.pathname}#${e.target.id}`; + window.location = url; + }; +}); + +document.querySelectorAll('blockquote').forEach( + element => { + element.onclick = (e) => { + navigator.clipboard.writeText(e.target.innerText); + console.log('copied quote contents to clipboard!\n\n' + e.target.innerText); + } + } +); + +fetch('/music.json') + .then(res => { + if (!res.ok) { + throw new Error(`Failed to download music data! ${res.status}`); + } + return res.json(); + }) + .then(music => { + let music_container = document.getElementById('music-container'); + for (index in music) { + let item = music[index]; + let dom = create_music_card(item); + music_container.append(dom); + }; + }); + + diff --git a/public/style/main.css b/public/style/main.css index 6c10f22..04e5cdb 100644 --- a/public/style/main.css +++ b/public/style/main.css @@ -2,16 +2,18 @@ --primary: #b7fd49; --secondary: #f8e05b; --tertiary: #f788fe; + --links: #5eb2ff; } body { - margin: 0; + margin: 0; padding: 0; - background: #111; - color: #eee; - font-family: monospace; - font-size: 18px; + background: #111; + color: #eee; + font-family: monospace; + font-size: 18px; text-shadow: 0 0 2em; + scroll-behavior: smooth; } header { @@ -69,10 +71,11 @@ header ul li { list-style: none; } -header ul li a { +header ul li a, +header ul li span { padding: .2em .5em; - border: 1px solid #65b4fd; - color: #65b4fd; + border: 1px solid var(--links); + color: var(--links); border-radius: 2px; background-color: transparent; transition-property: color, border-color, background-color; @@ -82,22 +85,23 @@ header ul li a { opacity: 0; } -header ul li a.inactive { +header ul li span { color: #aaa; border-color: #aaa; cursor: default; text-decoration: none !important; } -header ul li a:not(.inactive):hover { +header ul li a:hover { color: #eee; border-color: #eee; - background-color: #65b4fd; + background-color: var(--links); text-decoration: none; } main { width: min(calc(100% - 4rem), 720px); + min-height: calc(100vh - 10.3rem); margin: auto; } @@ -115,7 +119,7 @@ main h3 { } a { - color: #65b4fd; + color: var(--links); text-decoration: none; } @@ -176,7 +180,8 @@ h4, h5, h6, p, -small { +small, +blockquote { transition: background-color 0.1s; } @@ -187,10 +192,17 @@ main h4:hover, main h5:hover, main h6:hover, main p:hover, -main small:hover { +main small:hover, +main blockquote:hover { background-color: #fff2; } +blockquote { + margin: 1rem 0; + padding: 0 2.5rem; + cursor: pointer; +} + hr { text-align: center; line-height: 0px; @@ -212,8 +224,8 @@ ul.links li { ul.links li a { padding: .2em .5em; - border: 1px solid #65b4fd; - color: #65b4fd; + border: 1px solid var(--links); + color: var(--links); border-radius: 2px; background-color: transparent; transition-property: color, border-color, background-color; @@ -226,9 +238,9 @@ ul.links li a { ul.links li a:hover { color: #eee; border-color: #eee; - background-color: #65b4fd; + background-color: var(--links); text-decoration: none; - box-shadow: 0 0 1em #65b4fd; + box-shadow: 0 0 1em var(--links); } @keyframes list-item-fadein { @@ -243,7 +255,13 @@ ul.links li a:hover { } footer { - margin: 2rem; + border-top: 1px solid #888; +} + +#footer { + width: min(calc(100% - 4rem), 720px); + margin: auto; + padding: 2rem 0; color: #aaa; } diff --git a/public/style/music.css b/public/style/music.css new file mode 100644 index 0000000..0c73157 --- /dev/null +++ b/public/style/music.css @@ -0,0 +1,115 @@ +a.music { + margin-bottom: 1rem; + padding: 1.5rem; + display: flex; + flex-direction: row; + gap: 1.5em; + border-radius: 4px; + background-color: #ffffff04; + transition: background-color .1s; + text-decoration: none; +} + +a.music:hover { + background-color: #fff1; +} + +.music h1:hover, +.music h2:hover, +.music h3:hover { + background: initial; +} + +.music-artwork img { + border: 1px solid #888; +} + +.music-title { + margin: 0; + color: #eee; +} + +.music-year { + color: #888; +} + +.music-artist { + margin: -.5rem 0 0 0; + font-size: 1em; + color: #aaa; +} + +h3[class^=music-type] { + margin: 0 0 1rem 0; + font-size: .8em; + color: #eee; +} + +h3.music-type-single { + color: var(--tertiary); +} + +h3.music-type-ep { + color: var(--secondary); +} + +h3.music-type-album { + color: var(--primary); +} + +h3.music-type-comp { + color: var(--secondary); +} + +h3.music-type-upcoming { + color: #f47070; +} + +.music-links { + margin: .5em 0; + padding: 0; + display: flex; + gap: .5rem; + flex-wrap: wrap; +} + +.music-links li { + list-style: none; +} + +.music-links li a { + padding: .2em .5em; + border: 1px solid #65b4fd; + color: #65b4fd; + border-radius: 2px; + background-color: transparent; + transition-property: color, border-color, background-color; + transition-duration: .2s; + animation: list-item-fadein .2s forwards; + animation-delay: 0s; + opacity: 0; +} + + +.music-links li a:hover { + color: #eee; + border-color: #eee; + background-color: #65b4fd; + text-decoration: none; +} + +h2.question { + margin: 1rem 0; + padding: 1rem 1.5rem; + background-color: #ffffff04; + border-radius: 4px; + cursor: pointer; +} + +.collapse { + margin: -1rem 0 1rem 0; + padding: .5em 1.5em; + background-color: #ffffff04; + border-radius: 4px; +} +