Thank you very much for your interest in this project!
Contributions are possible by various means.
Feedback is very important and most welcome! You can currently use the
issue tracker to leave
feedback. You can also reach me via matrix via @eikek:matrix.org
.
If you find a feature request already filed, you can vote on it. I tend to prefer most voted requests to those without much attention.
The website https://eikek.github.io/sharry
contains the main
documentation and is also hosted in this repository. The sources are
in /modules/microsite
folder. It is built using
Jekyll, a static site generator via the sbt
microsite plugin.
There are two states of documentation: the currently released one and
one for the next (not yet released) version. The current documentation
is in branch current-docs
. If you'd like to contribute to the
current state of documentation, please base the PR off the branch
current-docs
. The state for the next version is master
.
If you want to contribute to the documentation: the main content is in
/modules/microsite/docs
and sibling directories, while assets are in
src/main/resources/microsite
. It is recommended to install
nix in order to not
fiddle with dependencies. If you have nix installed, you can create an
environment with all the tools available:
$ nix develop
Alternatively, additionally to nix, install direnv which will take care of that whenever entering the project directory.
Run the above in two terminals. Then in one, run sbt
to generate the site:
$ sbt
sbt:sharry-root> microsite/makeMicrosite
In the other terminal run jekyll, for example:
$ jekyll serve -s modules/microsite/target/site --baseurl /sharry
If you use nix
, there is a shortcut jekyll-sharry
in scope.
Then see the site at http://localhost:4000/sharry
. You need to run
microsite/makeMicrosite
after a change and then reload the page.
Any help to translate Sharry to more languages or fix existing strings is very much appreciated. There is this wiki page containing a guide on how to get started.
Code is very welcome, too, of course.
If you want to work on something larger, please create an issue to discuss it first.
The backend of sharry is written in Scala using a pure functional style. It builds on great libraries from the typelevel ecosystem, i.e. cats, fs2, doobie and http4s.
The web frontend is written in Elm, which is a nice functional language that compiles to javascript. The frontend is included in the server component. The CSS is provided by tailwind.
For Scala and Elm this project uses a code format standard. For Scala
this is enforced at CI using
scalafix and
scalafmt. You can run sbt fix
to
reformat all files to the standard (Scala). For elm, use
elm-format
in your editor or
via the cli. Elm format is not enforced yet via CI, but it's much
appreciated to adopt it.
The development page contains some tips to get started.