Project versioned at https://github.com/arvyy/kawa-web-collection
Compiled documentation can be viewed at https://arvyy.github.io/kawa-web-collection/README.html
If you want inspiration on how a real project might look like using this collection, checkout scheme index https://github.com/arvyy/r7rs-index-site
Kawa web collection is an attempt to take mature and feature-complete web libraries and tooling, put them in a minimal wrapper, and enable them to be used through vanilla R7RS syntax. All modules below are optional; you pay in final-artifact size cost only for what you choose to use.
If you want to create web applications using Scheme, and don’t mind learning maven, hopefully this collection will be just for you.
You must have these tools installed (commonly available through package managers)
-
JDK 11 (test by running
javac -version
) -
Maven 3 (test by running
mvn -version
)
You should eventually read up about maven in general (https://maven.apache.org/guides/getting-started/) and maven kawa plugin (https://github.com/arvyy/kawa-maven-plugin), however if you use project generation command below, it will output all command line commands you need to run and package the application.
Run mvn install
from the root of this repository to install collection in local maven repository, which will make individual modules available for local machine.
To generate a scaffold project, navigate to some directory, and execute
mvn archetype:generate "-DarchetypeGroupId=com.github.arvyy.kawa-web-collection" "-DarchetypeArtifactId=auth-archetype" "-DarchetypeVersion=0.0.1"
When asked for groupId enter some domain you control, when asked for artifactId enter a short name for the project.
This will create a simple application, that includes RDBS based authorization system (including proper password salting and hashing), MPA web interface, loggin with Logback.
To add other dependencies, use maven dependency block mentioned under each module, and paste it under <dependencies>
tag. Likewise, if you don’t need some of the dependencies in the scaffold,
remove corresponding <dependency>
entry.
As mentioned, generated project will include a slim readme file, containing most important CLI commands to run and compile.