Compare commits
No commits in common. "55b0513f677cd6698b286c870f348568ab26f82b" and "823fe2e35617a60e67a87ced81005636fdd76e14" have entirely different histories.
55b0513f67
...
823fe2e356
8 changed files with 45 additions and 111 deletions
11
README.md
11
README.md
|
@ -4,9 +4,14 @@ home to your local SPACEGIRL! 💫
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
a slightly-overcomplicated webserver built to show off everything i've worked
|
built up from the initial [static](https://forge.arimelody.space/ari/arimelody.me-static)
|
||||||
on, and then some! this server comes complete with twitch live status tracking,
|
branch, this powerful, server-side rendered version comes complete with live
|
||||||
a portfolio database, and a full-fledged admin CMS panel to manage it all!
|
updates, powered by a new database and handy admin panel!
|
||||||
|
|
||||||
|
the admin panel currently facilitates live updating of my music discography,
|
||||||
|
though i plan to expand it towards art portfolio and blog posts in the future.
|
||||||
|
if all goes well, i'd like to later separate these components into their own
|
||||||
|
library for others to use in their own sites. exciting stuff!
|
||||||
|
|
||||||
## build
|
## build
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
services:
|
services:
|
||||||
web:
|
web:
|
||||||
image: docker.arimelody.space/arimelody-web:latest
|
image: docker.arimelody.space/arimelody.me:latest
|
||||||
build: .
|
build: .
|
||||||
ports:
|
ports:
|
||||||
- 8080:8080
|
- 8080:8080
|
||||||
|
|
35
main.go
35
main.go
|
@ -515,7 +515,7 @@ func main() {
|
||||||
fmt.Printf("Now serving at http://%s:%d\n", app.Config.Host, app.Config.Port)
|
fmt.Printf("Now serving at http://%s:%d\n", app.Config.Host, app.Config.Port)
|
||||||
stdLog.Fatal(
|
stdLog.Fatal(
|
||||||
http.ListenAndServe(fmt.Sprintf("%s:%d", app.Config.Host, app.Config.Port),
|
http.ListenAndServe(fmt.Sprintf("%s:%d", app.Config.Host, app.Config.Port),
|
||||||
CheckRequest(&app, HTTPLog(DefaultHeaders(mux))),
|
HTTPLog(DefaultHeaders(mux)),
|
||||||
))
|
))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -563,37 +563,6 @@ var PoweredByStrings = []string{
|
||||||
"30 billion dollars in VC funding",
|
"30 billion dollars in VC funding",
|
||||||
}
|
}
|
||||||
|
|
||||||
func CheckRequest(app *model.AppState, next http.Handler) http.Handler {
|
|
||||||
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
||||||
// requests with empty user agents are considered suspicious.
|
|
||||||
// every browser supplies them; hell, even curl supplies them.
|
|
||||||
// i only ever see null user-agents paired with malicious requests,
|
|
||||||
// so i'm canning them altogether.
|
|
||||||
if len(r.Header.Get("User-Agent")) == 0 {
|
|
||||||
http.Error(w, http.StatusText(http.StatusBadRequest), http.StatusBadRequest)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// same with .php and awkward double-slash requests.
|
|
||||||
// obviously these don't affect me, but these tend to be lazy intrusion
|
|
||||||
// attempts. if that's what you're about, i don't want you on my site.
|
|
||||||
if strings.HasPrefix(r.URL.Path, "//") ||
|
|
||||||
strings.HasSuffix(r.URL.Path, ".php") ||
|
|
||||||
strings.HasSuffix(r.URL.Path, ".php7") {
|
|
||||||
http.NotFound(w, r)
|
|
||||||
fmt.Fprintf(
|
|
||||||
os.Stderr,
|
|
||||||
"WARN: Suspicious activity blocked: {\"path\":\"%s\",\"address\":\"%s\"}\n",
|
|
||||||
r.URL.Path,
|
|
||||||
r.RemoteAddr,
|
|
||||||
)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
next.ServeHTTP(w, r)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
func DefaultHeaders(next http.Handler) http.Handler {
|
func DefaultHeaders(next http.Handler) http.Handler {
|
||||||
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||||
w.Header().Add("Server", "ari melody webbed site")
|
w.Header().Add("Server", "ari melody webbed site")
|
||||||
|
@ -658,6 +627,6 @@ func HTTPLog(next http.Handler) http.Handler {
|
||||||
lrw.Status,
|
lrw.Status,
|
||||||
colour.Reset,
|
colour.Reset,
|
||||||
elapsed,
|
elapsed,
|
||||||
r.Header.Get("User-Agent"))
|
r.Header["User-Agent"][0])
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
26
public/keys/ari melody_0x92678188_public.asc
Normal file
26
public/keys/ari melody_0x92678188_public.asc
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||||
|
|
||||||
|
mDMEZNW03RYJKwYBBAHaRw8BAQdAuMUNVjXT7m/YisePPnSYY6lc1Xmm3oS79ZEO
|
||||||
|
JriRCZy0HWFyaSBtZWxvZHkgPGFyaUBhcmltZWxvZHkubWU+iJkEExYKAEECGwMF
|
||||||
|
CwkIBwICIgIGFQoJCAsCBBYCAwECHgcCF4AWIQTujeuNYocuegkeKt/PmYKckmeB
|
||||||
|
iAUCZ7UqUAUJCIMP8wAKCRDPmYKckmeBiO/NAP0SoJL4aKZqCeYiSoDF/Uw6nMmZ
|
||||||
|
+oR1Uig41wQ/IDbhCAEApP2vbjSIu6pcp0AQlL7qcoyPWv+XkqPSFqW9KEZZVwqI
|
||||||
|
kwQTFgoAOxYhBO6N641ihy56CR4q38+ZgpySZ4GIBQJk1bTdAhsDBQsJCAcCAiIC
|
||||||
|
BhUKCQgLAgQWAgMBAh4HAheAAAoJEM+ZgpySZ4GIYJsA/jBNwsJTlmV9JMmsW0aF
|
||||||
|
ApYDoPG1Q7sJ6CRW7xKCRjcqAQDX9iqNnW9Jqo8M3jXfu+aGSF926hg6M3SKm02P
|
||||||
|
f27bAbgzBGe1JooWCSsGAQQB2kcPAQEHQJbfh5iLHEpZndMgekqYzqTrUoAJ8ZIL
|
||||||
|
d4WH0dcw9tOaiPUEGBYKACYCGwIWIQTujeuNYocuegkeKt/PmYKckmeBiAUCZ7Uq
|
||||||
|
VgUJBaOeTACBdiAEGRYKAB0WIQQlu5dWmBR/P3ZxngxgtfA4bj3bfgUCZ7UmigAK
|
||||||
|
CRBgtfA4bj3bfux+AP4y5ydrjnGBMX7GuB2nh55SRdscSiXsZ66ntnjXyQcbWgEA
|
||||||
|
pDuu7FqXzXcnluuZxNFDT740Rnzs60tTeplDqGGWcAQJEM+ZgpySZ4GIc0kA/iSw
|
||||||
|
Nw+r3FC75omwrPpJF13B5fq93FweFx+oSaES6qzkAQDvgCK77qKKbvCju0g8zSsK
|
||||||
|
EZnv6xR4uvtGdVkvLpBdC7gzBGe1JpkWCSsGAQQB2kcPAQEHQGnU4lXFLchhKYkC
|
||||||
|
PshP+jvuRsNoedaDOK2p4dkQC8JuiH4EGBYKACYCGyAWIQTujeuNYocuegkeKt/P
|
||||||
|
mYKckmeBiAUCZ7UqXgUJBaOeRQAKCRDPmYKckmeBiL9KAQCJZIBhuSsoYa61I0XZ
|
||||||
|
cKzGZbB0h9pD6eg1VRswNIgHtQEAwu9Hgs1rs9cySvKbO7WgK6Qh6EfrvGgGOXCO
|
||||||
|
m3wVsg24OARntSo5EgorBgEEAZdVAQUBAQdA+/k586W1OHxndzDJNpbd+wqjyjr0
|
||||||
|
D5IXxfDs00advB0DAQgHiH4EGBYKACYWIQTujeuNYocuegkeKt/PmYKckmeBiAUC
|
||||||
|
Z7UqOQIbDAUJBaOagAAKCRDPmYKckmeBiEFxAQCgziQt2l3u7jnZVij4zop+K2Lv
|
||||||
|
TVFtkbG61tf6brRzBgD/X6c6X5BRyQC51JV1I1RFRBdeMAIXzcLFg2v3WUMccQs=
|
||||||
|
=YmHI
|
||||||
|
-----END PGP PUBLIC KEY BLOCK-----
|
|
@ -1,66 +0,0 @@
|
||||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
|
||||||
|
|
||||||
mDMEZNW03RYJKwYBBAHaRw8BAQdAuMUNVjXT7m/YisePPnSYY6lc1Xmm3oS79ZEO
|
|
||||||
JriRCZy0IGFyaSBtZWxvZHkgPGFyaUBhcmltZWxvZHkuc3BhY2U+iQJJBBMWCgHx
|
|
||||||
AhsDBQkIgw/zBQsJCAcCAiICBhUKCQgLAgQWAgMBAh4HAheAAhkBFiEE7o3rjWKH
|
|
||||||
LnoJHirfz5mCnJJngYgFAmino5w1FIAAAAAAEAAccHJvb2ZAYXJpYWRuZS5pZGRu
|
|
||||||
czphcmltZWxvZHkuc3BhY2U/dHlwZT1UWFQ6FIAAAAAAEAAhcHJvb2ZAYXJpYWRu
|
|
||||||
ZS5pZGh0dHBzOi8vZmVkaS5hcmltZWxvZHkuc3BhY2UvQGFyaUQUgAAAAAAQACtw
|
|
||||||
cm9vZkBhcmlhZG5lLmlkaHR0cHM6Ly9mb3JnZS5ibGlzcy50b3duL2FyaS9rZXlv
|
|
||||||
eGlkZS1wcm9vZkkUgAAAAAAQADBwcm9vZkBhcmlhZG5lLmlkaHR0cHM6Ly9mb3Jn
|
|
||||||
ZS5hcmltZWxvZHkuc3BhY2UvYXJpL2tleW94aWRlLXByb29mRhSAAAAAABAALXBy
|
|
||||||
b29mQGFyaWFkbmUuaWRodHRwczovL2NvZGViZXJnLm9yZy9hcmltZWxvZHkva2V5
|
|
||||||
b3hpZGUtcHJvb2ZlFIAAAAAAEABMcHJvb2ZAYXJpYWRuZS5pZGh0dHBzOi8vYnNr
|
|
||||||
eS5hcHAvcHJvZmlsZS9kaWQ6cGxjOnljdDZjdmdmaXBuZ2l6cnk1dW16a3hyMy9w
|
|
||||||
b3N0LzNsaWlucW90cXRjMjIACgkQz5mCnJJngYjDpQEAgFn3bXcxw3xF0dwrSURh
|
|
||||||
qpciMY31bkQy9eDMSKcbloIA/1hX1MnUKETdiAtrrK08z4udIXaJr52E5D7IAZk1
|
|
||||||
pZwBtB1hcmkgbWVsb2R5IDxhcmlAYXJpbWVsb2R5Lm1lPoiTBBMWCgA7FiEE7o3r
|
|
||||||
jWKHLnoJHirfz5mCnJJngYgFAmTVtN0CGwMFCwkIBwICIgIGFQoJCAsCBBYCAwEC
|
|
||||||
HgcCF4AACgkQz5mCnJJngYhgmwD+ME3CwlOWZX0kyaxbRoUClgOg8bVDuwnoJFbv
|
|
||||||
EoJGNyoBANf2Ko2db0mqjwzeNd+75oZIX3bqGDozdIqbTY9/btsBiQIKBBMWCgGy
|
|
||||||
AhsDBQsJCAcCAiICBhUKCQgLAgQWAgMBAh4HAheABQkIgw/zFiEE7o3rjWKHLnoJ
|
|
||||||
Hirfz5mCnJJngYgFAme1wUA2FIAAAAAAEAAdcHJvb2ZAYXJpYWRuZS5pZGh0dHBz
|
|
||||||
Oi8vaWNlLmFyaW1lbG9keS5tZS9AYXJpWxSAAAAAABAAQnByb29mQGFyaWFkbmUu
|
|
||||||
aWRodHRwczovL2dpc3QuZ2l0aHViLmNvbS9hcmltZWxvZHkvMzY2ZGMyYjZhYWVk
|
|
||||||
ZWMxOWU2MTRiN2NlY2U5Yzg2OWQyFIAAAAAAEAAZcHJvb2ZAYXJpYWRuZS5pZGRu
|
|
||||||
czphcmltZWxvZHkubWU/dHlwZT1UWFRlFIAAAAAAEABMcHJvb2ZAYXJpYWRuZS5p
|
|
||||||
ZGh0dHBzOi8vYnNreS5hcHAvcHJvZmlsZS9kaWQ6cGxjOnljdDZjdmdmaXBuZ2l6
|
|
||||||
cnk1dW16a3hyMy9wb3N0LzNsaWlucW90cXRjMjJEFIAAAAAAEAArcHJvb2ZAYXJp
|
|
||||||
YWRuZS5pZGh0dHBzOi8vZ2l0LmFyaW1lbG9keS5tZS9hcmkva2V5b3hpZGVfcHJv
|
|
||||||
b2YACgkQz5mCnJJngYh3+QD+Pbo3bM4oWtUicGUGEp4jiFoBqSNlyl9rFPY0ODDS
|
|
||||||
DxEBANaXz/No/Hn3mEwNdrFigj/YPm7TH/4UBbHAxN6hDggPiQJGBBMWCgHuAhsD
|
|
||||||
BQsJCAcCAiICBhUKCQgLAgQWAgMBAh4HAheABQkIgw/zFiEE7o3rjWKHLnoJHirf
|
|
||||||
z5mCnJJngYgFAmino5VJFIAAAAAAEAAwcHJvb2ZAYXJpYWRuZS5pZGh0dHBzOi8v
|
|
||||||
Zm9yZ2UuYXJpbWVsb2R5LnNwYWNlL2FyaS9rZXlveGlkZS1wcm9vZkYUgAAAAAAQ
|
|
||||||
AC1wcm9vZkBhcmlhZG5lLmlkaHR0cHM6Ly9jb2RlYmVyZy5vcmcvYXJpbWVsb2R5
|
|
||||||
L2tleW94aWRlLXByb29mOhSAAAAAABAAIXByb29mQGFyaWFkbmUuaWRodHRwczov
|
|
||||||
L2ZlZGkuYXJpbWVsb2R5LnNwYWNlL0BhcmllFIAAAAAAEABMcHJvb2ZAYXJpYWRu
|
|
||||||
ZS5pZGh0dHBzOi8vYnNreS5hcHAvcHJvZmlsZS9kaWQ6cGxjOnljdDZjdmdmaXBu
|
|
||||||
Z2l6cnk1dW16a3hyMy9wb3N0LzNsaWlucW90cXRjMjI1FIAAAAAAEAAccHJvb2ZA
|
|
||||||
YXJpYWRuZS5pZGRuczphcmltZWxvZHkuc3BhY2U/dHlwZT1UWFREFIAAAAAAEAAr
|
|
||||||
cHJvb2ZAYXJpYWRuZS5pZGh0dHBzOi8vZm9yZ2UuYmxpc3MudG93bi9hcmkva2V5
|
|
||||||
b3hpZGUtcHJvb2YACgkQz5mCnJJngYgKNQD/UA2THttICUvz2p5cbPlJIm/QStRE
|
|
||||||
6crttsTeFSsyocgBAPDXpkdssPNNnxxVvCNATTTxiS08Cy+xxQVrjWztjlUCuDME
|
|
||||||
Z7UmihYJKwYBBAHaRw8BAQdAlt+HmIscSlmd0yB6SpjOpOtSgAnxkgt3hYfR1zD2
|
|
||||||
05qI9QQYFgoAJgIbAhYhBO6N641ihy56CR4q38+ZgpySZ4GIBQJntSpWBQkFo55M
|
|
||||||
AIF2IAQZFgoAHRYhBCW7l1aYFH8/dnGeDGC18DhuPdt+BQJntSaKAAoJEGC18Dhu
|
|
||||||
Pdt+7H4A/jLnJ2uOcYExfsa4HaeHnlJF2xxKJexnrqe2eNfJBxtaAQCkO67sWpfN
|
|
||||||
dyeW65nE0UNPvjRGfOzrS1N6mUOoYZZwBAkQz5mCnJJngYhzSQD+JLA3D6vcULvm
|
|
||||||
ibCs+kkXXcHl+r3cXB4XH6hJoRLqrOQBAO+AIrvuoopu8KO7SDzNKwoRme/rFHi6
|
|
||||||
+0Z1WS8ukF0LuDMEZ7UmmRYJKwYBBAHaRw8BAQdAadTiVcUtyGEpiQI+yE/6O+5G
|
|
||||||
w2h51oM4ranh2RALwm6IfgQYFgoAJgIbIBYhBO6N641ihy56CR4q38+ZgpySZ4GI
|
|
||||||
BQJntSpeBQkFo55FAAoJEM+ZgpySZ4GIv0oBAIlkgGG5KyhhrrUjRdlwrMZlsHSH
|
|
||||||
2kPp6DVVGzA0iAe1AQDC70eCzWuz1zJK8ps7taArpCHoR+u8aAY5cI6bfBWyDbg4
|
|
||||||
BGe1KjkSCisGAQQBl1UBBQEBB0D7+TnzpbU4fGd3MMk2lt37CqPKOvQPkhfF8OzT
|
|
||||||
Rp28HQMBCAeIfgQYFgoAJhYhBO6N641ihy56CR4q38+ZgpySZ4GIBQJntSo5AhsM
|
|
||||||
BQkFo5qAAAoJEM+ZgpySZ4GIQXEBAKDOJC3aXe7uOdlWKPjOin4rYu9NUW2RsbrW
|
|
||||||
1/putHMGAP9fpzpfkFHJALnUlXUjVEVEF14wAhfNwsWDa/dZQxxxC7g4BGTVtN0S
|
|
||||||
CisGAQQBl1UBBQEBB0CcDZ2s/NAGhc13AisWei+4XQKNf7z7xBK6AIXhrlkRcQMB
|
|
||||||
CAeIeAQoFgoAIBYhBO6N641ihy56CR4q38+ZgpySZ4GIBQJntT6fAh0DAAoJEM+Z
|
|
||||||
gpySZ4GIgX8A/1d8CZFSRB0TRU8h6ijTS1+O2bKJ0uwydfQHL5b3fA4OAQDOU6eG
|
|
||||||
Ml82IKGhbFoJl7wm5X4+l5+lNqwZymNoZjVhBIh4BBgWCgAgFiEE7o3rjWKHLnoJ
|
|
||||||
Hirfz5mCnJJngYgFAmTVtN0CGwwACgkQz5mCnJJngYgv8QEA9YbuFnLLUeNJZFMT
|
|
||||||
KoWeOMJos6wwPnhgnYexntxsu/cBAMd/ORp2KDaZTEwOAUxrO6K1eFkn0pKAcdPq
|
|
||||||
cdVDnsIL
|
|
||||||
=Mzcq
|
|
||||||
-----END PGP PUBLIC KEY BLOCK-----
|
|
|
@ -8,7 +8,7 @@
|
||||||
<meta property="og:type" content="website">
|
<meta property="og:type" content="website">
|
||||||
<meta property="og:url" content="www.arimelody.space">
|
<meta property="og:url" content="www.arimelody.space">
|
||||||
<meta property="og:image" content="https://www.arimelody.space/img/favicon.png">
|
<meta property="og:image" content="https://www.arimelody.space/img/favicon.png">
|
||||||
<meta property="og:site_name" content="ari melody 💫">
|
<meta property="og:site_name" content="ari melody">
|
||||||
<meta property="og:description" content="home to your local SPACEGIRL 💫">
|
<meta property="og:description" content="home to your local SPACEGIRL 💫">
|
||||||
|
|
||||||
<link rel="stylesheet" href="/style/main.css">
|
<link rel="stylesheet" href="/style/main.css">
|
||||||
|
@ -66,7 +66,7 @@
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
for anything else, you can reach me for any and all communications through
|
for anything else, you can reach me for any and all communications through
|
||||||
<a href="mailto:ari@arimelody.space">ari@arimelody.space</a>. if your message
|
<a href="mailto:ari@arimelody.me">ari@arimelody.me</a>. if your message
|
||||||
contains anything beyond a silly gag, i strongly recommend encrypting
|
contains anything beyond a silly gag, i strongly recommend encrypting
|
||||||
your message using my public pgp key, listed below!
|
your message using my public pgp key, listed below!
|
||||||
</p>
|
</p>
|
||||||
|
@ -93,7 +93,7 @@
|
||||||
<strong>my keys 🔑</strong>
|
<strong>my keys 🔑</strong>
|
||||||
</p>
|
</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li>pgp: <a href="/keys/ari@arimelody.space_public.asc" target="_blank">[link]</a></li>
|
<li>pgp: <a href="/keys/ari melody_0x92678188_public.asc" target="_blank">[link]</a></li>
|
||||||
<li>ssh (ed25519): <a href="/keys/id_ari_ed25519.pub" target="_blank">[link]</a></li>
|
<li>ssh (ed25519): <a href="/keys/id_ari_ed25519.pub" target="_blank">[link]</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
|
|
@ -9,8 +9,8 @@
|
||||||
<meta property="og:url" content="https://arimelody.space/music/{{.ID}}">
|
<meta property="og:url" content="https://arimelody.space/music/{{.ID}}">
|
||||||
<meta property="og:type" content="website">
|
<meta property="og:type" content="website">
|
||||||
<meta property="og:locale" content="en_IE">
|
<meta property="og:locale" content="en_IE">
|
||||||
<meta property="og:site_name" content="ari melody 💫">
|
<meta property="og:site_name" content="ari melody music">
|
||||||
<meta property="og:title" content="{{.PrintArtists true true}} - {{.Title}}">
|
<meta property="og.Title" content="{{.Title}} - {{.PrintArtists true true}}">
|
||||||
<meta property="og:description" content="Stream "{{.Title}}" by {{.PrintArtists true true}} on all platforms!">
|
<meta property="og:description" content="Stream "{{.Title}}" by {{.PrintArtists true true}} on all platforms!">
|
||||||
<meta property="og:image" content="https://arimelody.space{{.GetArtwork}}">
|
<meta property="og:image" content="https://arimelody.space{{.GetArtwork}}">
|
||||||
|
|
||||||
|
@ -19,7 +19,7 @@
|
||||||
<meta name="twitter:creator" content="@funniduck">
|
<meta name="twitter:creator" content="@funniduck">
|
||||||
<meta property="twitter:domain" content="arimelody.space">
|
<meta property="twitter:domain" content="arimelody.space">
|
||||||
<meta property="twitter:url" content="https://arimelody.space/music/{{.ID}}">
|
<meta property="twitter:url" content="https://arimelody.space/music/{{.ID}}">
|
||||||
<meta name="twitter:title" content="{{.PrintArtists true true}} - {{.Title}}">
|
<meta name="twitter.Title" content="{{.PrintArtists true true}} - {{.Title}}">
|
||||||
<meta name="twitter:description" content="Stream "{{.Title}}" by {{.PrintArtists true true}} on all platforms!">
|
<meta name="twitter:description" content="Stream "{{.Title}}" by {{.PrintArtists true true}} on all platforms!">
|
||||||
<meta name="twitter:image" content="https://arimelody.space{{.GetArtwork}}">
|
<meta name="twitter:image" content="https://arimelody.space{{.GetArtwork}}">
|
||||||
<meta name="twitter:image:alt" content="Cover art for "{{.Title}}"">
|
<meta name="twitter:image:alt" content="Cover art for "{{.Title}}"">
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
<meta property="og:type" content="website">
|
<meta property="og:type" content="website">
|
||||||
<meta property="og:url" content="www.arimelody.space/music">
|
<meta property="og:url" content="www.arimelody.space/music">
|
||||||
<meta property="og:image" content="https://www.arimelody.space/img/favicon.png">
|
<meta property="og:image" content="https://www.arimelody.space/img/favicon.png">
|
||||||
<meta property="og:site_name" content="ari melody 💫">
|
<meta property="og:site_name" content="ari melody">
|
||||||
<meta property="og:description" content="music from your local SPACEGIRL 💫">
|
<meta property="og:description" content="music from your local SPACEGIRL 💫">
|
||||||
|
|
||||||
<link rel="stylesheet" href="/style/main.css">
|
<link rel="stylesheet" href="/style/main.css">
|
||||||
|
@ -84,7 +84,7 @@
|
||||||
if you do happen to use my work in something you're particularly proud of, feel free to send it my way!
|
if you do happen to use my work in something you're particularly proud of, feel free to send it my way!
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
> <a href="mailto:ari@arimelody.space">ari@arimelody.space</a>
|
> <a href="mailto:ari@arimelody.me">ari@arimelody.me</a>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</main>
|
</main>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue