diff --git a/.gitignore b/.gitignore index b94e5b4..d3977dc 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,7 @@ *~ .cpcache -/backend/resources/public/compiled/ +/backend/resources/public/compiled/* +/frontend/assets/css/ +/frontend/elm-stuff/ +/frontend/index.html +/frontend/compiled/ diff --git a/.idea/watcherTasks.xml b/.idea/watcherTasks.xml index 9d98b43..f957e1e 100644 --- a/.idea/watcherTasks.xml +++ b/.idea/watcherTasks.xml @@ -1,4 +1,4 @@ - + \ No newline at end of file diff --git a/Makefile b/Makefile index 497481f..29b7456 100644 --- a/Makefile +++ b/Makefile @@ -1,26 +1,34 @@ ROOT=$(shell pwd) -ASSETS_DIR=backend/resources/public/compiled +BACKEND_ASSETS_DIR=backend/resources/public/compiled -TARGET_CSS_DIR=$(ASSETS_DIR)/css +TARGET_CSS_DIR=$(BACKEND_ASSETS_DIR)/css TARGET_CSS_FILE=$(TARGET_CSS_DIR)/style.css +LIVE_CSS_DIR=frontend/compiled/css +LIVE_CSS_FILE=$(LIVE_CSS_DIR)/style.css -TARGET_JS_DIR=$(ASSETS_DIR)/js +TARGET_JS_DIR=$(BACKEND_ASSETS_DIR)/js TARGET_JS_FILE=$(TARGET_JS_DIR)/app.js SOURCE_ELM_FILES=$(wildcard frontend/src/*.elm) SOURCE_SASS_FILE=frontend/assets/sass/style.scss +INDEX_FILE=backend/resources/public/index.html + .PHONY: compile compile: $(TARGET_JS_FILE) $(TARGET_CSS_FILE) $(TARGET_JS_FILE): $(SOURCE_ELM_FILES) mkdir -p $(TARGET_JS_DIR) - cd frontend && elm make src/Main.elm --output $(ROOT)/$(APP_JS) --optimize + cd frontend && elm make src/Main.elm --output $(ROOT)/$(TARGET_JS_FILE) --optimize $(TARGET_CSS_FILE): $(SOURCE_SASS_FILE) mkdir -p $(TARGET_CSS_DIR) sassc --style compressed $(SOURCE_SASS_FILE) > $(TARGET_CSS_FILE) +$(LIVE_CSS_FILE): $(SOURCE_SASS_FILE) + mkdir -p $(LIVE_CSS_DIR) + sassc $(SOURCE_SASS_FILE) > $(LIVE_CSS_FILE) + .PHONY: compile-debug compile-debug: cd frontend && elm make src/Main.elm --output $(ROOT)/$(APP_JS) --debug @@ -28,8 +36,14 @@ compile-debug: .PHONY: elm-live elm-live: - cd frontend && elm-live src/Main.elm --pushstate -- --debug + cd frontend && \ + elm-live src/Main.elm \ + --pushstate \ + --start-page=../$(INDEX_FILE) \ + -- \ + --debug \ + --output=compiled/js/app.js .PHONE: sass-live sass-live: - while sleep 1; do make -s $(TARGET_CSS_FILE); done + while sleep 1; do make -s $(LIVE_CSS_FILE); done diff --git a/backend/.nrepl-port b/backend/.nrepl-port deleted file mode 100644 index 980bda8..0000000 --- a/backend/.nrepl-port +++ /dev/null @@ -1 +0,0 @@ -38495 \ No newline at end of file diff --git a/backend/backend.iml b/backend/backend.iml index 4291198..9051e46 100644 --- a/backend/backend.iml +++ b/backend/backend.iml @@ -5,6 +5,7 @@ + diff --git a/backend/deps.edn b/backend/deps.edn index e6d9f47..67a5648 100644 --- a/backend/deps.edn +++ b/backend/deps.edn @@ -1,4 +1,6 @@ {:deps {http-kit/http-kit {:mvn/version "2.3.0"} metosin/reitit {:mvn/version "0.5.6"} - ring/ring-defaults {:mvn/version "0.3.2"}}} + ring/ring-defaults {:mvn/version "0.3.2"} + hiccup/hiccup {:mvn/version "1.0.5"}} + :paths ["src" "resources"]} diff --git a/backend/resources/public/index.html b/backend/resources/public/index.html new file mode 100644 index 0000000..783b8e7 --- /dev/null +++ b/backend/resources/public/index.html @@ -0,0 +1,34 @@ + + + + + Open-Retro + + + + + + diff --git a/backend/src/openretro/main.clj b/backend/src/openretro/main.clj index 276a075..dae8b46 100644 --- a/backend/src/openretro/main.clj +++ b/backend/src/openretro/main.clj @@ -1,12 +1,8 @@ (ns openretro.main (:require [org.httpkit.server :as http-server] - [reitit.ring :as reitit-ring] - [ring.middleware.defaults :refer [wrap-defaults]])) - -(defn hello [req] - {:status 200 - :headers {"Content-Type" "text/html"} - :body "http-kit"}) + [reitit.ring :as ring] + [ring.middleware.defaults :refer [wrap-defaults api-defaults]] + [hiccup.page :as h])) (defn ws-endpoint [req] (http-server/with-channel req channel @@ -19,12 +15,12 @@ (http-server/send! channel data))))) (def router - (wrap-defaults - (reitit-ring/ring-handler - (reitit-ring/router - [["/hello" {:get {:handler hello}}] - ["/ws" {:get {:handler ws-endpoint}}]])) - ring.middleware.defaults/api-defaults)) + (ring/ring-handler + (ring/router + [["/ws" {:get {:handler ws-endpoint}}]]) + (ring/routes + (ring/create-resource-handler + {:path "/"})))) (defonce server (atom nil)) @@ -34,9 +30,13 @@ (reset! server nil))) (defn start-server [] - (reset! server - (http-server/run-server #'router - {:port 8080}))) + (reset! + server + (http-server/run-server + (fn [req] + (clojure.pprint/pprint req) + (router req)) + {:port 8080}))) (defn restart-server [] (stop-server) @@ -45,6 +45,5 @@ (comment (restart-server)) - -(defn -main [& args] +(defn -main [& _] (start-server)) diff --git a/frontend/src/Main.elm b/frontend/src/Main.elm index dd8aa45..6c6a16f 100644 --- a/frontend/src/Main.elm +++ b/frontend/src/Main.elm @@ -24,17 +24,21 @@ main = {-| currently no flags are needed that's the reason for the generic type and \_ as param name -} -init : () -> Url.Url -> Nav.Key -> ( Model, Cmd Msg ) -init _ url key = +init : { userUuid : String } -> Url.Url -> Nav.Key -> ( Model, Cmd Msg ) +init flags url key = let route : Navigation.Route route = Url.Parser.parse Navigation.routeParser url |> Maybe.withDefault Navigation.Home + initInfo : Model.InitInfo + initInfo = + Model.InitInfo key route url flags.userUuid + model : Model model = - Model.initialModel key route url + Model.initialModel initInfo in routeChanged route model @@ -77,14 +81,12 @@ routeChanged route model = view : Model -> Browser.Document Msg view model = - { title = "OpenAgile" + { title = "Open-Retro" , body = - [ h1 [] [ text "OpenAgile" ] - , div [ class "content" ] - [ nav [] [ Navigation.navTree ] - , main_ [] (appContent model) - ] - , node "link" [ rel "stylesheet", href "/assets/style.css" ] [] + [ h1 [] [ text "Open-Retro" ] + , nav [] [ Navigation.navTree ] + , main_ [] (appContent model) + , node "link" [ rel "stylesheet", href "/compiled/css/style.css" ] [] ] } @@ -100,4 +102,3 @@ homePage : Model -> List (Html Msg) homePage model = [ h2 [] [ text "Home" ] ] - diff --git a/frontend/src/Model.elm b/frontend/src/Model.elm index cdb4f2a..8e1c4d2 100644 --- a/frontend/src/Model.elm +++ b/frontend/src/Model.elm @@ -1,4 +1,4 @@ -module Model exposing (Model, initialModel) +module Model exposing (InitInfo, Model, initialModel) import Browser.Navigation as Nav import Http @@ -11,17 +11,28 @@ type alias Model = , apiHost : String , route : Navigation.Route , httpError : Maybe Http.Error + , userUuid : String } -initialModel : Nav.Key -> Navigation.Route -> Url -> Model -initialModel key route url = +type alias InitInfo = + { navkey : Nav.Key + , route : Navigation.Route + , url : Url + , userUuid : String + } + + +initialModel : InitInfo -> Model +initialModel init = Model - key - ("//" ++ url.host ++ urlToPort url) - route + init.navkey + ("//" ++ init.url.host ++ urlToPort init.url) + init.route -- httpError Maybe.Nothing + -- userUuid + init.userUuid urlToPort : Url -> String