Josha von Gizycki
d5788b1e84
|
4 years ago | |
---|---|---|
resources | 4 years ago | |
src/wanijo | 4 years ago | |
test/wanijo/infra | 4 years ago | |
.editorconfig | 5 years ago | |
.gitignore | 4 years ago | |
LICENSE | 5 years ago | |
README.md | 4 years ago | |
project.clj | 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
- the application is available on port
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
andNEO4J_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.