BeaconCMS/beacon

General Improvements: Onboarding concerns causing a barrier to use

c4lliope opened this issue · 4 comments

Hello; I'm eager to see Beacon reach production, especially the page builder and beacon_live_admin codebases. I'm a couple days in on launching beacon in my sample app, and there seem to be a number of rough edges to be addressed. Here are some issues I see, in no special order:

  • Can you share how to change the beacon_live_data assigns and how you recommend using this, please?
  • I uploaded an image to the media library through the live_admin app, and there is no clue regarding which URL path to access the media on.
  • The custom page seems less than useful.

image

  • I'm unsure how I ended up with three sample home pages, maybe I ran mix setup too much? Regardless, there needs to be a clear means of erasing any layout or page.

image

  • Please also describe the purpose of Meta Tags and each page's Schema.
  • The sample home page renders my_component. This is clearly added through the database seeds, though there is no means of seeing or changing components through beacon_live_admin or the beacon_admin "/admin" route.

So, six areas where small changes or guidance could really help more people begin using beacon during this preproduction phase. I hope to keep sharing small issues I see, so I can begin to learn how to help during the release process.

Since I'm only a beginner in Elixir and Phoenix, I'm really glad for all the code and resources Dockyard has shared in this space. Seems like a breath of fresh air to say goodbye to Rails, and hello to broader horizons.

Hey @c4lliope thanks for your efforts.

Can you share how to change the beacon_live_data assigns and how you recommend using this, please?

I started working on docs today and will be publishing a tutorial step-by-step to set up a site, including how to work with beacon_live_data.

I uploaded an image to the media library through the live_admin app, and there is no clue regarding which URL path to access the media on.

You can click on "View" to see the image and its URL. Note that improvements to the Media Library are on the roadmap.

The custom page seems less than useful.

That's just a simple example :)
In a regular site you'd either use the existing pages provided by Beacon or create new ones to extend admin with more features. Doc will be added to https://github.com/BeaconCMS/beacon_live_admin/blob/main/lib/beacon/live_admin/page_builder.ex

I'm unsure how I ended up with three sample home pages, maybe I ran mix setup too much? Regardless, there needs to be a clear means of erasing any layout or page.

The mix setup should recreate the database every time you run it. Erasing a layout is a bit more complicated than it sounds, we'll support unpublishing and deleting pages but layouts requires more research yet.

Please also describe the purpose of Meta Tags and each page's Schema.

Noted. I'll revisit it this week as I work on docs.

The sample home page renders my_component. This is clearly added through the database seeds, though there is no means of seeing or changing components through beacon_live_admin or the beacon_admin "/admin" route.

That's right, beacon_admin will be replaced with beacon_live_admin very soon and we'll start adding the other resources to that admin as page events, page helpers, page variants (A/B testing), stylesheets, snippets, components.

--

I hope that answer your questions and feel free to reply or keep sharing small issues. Our goal is to make it as simple as possible to get started and feedbacks like yours are useful.

related to #228

Love the idea of beacon, I'm sure its useful and do plan to use it, but I just ran into a pretty sharp edge that could turn off newcomers.

I noticed that the home page was using a component with <%= my_component("sample-component", ...) %> so I thought I'd try that out in a layout, so I edited a layout and added <%= my_component("Footer 1") %>.
once this was published and I refreshed the page, websockets couldn't connect, this was in the log:

error: undefined function my_component/1 (expected :"Elixir.BeaconWeb.LiveRenderer.Layout4333982c-5927-4bc4-a3ae-ea9d0cdec901" to define such a function or for it to be imported, but none are available)
  nofile:6: :"Elixir.BeaconWeb.LiveRenderer.Layout4333982c-5927-4bc4-a3ae-ea9d0cdec901".render/1

[error] GenServer {Beacon.Registry, {:demo, Beacon.Loader}} terminating
** (Beacon.LoaderError) failed to load module :"Elixir.BeaconWeb.LiveRenderer.Layout4333982c-5927-4bc4-a3ae-ea9d0cdec901"

After a few attempts to navigate and more errors it finally logged:

[notice] Application beacon_demo exited: shutdown

I didn't have any luck trying to access the errant record in iex using BeaconDemo.Repo, so I had to go find it using psql, update the dependent page layout_id and then delete the bad layout itself.

I guess it would be nice to fall back to some recent, known to work page/layout when this sort of thing happens, so that the app continues to work and mistakes like this corrected without rummaging around in the database directly.

@spacebat thanks for the report, that kind of error will indeed leave the page in a bad state so we're exploring ways to avoid this problem and also give some options for the user, see #367