-
Notifications
You must be signed in to change notification settings - Fork 3
Development
Kamite’s backend (including the control window GUI) is built with Java 19 (preview featues enabled); its web server specifically—with Javalin.
The client is built with TypeScript + SolidJS.
To compile and run the backend, run:
DEV=1 mvn compile exec:java -Dexec.args='--debug --controlWindow=no'
This requires Java 19.
To compile and run the client, run:
pnpm install
pnpm dev
Hot-reload version of the client is then served on port 3000
, while the
backend’s HTTP API endpoint runs on the usual configured program port
(4110
by default).
dev {
# Normally in dev mode the client is served separately using a dev server.
# With the following option enabled, the client also will be served by the
# backend from the client build done before compiling the program
serveStaticInDevMode = false
}
The config file’s shape is defined in config/config.spec.hocon
(specification format reference). This file is used as the
basis for generating the src/main/java/io/github/kamitejp/config/Config.java
source file (not checked into VCS), which therefore must be done every time the
specification file changes. To generate the Config.java
, run:
make gen-config
This also generates the src/main/java/resources/known_config_keys.txt
file (not checked into VCS either) that is included into the program JAR and
used at runtime to check user’s config for unknown keys.
make lint-java
Analyzes the Java code with PMD.
Beyond that, IntelliJ IDEA inspections are included, but they are work in progress: many of the ones that we will want disabled are not yet disabled, and for those that we will want to keep, a large part of the codebase has not been fixed yet.
make lint-ts
Typechecks the TypeScript code and lints it with eslint.
README.md
and
CHANGELOG.md
are linted with
markdownlint (make lint-docs
).
The Readme’s table of contents is generated with mdtoc.rb.
The C++ source for the Kamite Send Textractor extension is in the
extra/textractor/src
directory. The build
commands are specified under the textractor
target in the
Makefile
.