An example AT Protocol application, written in Elixir using atex and Drinkup.
1defmodule Statusphere.MixProject do
2 use Mix.Project
3
4 def project do
5 [
6 app: :statusphere,
7 version: "0.1.0",
8 elixir: "~> 1.15",
9 elixirc_paths: elixirc_paths(Mix.env()),
10 start_permanent: Mix.env() == :prod,
11 aliases: aliases(),
12 deps: deps(),
13 compilers: [:phoenix_live_view] ++ Mix.compilers(),
14 listeners: [Phoenix.CodeReloader]
15 ]
16 end
17
18 # Configuration for the OTP application.
19 #
20 # Type `mix help compile.app` for more information.
21 def application do
22 [
23 mod: {Statusphere.Application, []},
24 extra_applications: [:logger, :runtime_tools]
25 ]
26 end
27
28 def cli do
29 [
30 preferred_envs: [precommit: :test]
31 ]
32 end
33
34 # Specifies which paths to compile per environment.
35 defp elixirc_paths(:test), do: ["lib", "test/support"]
36 defp elixirc_paths(_), do: ["lib"]
37
38 # Specifies your project dependencies.
39 #
40 # Type `mix help deps` for examples and options.
41 defp deps do
42 [
43 {:phoenix, "~> 1.8.3"},
44 {:phoenix_ecto, "~> 4.5"},
45 {:ecto_sql, "~> 3.13"},
46 {:ecto_sqlite3, ">= 0.0.0"},
47 {:phoenix_html, "~> 4.1"},
48 {:phoenix_live_reload, "~> 1.2", only: :dev},
49 {:phoenix_live_view, "~> 1.1.0"},
50 {:lazy_html, ">= 0.1.0", only: :test},
51 {:phoenix_live_dashboard, "~> 0.8.3"},
52 {:esbuild, "~> 0.10", runtime: Mix.env() == :dev},
53 {:tailwind, "~> 0.3", runtime: Mix.env() == :dev},
54 {:telemetry_metrics, "~> 1.0"},
55 {:telemetry_poller, "~> 1.0"},
56 {:jason, "~> 1.2"},
57 {:dns_cluster, "~> 0.2.0"},
58 {:bandit, "~> 1.5"},
59 # {:atex, "~> 0.6"},
60 {:atex,
61 git: "https://github.com/cometsh/atex.git", ref: "2cc3686d47e30118ac8ac2d48cdc135a13da9163"},
62 {:drinkup, "~> 0.1"},
63 {:typedstruct, "~> 0.5"}
64 ]
65 end
66
67 # Aliases are shortcuts or tasks specific to the current project.
68 # For example, to install project dependencies and perform other setup tasks, run:
69 #
70 # $ mix setup
71 #
72 # See the documentation for `Mix` for more info on aliases.
73 defp aliases do
74 [
75 setup: ["deps.get", "ecto.setup", "assets.setup", "assets.build"],
76 "ecto.setup": ["ecto.create", "ecto.migrate", "run priv/repo/seeds.exs"],
77 "ecto.reset": ["ecto.drop", "ecto.setup"],
78 test: ["ecto.create --quiet", "ecto.migrate --quiet", "test"],
79 "assets.setup": [
80 # "tailwind.install --if-missing",
81 "esbuild.install --if-missing"
82 ],
83 "assets.build": ["compile", "tailwind statusphere", "esbuild statusphere"],
84 "assets.deploy": [
85 "tailwind statusphere --minify",
86 "esbuild statusphere --minify",
87 "phx.digest"
88 ],
89 precommit: ["compile --warnings-as-errors", "deps.unlock --unused", "format", "test"]
90 ]
91 end
92end