You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
Go to file
Josha von Gizycki 133eb49d6b
alfred job file
4 years ago
.alfred alfred job file 4 years ago
resources remove unused file 4 years ago
src/wanijo fix assign form usage 4 years ago
test/wanijo/infra fix assign form usage 4 years ago
.editorconfig nice looking tags, moar specs, tag creating 5 years ago
.gitignore add .lsp to gitignore 4 years ago
LICENSE add license 5 years ago
README.md rename wanijo.infrastructure to wanijo.infra 4 years ago
project.clj clean up transitive dependencies 4 years ago

README.md

Wanijo

(Toki Pona) Wan: One, a, unite, make one Ijo: thing, something, object Wanijo: Unite things

How to develop

You'll need:

  • JDK >= 8
  • Leiningen >= 2.9

First time launch with fresh a database

  • start a neo4j database with lein neo4j
  • start a repl with lein repl or similar
  • import wanijo.infra.repl
    • if you use leiningen for launching the repl, this will be your init-ns
  • run wanijo.infra.repl/create-user! using the desired username and password as parameters to create an application user
  • run wanijo.infra.repl/run-migrations! to create desireable database constraints and structures

Launch the application server

  • start a repl
  • import wanijo.infra.repl
  • run wanijo.infra.repl/dev-server!
    • the application is available on port 8080

Launch as a standalone

  • build the uberjar via lein uberjar
  • start your neo4j database, preferably not via lein neo4j
  • use the environment variables NEO4J_PORT, NEO4J_HOST, NEO4J_USER and NEO4J_PASS to control how wanijo connects to the database
  • start the jar file via java -jar [jar-file]-standalone.jar
  • if this is the first start with a fresh database, connect to the nREPL as described in the chapter "nREPL" and run the commands described in "First time launch with a fresh database"

nREPL

When started via its main method, as is the uberjar case, an nREPL server is started with it. The default port is 7888, but this can be configured via the NREPL_PORT environment variable.

To connect via the command line, use the following command:

clj -Sdeps '{:deps {nrepl/nrepl {:mvn/version "0.7.0"}}}' -m nrepl.cmdline --connect --host host --port port

"Architecture"

Structure your application as it seems to fit your needs. Then call it architecture and pat yourself on the shoulder. You've achieved something!

The first level of structure are the building blocks of the domain, e.g. instance, schema. Inside these namespaces you'll find namespaces for each technical need: routing, database access, domain rules etc.

wanijo.handler collects all routes and passes them to ring.

wanijo.infra contains the namespaces needed for technical code that do not belong to any domain, like database access, routing or similars.