defmodule AshHqWeb.Pages.Home do
@moduledoc "The home page"
use Surface.LiveComponent
alias AshHqWeb.Components.{CalloutText, CodeExample, SearchBar}
alias Surface.Components.Form
alias Surface.Components.Form.{Field, Submit, TextInput}
import AshHqWeb.Components.CodeExample, only: [to_code: 1]
import AshHqWeb.Tails
prop device_brand, :string
data signed_up, :boolean, default: false
data email_form, :any
data theme, :atom, default: :default
def render(%{__context__: %{platform: :ios}} = assigns) do
~F"""
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.
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!
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.
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.
Join our mailing list for (tastefully paced) updates!
{/if}Alembic offers expert support to help you overcome any challenges and ensure the success of your project. Our team has extensive knowledge and experience with Ash Framework, as well as the larger Elixir ecosystem and can provide personalized assistance to help you build products, implement new features, or improve your existing codebases. Contact us to learn more about our support options and how we can help your project succeed.
"{@text}"
{@author}
{@title}