Skip to content

Separate "Server" (API) and "Client" (UI) #127

@NfNitLoop

Description

@NfNitLoop

FeoBlog is currently (Oct. 2024) distributed as a single executable which includes:

  • An HTTP server, written in Rust, which exposes the FeoBlog API. (HTTP endpoints for Items and file attachments).
  • An in-browser web application which uses that API to display content to users.

I really wanted the web application to be usable as a standalone client as a demonstration of the FeoBlog protocol. But, it has unfortunate effects on the UX. In particular:

  • First-page experience is poor -- you have to download the full client and fetch data before first page view.
  • SEO is poor.
  • One repository has two different codebases (Rust, Svelte+TypeScript).
  • Links to the web app (as implemented) can't get link previews, without using this workaround:
Screenshot 2024-10-30 at 12 50 04 PM

Rough plan:

  • Separate the protocol into its own project.
  • Give it a new name. (The "feo" part of "FeoBlog" is the ugly UI. Maybe avoid "blog" altogether.)
  • (maybe) Reorganize the HTTP API endpoints so that it's easy to serve them alongside a UI. (ex: Nginx config that forwards /v1/* to the API server, and everything else to a new client web app.)
  • Rewrite the UI with SSR in mind. It can just use the API on the back-end, no need for it to go from the user's browser to be a good demo of the protocol.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions