# Recycled Cloud Management Interface (Meta) [![builds.sr.ht status](https://builds.sr.ht/~fnux.svg?search=recycledcloud-meta)](https://builds.sr.ht/~fnux?search=recycledcloud-meta) This repository tracks the initial work for a web interface atop the recycled cloud. It is written in [Elixir](https://elixir-lang.org/), making use of the [Phoenix Web Framework](https://www.phoenixframework.org/). ## Notes * This project is in its early phase: we're first making things correct and simple. We'll worry about efficiency later. * The (Phoenix) project has been initialized with the `--no-webpack` and `--no-dashboard` flags to avoid unnecessary clutter. We can add them back later if needed! * (sourcehut) CI is defined in `.build.yml`. It currently runs on my sr.ht account since we do not have our own instance (yet). * Authentication is based on José Valim and Aaron Renner's [Phx.Gen.Auth](https://hex.pm/packages/phx_gen_auth), adapted for LDAP-backed authentication. * You can run the linter with `mix credo`. ## Getting Started You'll need Erlang/OTP and elixir installed on your system. It usually boils down to installing the `elixir` package of your distribution. Once done, you can: * Install dependencies with `mix deps.get` * Create and migrate your database with `mix ecto.setup` - You'll need PostgreSQL here. I (tfloure) usually run it in an isolated container with something along the lines of `podman run --rm -it -e POSTGRES_HOST_AUTH_METHOD=trust --expose 5432 -p 5432:5432 postgres:latest`. * Start Phoenix endpoint with `mix phx.server` (or `iex -S mix phx.server`, if you want a REPL). Now you can visit [`localhost:4000`](http://localhost:4000) from your browser. ## Useful Resources Elixir Language: * (Good!) Introduction and various guides: https://elixir-lang.org/getting-started/introduction.html * Elixir Docs: https://hexdocs.pm/elixir/Kernel.html * Mix (= build tool) Docs: https://hexdocs.pm/mix/Mix.html * IEx (= REPL) Docs: https://hexdocs.pm/iex/IEx.html Phoenix Web Framework: * Official website: https://www.phoenixframework.org/ * Guides: https://hexdocs.pm/phoenix/overview.html * Docs: https://hexdocs.pm/phoenix * Forum: https://elixirforum.com/c/phoenix-forum * Source: https://github.com/phoenixframework/phoenix