Starting to get the project set up. Nothing is even nearly complete yet.

This commit is contained in:
simon 2016-10-13 14:25:54 +01:00
commit b6a24bc1ce
59 changed files with 7118 additions and 0 deletions

16
env/dev/clj/user.clj vendored Normal file
View file

@ -0,0 +1,16 @@
(ns user
(:require [mount.core :as mount]
[youyesyet.figwheel :refer [start-fw stop-fw cljs]]
youyesyet.core))
(defn start []
(mount/start-without #'youyesyet.core/repl-server))
(defn stop []
(mount/stop-except #'youyesyet.core/repl-server))
(defn restart []
(stop)
(start))

60
env/dev/clj/youyesyet/core.clj vendored Normal file
View file

@ -0,0 +1,60 @@
(ns youyesyet.core
(:require [youyesyet.handler :as handler]
[luminus.repl-server :as repl]
[luminus.http-server :as http]
[luminus-migrations.core :as migrations]
[youyesyet.config :refer [env]]
[clojure.tools.cli :refer [parse-opts]]
[clojure.tools.logging :as log]
[mount.core :as mount])
(:gen-class))
(def cli-options
[["-p" "--port PORT" "Port number"
:parse-fn #(Integer/parseInt %)]])
(mount/defstate ^{:on-reload :noop}
http-server
:start
(http/start
(-> env
(assoc :handler handler/app)
(update :port #(or (-> env :options :port) %))))
:stop
(http/stop http-server))
(mount/defstate ^{:on-reload :noop}
repl-server
:start
(when-let [nrepl-port (env :nrepl-port)]
(repl/start {:port nrepl-port}))
:stop
(when repl-server
(repl/stop repl-server)))
(defn init-jndi []
(System/setProperty "java.naming.factory.initial"
"org.apache.naming.java.javaURLContextFactory")
(System/setProperty "java.naming.factory.url.pkgs"
"org.apache.naming"))
(defn start-app [args]
(init-jndi)
(doseq [component (-> args
(parse-opts cli-options)
mount/start-with-args
:started)]
(log/info component "started"))
(.addShutdownHook (Runtime/getRuntime) (Thread. handler/destroy)))
(defn -main [& args]
(cond
(some #{"migrate" "rollback"} args)
(do
(mount/start #'youyesyet.config/env)
(migrations/migrate args (select-keys env [:database-url]))
(System/exit 0))
:else
(start-app args)))

View file

@ -0,0 +1,10 @@
(ns youyesyet.dev-middleware
(:require [ring.middleware.reload :refer [wrap-reload]]
[selmer.middleware :refer [wrap-error-page]]
[prone.middleware :refer [wrap-exceptions]]))
(defn wrap-dev [handler]
(-> handler
wrap-reload
wrap-error-page
wrap-exceptions))

14
env/dev/clj/youyesyet/env.clj vendored Normal file
View file

@ -0,0 +1,14 @@
(ns youyesyet.env
(:require [selmer.parser :as parser]
[clojure.tools.logging :as log]
[youyesyet.dev-middleware :refer [wrap-dev]]))
(def defaults
{:init
(fn []
(parser/cache-off!)
(log/info "\n-=[youyesyet started successfully using the development profile]=-"))
:stop
(fn []
(log/info "\n-=[youyesyet has shut down successfully]=-"))
:middleware wrap-dev})

12
env/dev/clj/youyesyet/figwheel.clj vendored Normal file
View file

@ -0,0 +1,12 @@
(ns youyesyet.figwheel
(:require [figwheel-sidecar.repl-api :as ra]))
(defn start-fw []
(ra/start-figwheel!))
(defn stop-fw []
(ra/stop-figwheel!))
(defn cljs []
(ra/cljs-repl))

14
env/dev/cljs/youyesyet/dev.cljs vendored Normal file
View file

@ -0,0 +1,14 @@
(ns ^:figwheel-no-load youyesyet.app
(:require [youyesyet.core :as core]
[devtools.core :as devtools]
[figwheel.client :as figwheel :include-macros true]))
(enable-console-print!)
(figwheel/watch-and-reload
:websocket-url "ws://localhost:3449/figwheel-ws"
:on-jsload core/mount-components)
(devtools/install!)
(core/init!)

4
env/dev/resources/config.edn vendored Normal file
View file

@ -0,0 +1,4 @@
{:dev true
:port 3000
;; when :nrepl-port is set the application starts the nREPL server on load
:nrepl-port 7000}

51
env/dev/resources/logback.xml vendored Normal file
View file

@ -0,0 +1,51 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<statusListener class="ch.qos.logback.core.status.NopStatusListener" />
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<!-- encoders are assigned the type
ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
<encoder>
<charset>UTF-8</charset>
<pattern>%date{ISO8601} [%thread] %-5level %logger{36} - %msg %n</pattern>
</encoder>
</appender>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>log/youyesyet.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>log/youyesyet.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>100MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<!-- keep 30 days of history -->
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<charset>UTF-8</charset>
<pattern>%date{ISO8601} [%thread] %-5level %logger{36} - %msg %n</pattern>
</encoder>
</appender>
<logger name="org.apache.http" level="warn">
<AppenderRef ref="STDOUT"/>
<AppenderRef ref="FILE"/>
</logger>
<logger name="org.xnio.nio" level="warn">
<AppenderRef ref="STDOUT"/>
<AppenderRef ref="FILE"/>
</logger>
<logger name="com.zaxxer.hikari" level="warn">
<AppenderRef ref="STDOUT"/>
<AppenderRef ref="FILE"/>
</logger>
<logger name="com.mchange" level="warn">
<AppenderRef ref="STDOUT"/>
<AppenderRef ref="FILE"/>
</logger>
<logger name="org.eclipse.jetty" level="warn">
<AppenderRef ref="STDOUT"/>
<AppenderRef ref="FILE"/>
</logger>
<root level="DEBUG">
<appender-ref ref="STDOUT" />
<appender-ref ref="FILE" />
</root>
</configuration>

11
env/prod/clj/youyesyet/env.clj vendored Normal file
View file

@ -0,0 +1,11 @@
(ns youyesyet.env
(:require [clojure.tools.logging :as log]))
(def defaults
{:init
(fn []
(log/info "\n-=[youyesyet started successfully]=-"))
:stop
(fn []
(log/info "\n-=[youyesyet has shut down successfully]=-"))
:middleware identity})

7
env/prod/cljs/youyesyet/prod.cljs vendored Normal file
View file

@ -0,0 +1,7 @@
(ns youyesyet.app
(:require [youyesyet.core :as core]))
;;ignore println statements in prod
(set! *print-fn* (fn [& _]))
(core/init!)

2
env/prod/resources/config.edn vendored Normal file
View file

@ -0,0 +1,2 @@
{:production true
:port 3000}

37
env/prod/resources/logback.xml vendored Normal file
View file

@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<statusListener class="ch.qos.logback.core.status.NopStatusListener" />
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>log/youyesyet.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>log/youyesyet.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>100MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<!-- keep 30 days of history -->
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<charset>UTF-8</charset>
<pattern>%date{ISO8601} [%thread] %-5level %logger{36} - %msg %n</pattern>
</encoder>
</appender>
<logger name="org.apache.http" level="warn">
<AppenderRef ref="FILE"/>
</logger>
<logger name="org.xnio.nio" level="warn">
<AppenderRef ref="FILE"/>
</logger>
<logger name="com.zaxxer.hikari" level="warn">
<AppenderRef ref="FILE"/>
</logger>
<logger name="com.mchange" level="warn">
<AppenderRef ref="FILE"/>
</logger>
<logger name="org.eclipse.jetty" level="warn">
<AppenderRef ref="FILE"/>
</logger>
<root level="INFO">
<appender-ref ref="FILE" />
</root>
</configuration>

3
env/test/resources/config.edn vendored Normal file
View file

@ -0,0 +1,3 @@
{:test true
:port 3001
:nrepl-port 7001} ;; when :nrepl-port is set the application starts the nREPL server on load