Go Newsletter - unders/mywiki GitHub Wiki
New
GET "/subscription;subscribe-to-newsletter"
POST "/subscription;subscribe" # REDIRECT_TO => GET "/subscription;waiting-for-email-confirmation"
GET "/subscription;waiting-for-email-confirmation"
POST "/subscription;confirm/{id}" # REDIRECT_TO => GET "/subscription;welcome"
GET "/subscription;welcome"
POST "/subscription;unsubscribe/{id}" # REDIRECT_TO => GET "/subscription;welcome-back"
GET "/subscription;welcome-back"
newsstand
-> |main |
|handler| -> |app| -> | issue |
| subscription |
~/p/src/newsstand
.mise
tasks
cmd
newsstand
main.go
internal/
app/
app_config.go
issue/
issue_get_archive.go
subscription/
testdata/
subscription_config.go
subscription_options.go
subscription.go
subscription_get_subscribe_to_newsletter.go
subscription_post_subscribe.go
subscription_get_waiting_for_email_confirmation.go
subscription_post_confirm.go
subscription_get_welcome.go
subscription_post_unsubscribe.go
subscription_welcome_back.go
editorissue/
donations/
feeds/
html/
page/
component/
button.html
button.js
button.css
layout/
head.html
header.html
page/
error.internal.html
error.notfound.html
index.html
editor.issue.show.html
issue.show.html
issue.archive.html
subscription.subscribe.to.newsletter.html
subscription.confirm.html
subscription.confirmed.html
static/
bundle.sha3.js
bundle.sha3.css
page/
component
button.js
button.css
image
font
Monorepo
Tools
~/p/src
obelix
.mise/tasks/:task_name
:desktop--install --os fedora --k8s kind --release demo-1.0
:server--install --os fedora --systemd --release demo-1.0
release
demo-1.0
demo-1.0__os_fedora.toml
demo-1.0__k8s_kind.toml
demo-1.0__systemd.toml
demo-1.0__release.toml
Frontend
gRPC
Mono Repo
cmd
go
internal
resend/
resend_mailer.go
newsstand
main.go
mise.toml
newsstand_main.go
app/
newsstand_app_config.go
newsstand_app_mailer.go
issue/
subscription/
newsstand_subscription_config.go
newsstand_subscription_options.go
newsstand_subscription_handler.go
newsstand_subscription_handler_create.go
editorissue/
donations/
feeds/
internal
newstand
grpc
buf.yaml
proto
gen
go
ts
www
src
routes/
app.css
app.html
lib/
deno.json
svelte.config.js
vite.config.ts
Design
Personas
- Subscriber
- Reader
- Feed reader
- Feed subscriber
- Donator
- Author
Use Cases (Diagram)
- Newsletter
- Subscribe
- Unsubscribe
- Donate
- Browse Issue Archive
- Read issue
- Manage Issue
- Browse Issue List
- Browse Subscriber List
- Set subscriber as unsubscribed
Page Titles
- Welcome to the Go Newsletter
- Issue Archive
- Issue Archive 2024
- Issue 2024.1: The Go Wizard
Routes
GET "/"
GET "/issue;archive?limit=3"
GET "/issue;archive?year=2024&limit=30&next=ff8f8f8f8ff8eee1134"
GET "/issue;archive?limit=3&next=ff8f8f8f8ff8eee1134&prev=ff8f8f8f8ff8eee1134"
GET "/issue;latest" # REDIRECT_TO => GET "/issue/2024.1"
GET "/issue/{id}" # "/issue/2024.1"
GET "/subscription;new"
POST "/subscription;subscribe" # REDIRECT_TO => GET "/subscription;waiting-for-email-confirmation"
GET "/subscription;waiting-for-email-confirmation"
POST "/subscription;confirm/{id}" # REDIRECT_TO => GET "/subscription;welcome"
GET "/subscription;welcome"
POST "/subscription;unsubscribe/{id}" # REDIRECT_TO => GET "/subscription;welcome-back"
GET "/subscription;welcome-back"
POST "/api/webhooks;resend"
GET "/donation;new"
POST "/donation" # REDIRECT_TO => GET "/donation;thank-you"
GET "/donation;thank-you"
GET "/editor/issue;list?status=draft&limit=20"
GET "/editor/issue;new"
POST "/editor/issue;create" # REDIRECT_TO => GET "/editor/issue/{id}"
GET "/editor/issue/{id}"
GET "/editor/issue;edit/{id}"
POST "/editor/issue;update/{id}" # REDIRECT_TO => GET "/editor/issue/{id}"
POST "/editor/issue;publish/{id}" # REDIRECT_TO => GET "/editor/issue/{id}"
POST "/editor/issue;unpublish/{id}" # REDIRECT_TO => GET "/editor/issue/{id}"
GET "/editor/subscriber;list?status=subscriber&limit=3&next=ff8f8f8f8ff8eee1134&prev=ff8f8f8f8ff8eee1134"
GET "/editor/subscriber;list?status=unsubscribed&limit=3&next=ff8f8f8f8ff8eee1134&prev=ff8f8f8f8ff8eee1134"
POST "/editor/subscriber;unsubscribe/{email}" # REDIRECTO_TO => "/editor/subscriber;list?status=unsubscribed&order_by=ASC"
GET "/feeds"
GET "/feeds;rss.xml"
GET "/feeds;atom.xml"
CODE
cmd
newsletter
newsletter_main.go
app/
newsletter_app_config.go
newsletter_app_mailer.go
browser/
issue/
subscription/
newsletter_subscription_config.go
newsletter_subscription_options.go
newsletter_subscription_handler.go
newsletter_subscription_handler_create.go
editorissue/
tips/
feeds/
internal/
eventlog/
newsletter_eventlog_handler.go
resend/
newsletter_resend_mailer.go
internal/
resend/
resend_mailer.go
Tools
Go