This repository contains a work-in-progress webapp for the CSDC DAO. It currently has two components: a server and a GUI.
This projects uses Nix to manage dependencies. To install Nix, run:
curl -L https://nixos.org/nix/install | sh
Then, enter the development shell with:
nix-shell
which will download all necessary dependencies. Most common commands are
accessible from the Makefile. To list the available commands, run make
.
In particular:
-
For faster Haskell development, there are many
ghcid-*
targets. -
For Elm development, there is
make gui-build
.
The first time, deploy the database and ipfs service with:
make docker
First, make sure the GUI is built with:
make gui-build
Finally, run:
make serve
and the server should be available at localhost:8080
.
Make sure to create an account with access to the free tier.
The following commands should be executed inside the Nix shell, by running
nix-shell
before starting.
First, to login, run:
$ flyctl auth login
Then, the Postgres database must be created:
$ flyctl postgres create
This command will show the credentials, which should be saved in a secrets.json
file as:
{
"pgstring": "postgresql://user:password@host:port"
}
Finally, create your app:
$ flyctl launch
In this step you will choose the app name, which will determine its URL. This name should be used for the tag-and-push-image
In the following, the app name will be called $APP_NAME
.
Make dure the image is in the fly.toml
configuration file:
[build]
image = "registry.fly.io/$APP_NAME:latest"
Save this name in the secrets.json
file:
{
"app_name": "$APP_NAME",
"pgstring": "postgresql://user:password@host:port"
}
Once more, all commands should be run inside the Nix shell, by running
nix-shell
before starting.
First, build the docker image and load it:
$ just build-and-load-image
Tag the image conveniently, and push it:
$ just tag-and-push-image $APP_NAME
And finally, deploy:
$ just deploy $APP_NAME