The Ash Framework homepage and documentation site.
Find a file
Rebecca Le 3941ef4aa2
chore: Extract testimonials to shared function component
A lot of the classes were subtly different - now the only thing
that needs to change is the margin that creates the overlapping effect
2023-02-02 14:07:01 +08:00
.github chore: fix CI pt 3 2022-11-16 15:33:42 -05:00
.vscode fix: clicking on search result closes 2022-09-19 17:14:15 -04:00
assets chore: remove mermaid.js (#87) 2023-02-01 02:56:41 -05:00
config chore: AshHq.Resource -> Ash.Resource in formatter config 2023-02-01 21:09:07 -05:00
iOS improvement: add xCode stuff to the iOS folder 2022-09-09 00:45:20 -04:00
lib chore: Extract testimonials to shared function component 2023-02-02 14:07:01 +08:00
priv chore: format 2023-02-01 21:21:50 -05:00
rel WIP 2022-03-25 17:17:01 -04:00
test chore: fix build/check 2023-01-18 00:15:34 -05:00
.check.exs fix: don't use live_redirect anywhere because we care about the session 2022-11-16 14:36:05 -05:00
.credo.exs improvement: get a build set up 2022-08-06 19:22:58 -04:00
.dockerignore WIP 2022-03-31 17:29:23 -04:00
.formatter.exs improvement: searchable forums 2023-01-25 01:56:17 -05:00
.gitignore Feat(DocSidebar): Extract TreeView component to improve consistency (#48) 2022-11-13 10:43:11 -05:00
.tool-versions chore: set erlang version 2022-11-15 20:29:58 -05:00
CHANGELOG.md chore: fix CI 2022-11-16 14:50:32 -05:00
dialyzer.ignore_warnings chore: fix build 2022-12-27 14:11:08 -05:00
Dockerfile improvement: fix build/format/other small issues 2023-01-22 23:03:12 -05:00
fly.toml chore: migrate on deploy again 2023-01-25 02:40:09 -05:00
LICENSE.md create LICENSE.md (#51) 2022-11-13 11:52:54 -05:00
livebook.livemd improvement: fix item paths, make sidebar much friendlier 2022-08-04 13:14:58 -04:00
mix.exs chore: fix ash_authentication dep 2023-01-30 13:51:15 -05:00
mix.lock improvement: optimized & simpler search 2023-02-01 02:11:15 -05:00
README.md docs: Added packages for *nix installs (#63) 2022-12-22 23:30:48 -05:00

AshHq

Getting Started

  1. Fork and clone this repository.
  2. Set up the project by running mix do deps.get, deps.compile, setup
  3. Run mix import to import the latest dependencies from hex (this may take a while)
  4. Install the frontend assets by running npm i --prefix assets.
  5. Run the server with iex -S mix phx.server
  6. Open http://localhost:4000

Note to linux users: You will need the following packages (or their equivalents) to compile successfully: erlang-dev erlang-parsetools erlang-os-mon erlang-xmerl erlang-tools

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.

There is also a usage of Ash.Flow for searching, which can be found in lib/ash_hq/docs/search/search.ex. It is actually a bit un-ideal, as the better thing to do would be to use a postgres UNION. There are ways to do that with Ash by extracting the resource queries and then making a union, but it was much easier to just put a search action in a flow. Eventually, Ash will support unions.