2.9 KiB
Congratulations, your Luminus site is ready!
This page will help guide you through the first steps of building your site.
Why are you seeing this page?
The home-routes
handler in the masto-embed.routes.home
namespace
defines the route that invokes the home-page
function whenever an HTTP
request is made to the /
URI using the GET
method.
(defroutes home-routes
(GET "/" []
(home-page))
(GET "/docs" []
(-> (response/ok (-> "docs/docs.md" io/resource slurp))
(response/header "Content-Type" "text/plain; charset=utf-8"))))
The home-page
function will in turn call the masto-embed.layout/render
function
to render the HTML content:
(defn home-page []
(layout/render "home.html"))
The page contains a link to the compiled ClojureScript found in the target/cljsbuild/public
folder:
{% script "/js/app.js" %}
The rest of this page is rendered by ClojureScript found in the src/cljs/masto_embed/core.cljs
file.
Organizing the routes
The routes are aggregated and wrapped with middleware in the masto-embed.handler
namespace:
(defstate app
:start
(middleware/wrap-base
(routes
(-> #'home-routes
(wrap-routes middleware/wrap-csrf)
(wrap-routes middleware/wrap-formats))
(route/not-found
(:body
(error-page {:status 404
:title "page not found"}))))))
The app
definition groups all the routes in the application into a single handler.
A default route group is added to handle the 404
case.
The home-routes
are wrapped with two middleware functions. The first enables CSRF protection.
The second takes care of serializing and deserializing various encoding formats, such as JSON.
Managing your middleware
Request middleware functions are located under the masto-embed.middleware
namespace.
This namespace is reserved for any custom middleware for the application. Some default middleware is
already defined here. The middleware is assembled in the wrap-base
function.
Middleware used for development is placed in the masto-embed.dev-middleware
namespace found in
the env/dev/clj/
source path.
Need some help?
Visit the official documentation for examples
on how to accomplish common tasks with Luminus. The #luminus
channel on the Clojurians Slack and Google Group are both great places to seek help and discuss projects with other users.