diff --git a/.classpath b/.classpath
new file mode 100644
index 0000000..ef97453
--- /dev/null
+++ b/.classpath
@@ -0,0 +1,79 @@
+
+
+	
+		
+			
+			
+		
+	
+	
+		
+			
+			
+		
+	
+	
+		
+			
+			
+		
+	
+	
+		
+			
+			
+			
+		
+	
+	
+		
+			
+			
+		
+	
+	
+		
+			
+			
+		
+	
+	
+		
+			
+		
+	
+	
+		
+			
+		
+	
+	
+		
+			
+			
+		
+	
+	
+		
+			
+		
+	
+	
+		
+			
+			
+			
+			
+		
+	
+	
+		
+			
+			
+			
+			
+			
+		
+	
+	
+
diff --git a/.gitignore b/.gitignore
index 3d04b99..46e1d16 100644
--- a/.gitignore
+++ b/.gitignore
@@ -11,11 +11,13 @@ pom.xml.asc
 /resources/public/vendor
 /bower_components/
 /resources/public/js/lib/
+.clj-kondo/
 .lein-deps-sum
 .lein-repl-history
 .lein-plugins/
 .lein-failures
 .lein-env
+.lsp/
 .nrepl-port
 /node_modules/
 .DS_Store
@@ -49,3 +51,11 @@ youyesyet\.dump\.20180816
 *.tar
 
 src/clj/youyesyet/cache\.clj
+
+.lsp/sqlite.db
+
+.settings/
+
+.classpath
+
+.project
diff --git a/.project b/.project
new file mode 100644
index 0000000..ec3e80d
--- /dev/null
+++ b/.project
@@ -0,0 +1,40 @@
+
+
+	youyesyet
+	
+	
+	
+	
+		
+			ccw.builder
+			
+			
+		
+		
+			org.eclipse.jdt.core.javabuilder
+			
+			
+		
+		
+			org.eclipse.m2e.core.maven2Builder
+			
+			
+		
+	
+	
+		org.eclipse.jdt.core.javanature
+		org.eclipse.m2e.core.maven2Nature
+		ccw.nature
+	
+	
+		
+			1621149723161
+			
+			30
+			
+				org.eclipse.core.resources.regexFilterMatcher
+				node_modules|.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__
+			
+		
+	
+
diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..ac8e750
--- /dev/null
+++ b/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,9 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore
+org.eclipse.jdt.core.compiler.processAnnotations=disabled
+org.eclipse.jdt.core.compiler.release=disabled
+org.eclipse.jdt.core.compiler.source=1.5
diff --git a/README.md b/README.md
index 714542e..bf96b96 100644
--- a/README.md
+++ b/README.md
@@ -10,7 +10,7 @@ generated using Luminus version "2.9.11.05"
 
 ## Status
 
-Very early pre-alpha; user interface mostly works (enough to demonstrate), back end is hardly started.
+Alpha level code. Most of it works, but it's a bit fragile.
 
 ## What is it supposed to do?
 
