diff options
Diffstat (limited to 'users/grfn/bbbg')
-rw-r--r-- | users/grfn/bbbg/README.md | 129 | ||||
-rw-r--r-- | users/grfn/bbbg/README.org | 125 |
2 files changed, 129 insertions, 125 deletions
diff --git a/users/grfn/bbbg/README.md b/users/grfn/bbbg/README.md new file mode 100644 index 000000000000..7f63b9642924 --- /dev/null +++ b/users/grfn/bbbg/README.md @@ -0,0 +1,129 @@ +This directory contains a small web application that acts as a signup +sheet and attendee tracking system for [my local board gaming +meetup](https://www.meetup.com/brooklyn-based-board-gaming/). + +# Development + +## Installing dependencies + +### With Nix + Docker (\"blessed way\") + +Prerequisites: + +- [Nix](https://nixos.org/) +- [lorri](https://github.com/nix-community/lorri) +- [Docker](https://www.docker.com/) + +From this directory in a full checkout of depot, run the following +commands to install all development dependencies: + +``` shell-session +$ pwd +/path/to/depot/users/grfn/bbbg +$ direnv allow +$ lorri watch --once # Wait for a single nix shell build +``` + +Then, to run a docker container with the development database: + +``` shell-session +$ pwd +/path/to/depot/users/grfn/bbbg +$ arion up -d +``` + +### Choose-your-own-adventure + +Note that the **authoritative** source for dev dependencies is the +`shell.nix` file in this directory - those may diverge from what\'s +written here, and if so follow those versions rather than these. + +- Install the [clojure command-line + tools](https://clojure.org/guides/getting_started), with openjdk 11 +- Install and run a postgresql 12 database, with: + - A user with superuser priveleges, the username `bbbg` and the + password `password` + - A database called `bbbg` owned by that user. +- Export the following environment variables in a context visible by + whatever method you use to run the application: + - `PGHOST=localhost` + - `PGUSER=bbbg` + - `PGDATABASE=bbbg` + - `PGPASSWORD=bbbg` + +## Running the application + +Before running the app, you\'ll need an oauth2 client-id and client +secret for a Discord app. The application can either load those from a +[pass](https://www.passwordstore.org/) password store, or read them from +plaintext files in a directory. In either case, they should be +accessible at the paths `bbbg/discord-client-id` and +`bbbg/discord-client-secret` respectively. + +### From the command line + +``` shell-session +$ clj -A:dev +Clojure 1.11.0-alpha3 +user=> (require 'bbbg.core) +nil +user=> ;; Optionally, if you're using a directory with plaintext files for the discord client ID and client secret: +user=> (bbbg.util.dev-secrets/set-backend! [:dir "/path/to/that/directory"]) +user=> (bbbg.core/run-dev) +#<SystemMap> +user=> (bbbg.db/migrate! (:db bbbg.core/system)) +11:57:26.536 [main] INFO migratus.core - Starting migrations { } +11:57:26.538 [main] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Starting... { } +11:57:26.883 [main] INFO com.zaxxer.hikari.pool.HikariPool - HikariPool-1 - Added connection com.impossibl.postgres.jdbc.PGDirectConnection@3cae770e { } +11:57:26.884 [main] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Start completed. { } +11:57:26.923 [main] INFO migratus.core - Ending migrations { } +nil +``` + +This will run a web server for the application listening at +<http://localhost:8888> + +### In Emacs, with [CIDER](https://docs.cider.mx/cider/index.html) + [direnv](https://github.com/wbolster/emacs-direnv) + +Open `//users/grfn/bbbg/src/bbbg/core.clj` in a buffer, then follow the +instructions at the end of the file + +# Deployment + +## With nix+terraform + +Deployment configuration is located in the `tf.nix` file, which is +currently tightly coupled to my own infrastructure and AWS account but +could hypothetically be adjusted to be general-purpose. + +To deploy a new version of the application, after following \"installing +dependencies\" above, run the following command in a context with ec2 +credentials available: + +``` shell-session +$ terraform apply +``` + +The current deploy configuration includes: + +- An ec2 instance running nixos, with a postgresql database and the + bbbg application running as a service, behind nginx with an + auto-renewing letsencrypt cert +- The DNS A record for `bbbg.gws.fyi` pointing at that ec2 instance, + in the cloudflare zone for `gws.fyi` + +## Otherwise + +¯\\~(ツ)~\_/¯ + +You\'ll need: + +- An uberjar for bbbg; the canonical way of building that is + `nix-build + /path/to/depot -A users.grfn.bbbg.server-jar` but I\'m not sure how + that works outside of nix +- A postgresql database +- Environment variables telling the app how to connect to that + database. See `config.systemd.services.bbbg-server.environment` in + `module.nix` for which env vars are currently being exported by the + NixOS module that runs the production version of the app diff --git a/users/grfn/bbbg/README.org b/users/grfn/bbbg/README.org deleted file mode 100644 index e762aa019860..000000000000 --- a/users/grfn/bbbg/README.org +++ /dev/null @@ -1,125 +0,0 @@ -#+TITLE: Brooklyn-Based Board Gaming Signup Sheet - - This directory contains a small web application that acts as a signup sheet and - attendee tracking system for [[https://www.meetup.com/brooklyn-based-board-gaming/][my local board gaming meetup]]. - -* Development - -** Installing dependencies - -*** With Nix + Docker ("blessed way") - -Prerequisites: - -- [[https://nixos.org/][Nix]] -- [[https://github.com/nix-community/lorri][lorri]] -- [[https://www.docker.com/][Docker]] - -From this directory in a full checkout of depot, run the following commands to -install all development dependencies: - -#+begin_src shell-session -$ pwd -/path/to/depot/users/grfn/bbbg -$ direnv allow -$ lorri watch --once # Wait for a single nix shell build -#+end_src - -Then, to run a docker container with the development database: - -#+begin_src shell-session -$ pwd -/path/to/depot/users/grfn/bbbg -$ arion up -d -#+end_src - -*** Choose-your-own-adventure - -Note that the *authoritative* source for dev dependencies is the ~shell.nix~ -file in this directory - those may diverge from what's written here, and if so -follow those versions rather than these. - -- Install the [[https://clojure.org/guides/getting_started][clojure command-line tools]], with openjdk 11 -- Install and run a postgresql 12 database, with: - - A user with superuser priveleges, the username ~bbbg~ and the password ~password~ - - A database called ~bbbg~ owned by that user. -- Export the following environment variables in a context visible by whatever - method you use to run the application: - - ~PGHOST=localhost~ - - ~PGUSER=bbbg~ - - ~PGDATABASE=bbbg~ - - ~PGPASSWORD=bbbg~ - -** Running the application - -Before running the app, you'll need an oauth2 client-id and client secret for a -Discord app. The application can either load those from a [[https://www.passwordstore.org/][pass]] password store, -or read them from plaintext files in a directory. In either case, they should be -accessible at the paths ~bbbg/discord-client-id~ and -~bbbg/discord-client-secret~ respectively. - -*** From the command line - -#+begin_src shell-session -$ clj -A:dev -Clojure 1.11.0-alpha3 -user=> (require 'bbbg.core) -nil -user=> ;; Optionally, if you're using a directory with plaintext files for the discord client ID and client secret: -user=> (bbbg.util.dev-secrets/set-backend! [:dir "/path/to/that/directory"]) -user=> (bbbg.core/run-dev) -#<SystemMap> -user=> (bbbg.db/migrate! (:db bbbg.core/system)) -11:57:26.536 [main] INFO migratus.core - Starting migrations { } -11:57:26.538 [main] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Starting... { } -11:57:26.883 [main] INFO com.zaxxer.hikari.pool.HikariPool - HikariPool-1 - Added connection com.impossibl.postgres.jdbc.PGDirectConnection@3cae770e { } -11:57:26.884 [main] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Start completed. { } -11:57:26.923 [main] INFO migratus.core - Ending migrations { } -nil -#+end_src - -This will run a web server for the application listening at http://localhost:8888 - -*** In Emacs, with [[https://docs.cider.mx/cider/index.html][CIDER]] + [[https://github.com/wbolster/emacs-direnv][direnv]] - -Open ~//users/grfn/bbbg/src/bbbg/core.clj~ in a buffer, then follow the -instructions at the end of the file - -* Deployment - -** With nix+terraform - -Deployment configuration is located in the ~tf.nix~ file, which is currently -tightly coupled to my own infrastructure and AWS account but could -hypothetically be adjusted to be general-purpose. - -To deploy a new version of the application, after following "installing -dependencies" above, run the following command in a context with ec2 credentials -available: - -#+begin_src shell -$ terraform apply -#+end_src - -The current deploy configuration includes: - -- An ec2 instance running nixos, with a postgresql database and the bbbg - application running as a service, behind nginx with an auto-renewing - letsencrypt cert -- The DNS A record for ~bbbg.gws.fyi~ pointing at that ec2 instance, in the - cloudflare zone for ~gws.fyi~ - -** Otherwise - -¯\_(ツ)_/¯ - -You'll need: - -- An uberjar for bbbg; the canonical way of building that is ~nix-build - /path/to/depot -A users.grfn.bbbg.server-jar~ but I'm not sure how that works - outside of nix -- A postgresql database -- Environment variables telling the app how to connect to that database. See - ~config.systemd.services.bbbg-server.environment~ in ~module.nix~ for which - env vars are currently being exported by the NixOS module that runs the - production version of the app |