Skip to content

Latest commit

 

History

History
102 lines (73 loc) · 3.54 KB

Contributing.md

File metadata and controls

102 lines (73 loc) · 3.54 KB

Contributing

Thank you very much for your interest in this project!

Contributions are possible by various means.

Feedback

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.

Documentation

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.

Translating

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

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.