Skip to content

Contributing

Thank you for your interest in actively participating in the project's development! Please read the Contributor Covenant Code of Conduct and the Contributor License Agreement first.

The project is based on re-frame, a framework for building Modern Web Apps in ClojureScript. You should probably take a look at their exceptional documentation.

Style Guide

We try to follow the Clojure Style Guide as much as possible.

In addition to the idiomatic names, we use the following conventions

  • e - event
  • el - element
  • attr, attrs - attribute, attributes
  • prop, props - property, properties

We also use the following namespace aliases

  • v - views
  • e - events
  • h - handlers
  • s - subs

If the namespace belongs to a different module, we use module.v.

App structure

Main structure

src\
├── renderer\     <--- renderer process
├── main.cljs     <--- main process
└── preload.cljs  <--- preload script

We are trying to split our code under renderer into relatively independent modules, following re-frame's app structure suggestions with some minor additions.

module\
├── core.cljs     <--- entry point
├── db.cljs       <--- schema, validation
├── views.cljs    <--- reagent views
├── events.cljs   <--- event handlers
├── subs.cljs     <--- subscription handlers
├── handlers.cljs <--- helper functions for db transformations
├── styles.css    <--- styles
└── README.md     <--- documentation

Useful development shortcuts

Ctrl+Shift+I Toggle devtools
Ctrl+Shift+H Toggle 10x
Ctrl+R Reload app