diff --git a/README.md b/README.md index 7ead46e..4239e35 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,16 @@ # AshHq -Getting started is a standard phoenix/ash/postgres application. +## Getting Started -To get data imported from the various projects that are currently seeded (see the seeds.ex file), once you've set up and created the data base, go into iex and run `AshHq.Docs.Importer.import()`. +1. Fork and clone this repository. +2. Set up the project by running `mix do deps.get, deps.compile, setup` (the import may take a while). +3. Install the frontend assets by running `npm i --prefix assets`. +4. Run the server with `iex -S mix phx.server` +5. Open [http://localhost:4000](http://localhost:4000) -The liveview part is not very conventional, I was focused on speed when I first wrote it, and it (as things always do) evolved from something far more simple. The truly complicated part is that the docs are *not* static content like you would typically see for documentation. They are all stored in a database, because they can all be full-text searched using postgres. Eventually it would make sense to serve the individual doc pages from a CDN or something like that. The interesting pages in that regard is the `Docs` page. We do quite a bit of work to make sure that we are only loading the html that will be served for the exact document we are seeing. +## A Bit of History + +The liveview part is not very conventional, I was focused on speed when I first wrote it, and it (as things always do) evolved from something far more simple. The truly complicated part is that the docs are _not_ static content like you would typically see for documentation. They are all stored in a database, because they can all be full-text searched using postgres. Eventually it would make sense to serve the individual doc pages from a CDN or something like that. The interesting pages in that regard is the `Docs` page. We do quite a bit of work to make sure that we are only loading the html that will be served for the exact document we are seeing. The magic of search is done via `AshHq.Docs.Extensions.Search`, which modifies resources to make them full text searchable using postgres, amongst other things. See `lib/ash_hq/docs/extensions/search/transformers/add_search_structure.ex` for more. diff --git a/lib/ash_hq_web/pages/docs.ex b/lib/ash_hq_web/pages/docs.ex index a1bdbdf..f01e45c 100644 --- a/lib/ash_hq_web/pages/docs.ex +++ b/lib/ash_hq_web/pages/docs.ex @@ -35,7 +35,7 @@ defmodule AshHqWeb.Pages.Docs do def render(assigns) do ~F"""
-
+
@@ -81,7 +81,7 @@ defmodule AshHqWeb.Pages.Docs do />
-
+