LIPAS is Finland's national database of sports and recreational facilities, maintained by the University of Jyvaskyla. The web application is open-source, built in Clojure/ClojureScript, and has been developed primarily by one developer since 2018. From 2018--2019 it was a full-time project. Since ~2019 it has been a side responsibility -- evenings and weekends alongside a day job. In mid-2025, AI coding tools (Claude Desktop, then Claude Code) were adopted.
Below is an attempt to provide a comprehensive reference table for Malli's built-in schemas, detailing their purpose, supported options, and usage examples. Note that this is based solely on the codebase you provided, so it may not represent the full capabilities of the library.
| Schema Key | Explanation | Supported Options | Usage Examples | |-----------------------|--------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------
| Ominaisuus,Operaatio,Arvo,Sanallinen huomautus tai kommentti | |
| Kioski,Päivitä nimi fi,Myynti- tai asiakaspalvelupiste, | |
| Kioski,Päivitä kuvaus fi,"Liikuntapaikalla on pysyvä myynti- tai asiakaspalvelupiste, josta on saatavissa asiakaspalvelua. Myynti- tai asiakaspalvelupiste voi olla rajoitetusti avoinna liikuntapaikan käyttöaikojen puitteissa.","Tuotannossa tämä tietokenttä on vanhalla nimellä ""kioski"". Devissä ei ole kioskia eikä tätä uutta ominaisuutta." | |
| Pintamateriaali,Päivitä kuvaus fi,Liikunta-alueiden pääasiallinen pintamateriaali - tarkempi kuvaus liikuntapaikan eri tilojen pintamateriaalista voidaan antaa pintamateriaalin lisätietokentässä, | |
| Yleisö-wc,Päivitä kuvaus fi,Onko kohteessa yleiseen käyttöön tarkoitettuja wc-tiloja?, | |
| Vapaa asiakaskäyttö,Päivitä kuvaus fi,Liikuntapaikka on asiakkaiden käytettävissä esim. kulkukortilla ilman henkilökunnan läsnäoloa. Vapaa asiakaskäyttö voi olla rajattu tiettyihin kellonaikoihin., | |
| Tila jaettavissa osiin,Päivitä kuvaus fi,Onko tila jaettavissa osiin esim. jakosein |
| kategoria,kategoria nimi fi,kategoria nimi se,kategoria nimi en,kategoria kuvaus fi,kategoria kuvaus se,kategoria kuvaus en,tyyppi,tyyppi nimi fi,tyyppi nimi se,tyyppi nimi en,tyyppi kuvaus fi,tyyppi kuvaus se,tyyppi kuvaus en,ominaisuus,ominaisuus nimi fi,ominaisuus nimi se,ominaisuus nimi en,ominaisuus kuvaus fi,ominaisuus kuvaus se,ominaisuus kuvaus en | |
| water-conditions,Vesiolosuhteet,Vattenförhållanden,Water conditions,,,,hazard,hazard,Vaaranpaikka,Farlig plats,Dangerous place,,,,name,Kohteen nimi,Objektets namn,Name of the object,"Esim. ""Haltia pihan opastustaulu""","T.ex. ""Haltia gårds informationsstavla""","E.g. ""Information board on Haltia yard""" | |
| water-conditions,Vesiolosuhteet,Vattenförhållanden,Water conditions,,,,hazard,hazard,Vaaranpaikka,Farlig plats,Dangerous place,,,,description,Yleiskuvaus,Allmän beskrivning,Overview,Rakenteen esittämiseen liittyvää tietoa.,Information om presentationen av strukturen,Information about the presentation of the structure | |
| water-conditions,Vesiolosuhteet,Vattenf |
| { | |
| "description" : "Location of Interest; a non-facility entity in LIPAS, that complements the sports facility data.", | |
| "oneOf" : [ { | |
| "title" : "Dangerous place", | |
| "description" : "water-conditions > hazard", | |
| "type" : "object", | |
| "properties" : { | |
| "id" : { | |
| "description" : "UUID v4 string", | |
| "type" : "string", |
| Aktiviteetti nimi fi,Aktiviteetti nimi se,aktiviteetti nimi en,Aktiviteetti kuvaus fi,Aktiviteetti kuvaus se,Aktiviteetti kuvaus en,Aktiviteetti tekninen nimi,LIPAS tyyppikoodit,Ominaisuus tekninen nimi,Ominaisuus tyyppi,Ominaisuus nimi fi,Ominaisuus nimi se,Ominaisuus nimi en,Ominaisuus kuvaus fi,Ominaisuus kuvaus se,Ominaisuus kuvaus en | |
| Retkeily ja ulkoilualueet,,,,,,outdoor-recreation-areas,110 102 106 104 108 109 111 103 107 112,arrival,textarea,Saapuminen,,,Autolla ja joukkoliikenteellä saapumiseen liittyvää tietoa,, | |
| Retkeily ja ulkoilualueet,,,,,,outdoor-recreation-areas,110 102 106 104 108 109 111 103 107 112,accessibility,textarea,Esteettömyys,,,Yleistä tietoa kohteen esteettömyydestä,, | |
| Retkeily ja ulkoilualueet,,,,,,outdoor-recreation-areas,110 102 106 104 108 109 111 103 107 112,contacts,contacts,Yhteystiedot,,,Tähän joku seliteteksti,, | |
| Retkeily ja ulkoilualueet,,,,,,outdoor-recreation-areas,110 102 106 104 108 109 111 103 107 112,images,images,Valokuvat,,,,, | |
| Retkeily ja ulkoilualueet,,,,,,outdoor-r |
| { | |
| "type" : "object", | |
| "properties" : { | |
| "outdoor-recreation-areas" : { | |
| "type" : "object", | |
| "properties" : { | |
| "additional-info-link" : { | |
| "description" : "Web link to a broader presentation of the place on an external website.", | |
| "type" : "object", | |
| "properties" : { |
| (ns frontend-re-frame.core | |
| (:require | |
| [re-frame.core :as re-frame] | |
| [reagent.core :as reagent] | |
| [reitit.core :as r] | |
| [reitit.coercion :as rc] | |
| [reitit.coercion.spec :as rss] | |
| [reitit.frontend :as rf] | |
| [reitit.frontend.controllers :as rfc] | |
| [reitit.frontend.easy :as rfe])) |
- download lumo, add it to
PATHand make it executable (on a Mac as simple asbrew install lumobut I think you can also usenpm install -g lumoto achieve the same thing) mkdir my-project && cd my-projectnpm install request request-promisetouch core.cljs- use your favourite editor to edit
core.cljs
(ns my-project.core)
- '.:/usr/src/app' (under base) will mount your project dir . into the container(s) path /usr/src/app. This way both your host machine and container(s) see the same files and any changes will persist on your host machine after container has terminated. Additionally there’s a separate volume for Maven cache, which you want to share between your containers (otherwise maven downloads dependencies each time you execute lein commands). Volume(s) defined at the bottom will ‘survive’ until they’re explicitly deleted.
docker-compose run lein <args>executes any lein tasks. Example:docker-compose run lein cleandocker-compose up figwheelfires up figwheel which will be accessible from host on port 3449. (ctrl-c will quit). You need to useupinstead ofrunbecause run doesn’t allocate port mappings and therefore you’d never be able to access index.html from your host machines browser.docker-compose run shellstarts a bash session in container, for exploring and fu