Go Newsletter - unders/mywiki GitHub Wiki

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"

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