Giter Site home page Giter Site logo

saapas's Introduction

Saapas

Opinionated example project for ClojureScript using Boot instead of Leiningen. Was inspired by chestnut but has grown since to include other stuff to demonstrate Boot.

This is not an Leiningen template as I don't believe in setting up complex projects automatically. Instead you should study this project and copy only stuff you need and understand.

Prerequisites

You should first install Boot. Also you should be running the latest version.

Features

  • Uses component and reloaded.repl to provide utilities to start, stop and reset (reload) the app.
  • Simple Compojure backend
  • Simple Reagent frontend
  • LESS to write CSS
    • less4clj is able to import files from classpath
    • You can add dependency to e.g. bootstrap from webjars to your regular dependencies and then use @import "bootstrap/less/bootstrap.less" on your .less files.
  • or alternatively, Sass to write CSS
    • sass4clj is also able to import files from classpath
  • dev task starts the whole development workflow
    • Check boot dev --help for options
    • Browser repl included
    • Watches for file changes
      • *.less changes trigger less compilation
      • *.cljs changes trigger cljs compilation
    • Live-reloading
      • *.js, *.css, *.html changes send notification to browser thought WebSocket and browser loads the new files
  • autotest task to run Clj and Cljs tests whenever files are changed
    • Uses boot-alt-test to run Clojure tests as fast as possible and only running the changed tests are file changes
    • Uses boot-cljs-test to run ClojureScript tests with Doo, allowing the tests to run in many of JS environments, like browsers, Node or PhantomJS.
  • Provides package task that creates Uberjar that can be used to run the app on a server
    • Cljs will be compiled using :advanced optimization and uses minified foreign libraries, like React
    • Only backend.main is AOT compiled, so that it is possible to start the application with java -jar saapas.jar but so that rest of the code is compiled at application startup to avoid problems with AOT compilation.

Usage

To start everything run:

$ boot dev
boot.user=>
# App should now be running, you can use following commands to restart the app
boot.user=> (stop) ; Stop app
boot.user=> (start) ; Start app
boot.user=> (reset) ; Stop, reload all namespaces, start

If you want a repl where you can execute commands, you can start a nrepl client which connects to the nrepl server started by the dev task by running

$ boot repl -c

License

CC0
To the extent possible under law, Juho Teperi has waived all copyright and related or neighboring rights to Saapas. This work is published from: Suomi.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.