@@ -36,6 +36,20 @@ Where *username* is the username required to access the database, and *thisisnot
 
 It will be helpful for you to have the [Zenhub](https://www.zenhub.com/) plugin in your browser, either Firefox or Chrome, as I'm using it for project planning.
 
+## Build procedure
+
+YouYesYet is build on the [Application Description Language](https://github.com/simon-brooke/adl) framework, which is also mine and not widely used. Application Description Language is a very high level descriptor language for applications, which allows a huge amount of code to be automatically generated. This generated code is **not** checked into the repository; instead, you must regenerate it before you can build. 
+
+Consequently, to get a build running:
+
+1. clone the repository, if you have not already done so;
+2. within your cloned repository, check out a branch (usually `develop` or `master`);
+3. if you have previously built the project within your cloned repository, run `lein clean`;
+4. run `lein npm install`; 
+5. **this is the important bit** run `lein adl` to generate much of the application code;
+6. run `lein run` to start your development server;
+7. if you want to do client debugging, you'll want to run `figwheel` in a separate process, but also from the same cloned repository directory; I normally do this by opening a second terminal and invoking `lein figwheel`.
+
 ## Further Reading
 
 If you're thinking of joining in development on this I'd strongly recommend you get hold of a copy of [Dmitry Sotnikov](https://github.com/yogthos)'s [Web Development with Clojure, Second Edition](https://pragprog.com/book/dswdcloj2/web-development-with-clojure-second-edition).
@@ -187,5 +201,4 @@ Copyright © 2016 Simon Brooke for the Radical Independence Campaign.
 Licensed under the GNU General Public License, version 2.0 or (at your option) any later version.
 
 **NOTE THAT** files which are directly created by the Luminus template do not currently have a GPL header
-at the top; files which are new in this project or which have been substantially modified for this project
-do have a GPL header at the top.
+at the top; files which are new in this project or which have been substantially modified for this project should have a GPL header at the top.
diff --git a/env/dev/clj/user.clj b/env/dev/clj/user.clj
index 97cb362..33da5ed 100644
--- a/env/dev/clj/user.clj
+++ b/env/dev/clj/user.clj
@@ -30,6 +30,6 @@
   (.bind "java:comp/env/jdbc/testdb"
          (doto (org.postgresql.ds.PGSimpleDataSource.)
            (.setServerName "localhost")
-           (.setDatabaseName "youyesyet_dev")
+           (.setDatabaseName "loriner") ;; "youyesyet_dev")
            (.setUser "youyesyet")
            (.setPassword "thisisnotsecure"))))
diff --git a/project.clj b/project.clj
index b52f6a5..3325240 100644
--- a/project.clj
+++ b/project.clj
@@ -1,55 +1,63 @@
-(defproject youyesyet "0.2.2"
+(defproject youyesyet "0.2.3-SNAPSHOT"
 
   :description "Canvassing tool for referenda"
   :license {:name "GNU General Public License,version 2.0 or (at your option) any later version"
             :url "https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html"}
   :url "https://github.com/simon-brooke/youyesyet"
 
+  ;; NOTE: lein-ancient failed on 20220616; it will have to be done soon if the project is to
+  ;; procede, but I need to fix regressions first.
+
   :dependencies [[adl-support "0.1.6"]
+                 [binaryage/devtools "1.0.3"]
                  [bouncer "1.0.1"]
                  [ch.qos.logback/logback-classic "1.2.3"]
                  [clj-oauth "1.5.5"]
-                 [cljsjs/react-leaflet "1.6.5-0"]
- ;;                [cljsjs/react-leaflet "2.0.1-0"] is available but doesn't seem to work fully
+ ;;                [cljsjs/react-leaflet "1.6.5-0"]
+ ;;                [cljsjs/react-leaflet "2.4.0-0"] is available but doesn't seem to work fully
+                 [cljsjs/leaflet "1.5.1-0"] ;; leaflet-reagent-reframe uses this and it works with Firefox!
+                 [cljsjs/react  "16.11.0-0"]
+                 [cljsjs/react-dom "16.11.0-0"]
                  [cljs-ajax "0.8.0"]
                  [com.andrewmcveigh/cljs-time "0.5.2"]
                  [clojure.java-time "0.3.2"]
                  [com.cemerick/url "0.1.1"]
                  [compojure "1.6.1"]
                  [conman "0.8.3"]
-                 [cprop "0.1.13"]
+                 [cprop "0.1.14"]
                  [day8.re-frame/http-fx "0.1.6"]
                  [korma "0.4.3"]
                  [lib-noir "0.9.9" :exclusions [org.clojure/tools.reader]]
-                 [luminus/ring-ttl-session "0.3.2"]
+                 [luminus/ring-ttl-session "0.3.3"]
                  [luminus-nrepl "0.1.6"]
-                 [luminus-migrations "0.6.5"]
+                 [luminus-migrations "0.6.6"]
                  [luminus-immutant "0.2.5"]
-                 [markdown-clj "1.0.8"]
-                 [metosin/compojure-api "1.1.12"]
+                 [markdown-clj "1.10.0"]
+                 [metosin/compojure-api "1.1.13"]
                  [metosin/ring-http-response "0.9.1"]
-                 [migratus "1.2.3"]
+                 [migratus "1.2.7"]
                  [mount "0.1.16"]
                  [org.clojure/clojure "1.9.0"]
                  [org.clojure/clojurescript "1.10.520" :scope "provided"]
-                 [org.clojure/core.memoize "0.7.1"]
+                 [org.clojure/core.memoize "0.8.2"]
                  ;;[org.clojure/spec.alpha "0.2.168"]
                  [org.clojure/tools.cli "0.4.2"]
-                 [org.clojure/tools.logging "0.4.1"]
-                 [org.postgresql/postgresql "42.2.5"]
+                 [org.clojure/tools.logging "0.5.0"]
+                 [org.postgresql/postgresql "42.2.8"]
                  [org.webjars/bootstrap "4.3.1"]
-                 [org.webjars/font-awesome "5.8.1"]
+                 [org.webjars/font-awesome "5.11.2"]
                  [org.webjars.bower/tether "1.4.4"]
                  [postgre-types "0.0.4"]
-                 [re-frame "0.10.6"]
-                 [reagent "0.8.1"]
-                 [reagent-utils "0.3.2"]
+                 [re-frame "1.2.0"]
+                 [reagent "1.1.1"]
+                 [reagent-utils "0.3.4"]
+                 [recalcitrant "0.1.2"]
                  [ring-middleware-format "0.7.4"]
                  [ring/ring-defaults "0.3.2"]
                  [ring/ring-servlet "1.7.1"]
                  [ring-webjars "0.2.0"]
-                 [secretary "1.2.3"]
-                 [selmer "1.12.12"]]
+                 [clj-commons/secretary "1.2.4"]
+                 [selmer "1.12.40"]]
 
   :deploy-repositories [["releases" :clojars]
                         ["snapshots" :clojars]]
@@ -64,9 +72,9 @@
   :main ^:skip-aot youyesyet.core
   :migratus {:store :database :db ~(get (System/getenv) "DATABASE_URL")}
 
-  :plugins [[lein-adl "0.1.7"]
+  :plugins [[lein-adl "0.1.8-SNAPSHOT"]
             [lein-cljsbuild "1.1.7"]
-            [lein-codox "0.10.7-multilang"]
+            [lein-codox "0.10.7"]
             [lein-cprop "1.0.3"]
             [lein-kibit "0.1.6"]
             [lein-less "1.7.5"]
@@ -89,7 +97,8 @@
   :npm {:dependencies [[datatables.net "1.10.19"]
                        [datatables.net-dt "1.10.19"]
                        [jquery "3.3.1"]
-                       [leaflet "1.3.1"]
+                       ;; [leaflet "1.3.1"]
+                       ;; [react "18.2.0"]
                        [selectize "0.12.6"]
                        [signature_pad "2.3.2"]
                        [simplemde "1.11.2"]]
@@ -153,15 +162,15 @@
                                            [ring/ring-devel "1.7.1"]
                                            [org.webjars/webjars-locator-jboss-vfs "0.1.0"]
                                            [luminus-immutant "0.2.5"]
-                                           [pjstadig/humane-test-output "0.9.0"]
+                                           [pjstadig/humane-test-output "0.10.0"]
                                            [binaryage/devtools "0.9.10"]
                                            [com.cemerick/piggieback "0.2.2"]
                                            [directory-naming/naming-java "0.8"]
                                            [doo "0.1.11"]
-                                           [figwheel-sidecar "0.5.18"]]
+                                           [figwheel-sidecar "0.5.19"]]
                             :plugins      [[com.jakemccrary/lein-test-refresh "0.23.0"]
                                            [lein-doo "0.1.10"]
-                                           [lein-figwheel "0.5.16"]
+                                           [lein-figwheel "0.5.19"]
                                            [org.clojure/clojurescript "1.10.520"]]
                             :cljsbuild {:builds
                                         {:app
diff --git a/resources/public/img/map-pins/basic_map_pin.png b/resources/public/img/map-pins/basic_map_pin.png
deleted file mode 100644
index c14e0be..0000000
Binary files a/resources/public/img/map-pins/basic_map_pin.png and /dev/null differ
diff --git a/resources/templates/app.html b/resources/templates/app.html
index acf8274..0b45f02 100644
--- a/resources/templates/app.html
+++ b/resources/templates/app.html
@@ -2,9 +2,9 @@
 {% block head %}
     
     
-    
-    
-    
+    
+    
+    
     
     
{{site-title}}: {{title}}
 {% endblock %}
@@ -42,13 +42,17 @@
 {% endblock %}
 {% block extra-tail %}
 
-
-
 
 
-{% script "js/lib/node_modules/signature_pad/dist/signature_pad.min.js" %}
-{% script "js/lib/node_modules/leaflet/dist/leaflet.js" %}
-{% script "/js/app.js" %}
+
+
+
+
+
+
+
+
+
 {% endblock %}
 
 
diff --git a/resources/templates/base.html b/resources/templates/base.html
index 92e2a75..a60bd83 100644
--- a/resources/templates/base.html
+++ b/resources/templates/base.html
@@ -17,6 +17,9 @@
     
     
     {% endblock %}
+    {% if servlet-context %}
+    
+    {% endif %}
   
   
     {% block whole-page %}
@@ -24,20 +27,20 @@
     {% block top %}
     
       
-        

+        
         
        
@@ -87,17 +90,17 @@
     
     
diff --git a/resources/templates/login.html b/resources/templates/login.html
index dca783e..1c337db 100644
--- a/resources/templates/login.html
+++ b/resources/templates/login.html
@@ -11,7 +11,7 @@
 {% endblock %}
 
 {% block content %}
-