diff --git a/.tool-versions b/.tool-versions index bb6f10c0..b48d63f0 100644 --- a/.tool-versions +++ b/.tool-versions @@ -1,3 +1,3 @@ -elixir 1.14.0 +elixir 1.15.0 nodejs 18.12.0 -erlang 25.1.2 +erlang 26.0.1 diff --git a/lib/ash_hq/docs/extensions/render_markdown/changes/render_markdown.ex b/lib/ash_hq/docs/extensions/render_markdown/changes/render_markdown.ex index 99c85b77..e7777675 100644 --- a/lib/ash_hq/docs/extensions/render_markdown/changes/render_markdown.ex +++ b/lib/ash_hq/docs/extensions/render_markdown/changes/render_markdown.ex @@ -62,7 +62,7 @@ defmodule AshHq.Docs.Extensions.RenderMarkdown.Changes.RenderMarkdown do AshHq.Docs.Extensions.RenderMarkdown.table_of_contents?(changeset.resource) ) do {:error, html_doc, error_messages} -> - Logger.warn(""" + Logger.warning(""" Error while transforming to HTML: #{inspect(error_messages)} Transforming: diff --git a/lib/ash_hq_web/components/app_view/top_bar.ex b/lib/ash_hq_web/components/app_view/top_bar.ex index c964a7a0..5366f106 100644 --- a/lib/ash_hq_web/components/app_view/top_bar.ex +++ b/lib/ash_hq_web/components/app_view/top_bar.ex @@ -17,7 +17,7 @@ defmodule AshHqWeb.Components.AppView.TopBar do
+
+ <#slot {@icon} /> +
+
+ {@name} +
+
+ <#slot {@description} /> +
+
+ """ + end +end diff --git a/lib/ash_hq_web/pages/docs.ex b/lib/ash_hq_web/pages/docs.ex index c5cd33af..7e20618b 100644 --- a/lib/ash_hq_web/pages/docs.ex +++ b/lib/ash_hq_web/pages/docs.ex @@ -403,7 +403,7 @@ defmodule AshHqWeb.Pages.Docs do |> Enum.flat_map(fn mod_name -> case find_module(libraries, selected_versions, mod_name) do nil -> - Logger.warn("No such module found called #{inspect(mod_name)}") + Logger.warning("No such module found called #{inspect(mod_name)}") [] module -> diff --git a/lib/ash_hq_web/pages/home.ex b/lib/ash_hq_web/pages/home.ex index fe3c913c..5e08deb1 100644 --- a/lib/ash_hq_web/pages/home.ex +++ b/lib/ash_hq_web/pages/home.ex @@ -3,7 +3,7 @@ defmodule AshHqWeb.Pages.Home do use Surface.LiveComponent - alias AshHqWeb.Components.{CalloutText, CodeExample, SearchBar} + alias AshHqWeb.Components.{CalloutText, CodeExample, Feature, SearchBar} alias Surface.Components.Form alias Surface.Components.Form.{Field, Submit, TextInput} import AshHqWeb.Components.CodeExample, only: [to_code: 1] @@ -15,46 +15,20 @@ defmodule AshHqWeb.Pages.Home do data(email_form, :any) data(theme, :atom, default: :default) - def render(%{__context__: %{platform: :ios}} = assigns) do - ~F""" - - - Build - and - - - applications - - - with a - - - tool-chain. - - - - A declarative foundation for ambitious Elixir applications. - - - Model your domain, derive the rest. - - - """ - end - def render(assigns) do ~F"""
-
+
- Build and applications with a tool-chain. + Model your domain,
-
- A declarative foundation for ambitious Elixir applications. Model your domain, derive the rest. +
+ Build applications with a tool-chain.
+ -
-
-

- Framework -

-

- What is Ash? -

-

- Ash Framework is a declarative, resource-oriented application - development framework for Elixir. A resource can model anything, - like a database table, an external API, or even custom code. Ash - provides a rich, and extensive set of tools for interacting with - and building on top of these resources. By modeling your - application as a set of resources, other tools know exactly how to - use them, allowing extensions like AshGraphql and AshJsonApi to - provide top tier APIs with minimal configuration. With - filtering, sorting, pagination, calculations, aggregations, pub_sub, - policy authorization, rich introspection, and much more built-in. - Coupled with a comprehensive suite of tools to allow you to build your own - extensions, the possibilities are endless. -

-
-
-

- Write it once -

-

- Why do developers keep reinventing the wheel? -

-

- Every time you start a new app, are you rebuilding features that you've already built many times? - Wouldn't it be great if you could just focus on the important parts of an app without reinventing ways to authenticate, add permissions, etc. - Ash allows you to not only use patterns in existing extensions, it lets you extract your own patterns into custom extensions. - So when you need to do it again in a new application, it's already done. Just wire it up! -

-
- -
-

- Consistency -

-

- A place for everything and everything in its place -

-

- Ash helps keep things neat and organized by providing good patterns for structuring your application. - Over time and with larger teams of different experience levels, - patterns change and drift away from each-other across our applications. - With that said, nothing in Ash depends on what folders or files you put things in, so you are - free to experiment or make the choices that make sense to you. -

-

- Spaghetti belongs in the kitchen, not in your codebase. - Ash provides the ability to keep all similar parts of your application consistent, - making it easy to share an architectural vision while allowing escape hatches to do something different if needed. -

-
- -
-

- Incredibly Powerful -

-

- Ash is more than it appears -

-

- Ash is more than just auto-generated API or an Admin UI. - It’s a fully extensible DSL to model your domain, which creates a declarative, - highly introspectable representation. This in turn can be used to derive anything you want. -

-

- Ash has built in extensions that allow you to generate Admin UIs or Phoenix LiveView Form helpers, - saving a ton of boilerplate. Even going as far as fully swapping data layers, Ash lets you do - something traditionally extremely difficult with ease. -

-
+
+ + <:description> + building blocks that scale with the complexity of your application. + + <:icon> + + + + + + + <:description> + Easily create rich, customizable, full featured backed by Absinthe. + + <:icon> + + + + + <:description> + Create JSON:API spec compliant apis in , not days. + + <:icon> + + alt-curly + + + + + + <:description> + Effortless authentication with and out of the box. + + <:icon> + + + + + + + <:description> + Add row and field level policies to to data. + + <:icon> + + + + + + + <:description> + for splitting your application by tenant. + + <:icon> + + + + + + + <:description> + Postgres, Ets, Mnesia, CSV and + + <:icon> + + + + + + + + + + <:description> + A you can drop right into your application. + + <:icon> + + + + + + + <:description> + A suite of tools for you to extensions and DSLs. + + <:icon> + + + + + +