From e416310ae81a1ecc648c3ae59f6f46326880e818 Mon Sep 17 00:00:00 2001 From: siddharth ravikumar Date: Sat, 18 Jun 2022 08:32:04 -0400 Subject: peach: add `/about` section Initial version. --- main.go | 18 ++++++++++++ meta/meta.go | 16 +++++++++++ static/peach.css | 56 +++++++++++++++++++++++++++++++++++++- static/peach.min.css | 2 +- templates/about.tmpl | 77 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 167 insertions(+), 2 deletions(-) create mode 100644 meta/meta.go create mode 100644 templates/about.tmpl diff --git a/main.go b/main.go index ed988c9..79071e8 100644 --- a/main.go +++ b/main.go @@ -13,6 +13,7 @@ import ( "regexp" "strconv" + "ricketyspace.net/peach/meta" "ricketyspace.net/peach/search" "ricketyspace.net/peach/version" "ricketyspace.net/peach/weather" @@ -52,6 +53,9 @@ func main() { // Search handler. http.HandleFunc("/search", showSearch) + // Meta handler. + http.HandleFunc("/about", showMeta) + // Start server log.Fatal(http.ListenAndServe(peachAddr, nil)) } @@ -100,6 +104,20 @@ func showWeather(w http.ResponseWriter, lat, lng float32) { } } +func showMeta(w http.ResponseWriter, r *http.Request) { + logRequest(r) + + // Make meta info. + meta := meta.NewMeta() + + // Render. + err := peachTemplates.ExecuteTemplate(w, "about.tmpl", meta) + if err != nil { + log.Printf("weather: template: %v", err) + return + } +} + func serveStaticFile(w http.ResponseWriter, r *http.Request) { logRequest(r) diff --git a/meta/meta.go b/meta/meta.go new file mode 100644 index 0000000..a00504b --- /dev/null +++ b/meta/meta.go @@ -0,0 +1,16 @@ +// Copyright © 2022 siddharth ravikumar +// SPDX-License-Identifier: ISC + +package meta + +import "ricketyspace.net/peach/version" + +type Meta struct { + Version string +} + +func NewMeta() *Meta { + m := new(Meta) + m.Version = version.Version + return m +} diff --git a/static/peach.css b/static/peach.css index ac9a780..48589e1 100644 --- a/static/peach.css +++ b/static/peach.css @@ -48,7 +48,7 @@ body { margin: 0; } -.header { +.header-container .header { margin-top: 10px; margin-bottom: 0px; font-size: 1.5em; @@ -294,3 +294,57 @@ body { transition: background-color 0.3s linear; background-color: rgb(245,245,245); } + +/** About **/ +.about-container, +.terms-container, +.privacy-container, +.footer-container { + padding: 0 20px; +} + +.about-container p, +.terms-container p, +.privacy-container p { + margin: 10px 0; + padding: 0 5px; + line-height: 25px; +} + +.footer-container p { + margin: 1px 0; + padding: 0 5px; + line-height: 0px; + color: rgb(225,225,225); +} + +.about-container a, +.terms-container a, +.privacy-container a { + text-decoration: none; + border-bottom: 2px solid rgb(0,0,0); + color: rgb(0,0,0); +} + +.footer-container a { + text-decoration: none; + color: rgb(225,225,225); +} + +.about-container .header { + font-size: 1.5em; +} + +.about-container .header h1 { + margin: 5px; 0 15px; +} + +.terms-container .header, +.privacy-container .header { + font-size: 1.3em; +} + +.terms-container .header h2, +.privacy-container .header h2 { + margin: 0 0 10px; +} diff --git a/static/peach.min.css b/static/peach.min.css index 588025d..93dc518 100644 --- a/static/peach.min.css +++ b/static/peach.min.css @@ -1 +1 @@ -/* Copyright © 2022 siddharth ravikumar *//* SPDX-License-Identifier: ISC *//* Peach */@font-face{font-family: Roboto;src: url('/static/font/roboto-flex.ttf');font-display: swap;}body{font-family: Roboto, sans-serif;text-transform: lowercase;}.peach{display: flex;flex-direction: row;justify-content: center;}.root-container{display: flex;flex-direction: column;row-gap: 15px;}@media (min-width: 440px) {.root-container{width: 440px;}}@media (max-width: 440px) {.peach{flex-direction: column;}}/* Weather */.header-container,.main-container{display: flex;justify-content: center;}.header-container h1{margin: 0;}.header{margin-top: 10px;margin-bottom: 0px;font-size: 1.5em;}.period-container{display: flex;flex-direction: column;row-gap: 10px;}.now-container{display: flex;flex-direction: column;}.temperature-forecast-container{display: flex;flex-direction: column;align-items: center;}.temperature-forecast-container .temperature{font-size: 2.8em;}.temperature-forecast-container .forecast{font-size: 1.8em;font-weight: 500;color: rgb(10,10,10);text-align: center;}.wind-container{display: flex;flex-direction: row;justify-content: center;column-gap: 10px;color: rgb(10,10,10);}/* Q2H Timeline */.timeline-container{display: flex;justify-content: center;}.timeline-container .periods-container{width: 440px;display: flex;justify-content: space-around;align-content: space-around;}.timeline-container .periods-container .period .temperature{font-size: 1.2em;}.timeline-container .periods-container .period .hour{font-size: 0.8em;color: rgb(0,0,0);}/* Alerts */.alerts-container{display: flex;justify-content: center;flex-direction: column;row-gap: 10px;}@media (max-width: 440px) {.alerts-container{ padding: 0 15px;}}.alert-container .alert-header{background-color: rgb(0,0,0);color: rgb(255,255,255);font-weight: 900;padding: 5px 0px 5px 10px;}.alert-container{border-radius: 3px;border: 0.3px solid rgb(0,0,0);}.alert-container .alert-header .event-name{font-size: 1.2em;}.alert-container .alert-body{display: flex;flex-direction: column;padding: 15px 15px 2px 15px;}.alert-container .alert-body p{margin: 0 0 10px 0;}.alert-container .alert-body .severity{font-size: 1em;}.alert-container .alert-body .description{font-size: 0.9em;}.alert-container .alert-body .instruction{font-size: 0.8em;border-top: 1px solid rgb(150,150,150);padding: 10px 0 0 0;}/* BiDaily Timeline */.bd-timeline-container{display: flex;justify-content: center;}@media (max-width: 440px) {.bd-timeline-container{ padding: 0 15px;}}.bd-timeline-container .periods-container{width: 440px;display: flex;flex-direction: column;row-gap: 10px;}.bd-timeline-container .periods-container .period{display: flex;flex-direction: column;row-gap: 1px;border-radius: 3px;border: 0.1px solid rgb(0,0,0);padding: 10px 10px;}.bd-timeline-container .periods-container .period .name{font-size: 1.5em;}.bd-timeline-container .periods-container .period .temperature{font-size: 1.2em;}.bd-timeline-container .periods-container .period .forecast{font-size: 0.9em;}/* Search */.search-link-container{position: absolute;right: 10px;top: 0px;font-size: 1.5em;font-weight: 900;transform: rotate(-45deg);}.search-link-container a{text-decoration: none;color: rgb(0,0,0);}.search-container .search-form{display: flex;flex-direction: row;align-items: baseline;justify-content: center;}@media (max-width: 440px) {.search-container .search-form{ justify-content: flex-start; flex-wrap: wrap; row-gap: 5px;}}.search-container .search-form .search-box .location{font-size: 1.5em;border: 0;}.search-container .search-form .search-box .location:focus-within{border: 0;outline: 0;border-bottom: 2px solid rgb(0,0,0);}.search-container .search-form .search-box .location::placeholder{color: rgb(240,240,240);font-weight: 900;}.search-container .search-form .btn-block .search-btn{cursor: pointer;border: none;background-color: rgb(0 0 0);color: rgb(255 255 255);font-size: 1.3em;padding: 3px 10px 3px 10px;border-radius: 8px;font-weight: 900;}.message-container{font-size: 1.2em;}.message-container p{margin: 5px 0 5px 0;padding: 0 0 0 5px;}.search-result-container{display: flex;flex-direction: column;row-gap: 6px;}.search-result-container .item{font-size: 1.5em;}.search-result-container .location-name a{text-decoration: none;color: rgb(0,0,0);font-weight: 600;padding: 3px 5px 5px 5px;}.search-result-container .location-name a:hover{transition: background-color 0.3s linear;background-color: rgb(245,245,245);} \ No newline at end of file +/* Copyright © 2022 siddharth ravikumar *//* SPDX-License-Identifier: ISC *//* Peach */@font-face{font-family: Roboto;src: url('/static/font/roboto-flex.ttf');font-display: swap;}body{font-family: Roboto, sans-serif;text-transform: lowercase;}.peach{display: flex;flex-direction: row;justify-content: center;}.root-container{display: flex;flex-direction: column;row-gap: 15px;}@media (min-width: 440px) {.root-container{width: 440px;}}@media (max-width: 440px) {.peach{flex-direction: column;}}/* Weather */.header-container,.main-container{display: flex;justify-content: center;}.header-container h1{margin: 0;}.header-container .header{margin-top: 10px;margin-bottom: 0px;font-size: 1.5em;}.period-container{display: flex;flex-direction: column;row-gap: 10px;}.now-container{display: flex;flex-direction: column;}.temperature-forecast-container{display: flex;flex-direction: column;align-items: center;}.temperature-forecast-container .temperature{font-size: 2.8em;}.temperature-forecast-container .forecast{font-size: 1.8em;font-weight: 500;color: rgb(10,10,10);text-align: center;}.wind-container{display: flex;flex-direction: row;justify-content: center;column-gap: 10px;color: rgb(10,10,10);}/* Q2H Timeline */.timeline-container{display: flex;justify-content: center;}.timeline-container .periods-container{width: 440px;display: flex;justify-content: space-around;align-content: space-around;}.timeline-container .periods-container .period .temperature{font-size: 1.2em;}.timeline-container .periods-container .period .hour{font-size: 0.8em;color: rgb(0,0,0);}/* Alerts */.alerts-container{display: flex;justify-content: center;flex-direction: column;row-gap: 10px;}@media (max-width: 440px) {.alerts-container{ padding: 0 15px;}}.alert-container .alert-header{background-color: rgb(0,0,0);color: rgb(255,255,255);font-weight: 900;padding: 5px 0px 5px 10px;}.alert-container{border-radius: 3px;border: 0.3px solid rgb(0,0,0);}.alert-container .alert-header .event-name{font-size: 1.2em;}.alert-container .alert-body{display: flex;flex-direction: column;padding: 15px 15px 2px 15px;}.alert-container .alert-body p{margin: 0 0 10px 0;}.alert-container .alert-body .severity{font-size: 1em;}.alert-container .alert-body .description{font-size: 0.9em;}.alert-container .alert-body .instruction{font-size: 0.8em;border-top: 1px solid rgb(150,150,150);padding: 10px 0 0 0;}/* BiDaily Timeline */.bd-timeline-container{display: flex;justify-content: center;}@media (max-width: 440px) {.bd-timeline-container{ padding: 0 15px;}}.bd-timeline-container .periods-container{width: 440px;display: flex;flex-direction: column;row-gap: 10px;}.bd-timeline-container .periods-container .period{display: flex;flex-direction: column;row-gap: 1px;border-radius: 3px;border: 0.1px solid rgb(0,0,0);padding: 10px 10px;}.bd-timeline-container .periods-container .period .name{font-size: 1.5em;}.bd-timeline-container .periods-container .period .temperature{font-size: 1.2em;}.bd-timeline-container .periods-container .period .forecast{font-size: 0.9em;}/* Search */.search-link-container{position: absolute;right: 10px;top: 0px;font-size: 1.5em;font-weight: 900;transform: rotate(-45deg);}.search-link-container a{text-decoration: none;color: rgb(0,0,0);}.search-container .search-form{display: flex;flex-direction: row;align-items: baseline;justify-content: center;}@media (max-width: 440px) {.search-container .search-form{ justify-content: flex-start; flex-wrap: wrap; row-gap: 5px;}}.search-container .search-form .search-box .location{font-size: 1.5em;border: 0;}.search-container .search-form .search-box .location:focus-within{border: 0;outline: 0;border-bottom: 2px solid rgb(0,0,0);}.search-container .search-form .search-box .location::placeholder{color: rgb(240,240,240);font-weight: 900;}.search-container .search-form .btn-block .search-btn{cursor: pointer;border: none;background-color: rgb(0 0 0);color: rgb(255 255 255);font-size: 1.3em;padding: 3px 10px 3px 10px;border-radius: 8px;font-weight: 900;}.message-container{font-size: 1.2em;}.message-container p{margin: 5px 0 5px 0;padding: 0 0 0 5px;}.search-result-container{display: flex;flex-direction: column;row-gap: 6px;}.search-result-container .item{font-size: 1.5em;}.search-result-container .location-name a{text-decoration: none;color: rgb(0,0,0);font-weight: 600;padding: 3px 5px 5px 5px;}.search-result-container .location-name a:hover{transition: background-color 0.3s linear;background-color: rgb(245,245,245);}/** About **/.about-container,.terms-container,.privacy-container,.footer-container{padding: 0 20px; }.about-container p,.terms-container p,.privacy-container p{margin: 10px 0;padding: 0 5px;line-height: 25px;}.footer-container p{margin: 1px 0;padding: 0 5px;line-height: 0px;color: rgb(225,225,225);}.about-container a,.terms-container a,.privacy-container a{text-decoration: none;border-bottom: 2px solid rgb(0,0,0);color: rgb(0,0,0);}.footer-container a{text-decoration: none;color: rgb(225,225,225);}.about-container .header{font-size: 1.5em;}.about-container .header h1{margin: 5px; 0 15px;}.terms-container .header,.privacy-container .header{font-size: 1.3em;}.terms-container .header h2,.privacy-container .header h2{margin: 0 0 10px;} \ No newline at end of file diff --git a/templates/about.tmpl b/templates/about.tmpl new file mode 100644 index 0000000..950a3f4 --- /dev/null +++ b/templates/about.tmpl @@ -0,0 +1,77 @@ + + + + + peach - about + + + + + + +
+
+
+
+

peach

+
+
+

Peach's a barebones weather service.

+ +

+ Forecast data and weather alerts are from + weather.gov. +

+
+
+ +
+
+

terms

+
+
+

+ Peach's available for anybody to use. +

+ +

+ It is licensed under the + ISC license. Your + use of this service indicates an implicit + agreement to the terms of this license.

+ +

+ Peach's source code can be found at + + ricketyspace.net/peach + . +

+
+
+ +
+
+

privacy

+
+
+

+ Your IP address and the user agent header + of your browser gets itched into an + ephemeral log when you use Peach.

+ +

Peach does not use cookies.

+ +

That's it.

+
+
+ + + +
+
+ + -- cgit v1.2.3