{"version":1,"pages":[{"id":"1uv51tdP2I4thxbkFGNG","title":"README","pathname":"/shipclojure-docs","siteSpaceId":"sitesp_40voj","description":""},{"id":"g37Fl6ChQLoyEtI9IUUw","title":"Getting started","pathname":"/shipclojure-docs/getting-started","siteSpaceId":"sitesp_40voj","description":""},{"id":"99Ml70zKxteMz9UCQuzo","title":"Table of contents","pathname":"/shipclojure-docs/index","siteSpaceId":"sitesp_40voj","description":""},{"id":"oHo11OYUo8PZ1tlTTzSC","title":"Ring API","pathname":"/shipclojure-docs/ring-api","siteSpaceId":"sitesp_40voj","description":""},{"id":"Wyi8FWgPPG8LXh6oMk39","title":"auth","pathname":"/shipclojure-docs/auth","siteSpaceId":"sitesp_40voj"},{"id":"EulHzFbsTbmic9P58OQk","title":"How Auth works","pathname":"/shipclojure-docs/auth/authentication","siteSpaceId":"sitesp_40voj","description":"","breadcrumbs":[{"label":"auth"}]},{"id":"oNDbIXxBVvPrQHi57MgI","title":"Oauth2 providers","pathname":"/shipclojure-docs/auth/oauth2-providers","siteSpaceId":"sitesp_40voj","description":"","breadcrumbs":[{"label":"auth"}]},{"id":"4wBwGaYGjJ9n5bItCert","title":"backend","pathname":"/shipclojure-docs/backend","siteSpaceId":"sitesp_40voj"},{"id":"baHeDcdxGMSZ1l4rx5w7","title":"Blog & Content System","pathname":"/shipclojure-docs/backend/blog","siteSpaceId":"sitesp_40voj","description":"","breadcrumbs":[{"label":"backend"}]},{"id":"mJsiDdxERR62sM43rIzi","title":"Email","pathname":"/shipclojure-docs/backend/email","siteSpaceId":"sitesp_40voj","description":"","breadcrumbs":[{"label":"backend"}]},{"id":"5C6BZYQsk1I3KppyqDT8","title":"Logging","pathname":"/shipclojure-docs/backend/logging","siteSpaceId":"sitesp_40voj","description":"","breadcrumbs":[{"label":"backend"}]},{"id":"OhqhwsIg0WP3hOkIRXqV","title":"Migrations","pathname":"/shipclojure-docs/backend/migrations","siteSpaceId":"sitesp_40voj","description":"","breadcrumbs":[{"label":"backend"}]},{"id":"PqmpATnB0tCwUQAGYDu0","title":"Routing","pathname":"/shipclojure-docs/backend/routing","siteSpaceId":"sitesp_40voj","description":"","breadcrumbs":[{"label":"backend"}]},{"id":"4SjckTHBU4ecQuBH2NQu","title":"Secrets","pathname":"/shipclojure-docs/backend/secrets","siteSpaceId":"sitesp_40voj","description":"","breadcrumbs":[{"label":"backend"}]},{"id":"lqHMBloAJHyhkHDFr3cV","title":"decisions","pathname":"/shipclojure-docs/decisions","siteSpaceId":"sitesp_40voj"},{"id":"z985GRyyikznpZgwgVL2","title":"Title","pathname":"/shipclojure-docs/decisions/000-template","siteSpaceId":"sitesp_40voj","description":"","breadcrumbs":[{"label":"decisions"}]},{"id":"XlHZbLkN3gExNVFVvEX0","title":"001 - Cookie Sessions","pathname":"/shipclojure-docs/decisions/001-cookie-sessions","siteSpaceId":"sitesp_40voj","description":"","breadcrumbs":[{"label":"decisions"}]},{"id":"Gg3VdgihDmBQnbt9DkNj","title":"002 - Single Page Application Architecture","pathname":"/shipclojure-docs/decisions/002-single-page-application","siteSpaceId":"sitesp_40voj","description":"","breadcrumbs":[{"label":"decisions"}]},{"id":"OXrFOSvJI89HBOdiq8dd","title":"003 - Re-frame instead of Refx","pathname":"/shipclojure-docs/decisions/003-re-frame-not-refx","siteSpaceId":"sitesp_40voj","description":"","breadcrumbs":[{"label":"decisions"}]},{"id":"RID1IvR0jz2xSU8jTAgL","title":"003 - Move from cookie sessions to JWT Access + refresh tokens","pathname":"/shipclojure-docs/decisions/004-jwt-tokens-auth","siteSpaceId":"sitesp_40voj","description":"","breadcrumbs":[{"label":"decisions"}]},{"id":"uwIov2xC5QzSgEDXA2zB","title":"deployment","pathname":"/shipclojure-docs/deployment","siteSpaceId":"sitesp_40voj"},{"id":"yNpDtGS7yF1p8EUigmdf","title":"Deployment","pathname":"/shipclojure-docs/deployment/deployment","siteSpaceId":"sitesp_40voj","description":"","breadcrumbs":[{"label":"deployment"}]},{"id":"PBgLp4K8sG0hBJI4TOuv","title":"development","pathname":"/shipclojure-docs/development","siteSpaceId":"sitesp_40voj"},{"id":"HaQzcY1ggTDf6lZOnq2L","title":"AI Development with ShipClojure","pathname":"/shipclojure-docs/development/ai-development","siteSpaceId":"sitesp_40voj","description":"","breadcrumbs":[{"label":"development"}]},{"id":"AkZGiwtIwNNW5ui9qapw","title":"Formatting code","pathname":"/shipclojure-docs/development/formatting-code","siteSpaceId":"sitesp_40voj","description":"","breadcrumbs":[{"label":"development"}]},{"id":"M2zh1X7mtiMTVIZP2t6P","title":"Getting Updates","pathname":"/shipclojure-docs/development/getting-updates","siteSpaceId":"sitesp_40voj","description":"","breadcrumbs":[{"label":"development"}]},{"id":"w0g2bMKTUYZFyoKuS4WQ","title":"ShipClojure Guiding Principles","pathname":"/shipclojure-docs/development/guiding-principles","siteSpaceId":"sitesp_40voj","description":"","breadcrumbs":[{"label":"development"}]},{"id":"0fbwxsbmp2Icos9VeUuO","title":"Multi-Instance Development","pathname":"/shipclojure-docs/development/multi-instance","siteSpaceId":"sitesp_40voj","description":"","breadcrumbs":[{"label":"development"}]},{"id":"4UTHXyjLeYnwu2duQEQE","title":"REPL Workflow","pathname":"/shipclojure-docs/development/repl-workflow","siteSpaceId":"sitesp_40voj","description":"","breadcrumbs":[{"label":"development"}]},{"id":"7rE3FlyGVZTqz2N4Dhsy","title":"frontend","pathname":"/shipclojure-docs/frontend","siteSpaceId":"sitesp_40voj"},{"id":"c48KbM0l8a3jqiEmL8sR","title":"HTTP Requests with Re-frame","pathname":"/shipclojure-docs/frontend/http-requests","siteSpaceId":"sitesp_40voj","description":"","breadcrumbs":[{"label":"frontend"}]},{"id":"yfGFb4a3B1zgkrR4gJZX","title":"Icons","pathname":"/shipclojure-docs/frontend/icons","siteSpaceId":"sitesp_40voj","description":"","breadcrumbs":[{"label":"frontend"}]},{"id":"q1E1lByoz0TMSUB1bqiZ","title":"Frontend Navigation with Re-frame","pathname":"/shipclojure-docs/frontend/navigation","siteSpaceId":"sitesp_40voj","description":"","breadcrumbs":[{"label":"frontend"}]},{"id":"1Ya55gsl8euZwSDYA5lN","title":"Toast Notifications","pathname":"/shipclojure-docs/frontend/toasts","siteSpaceId":"sitesp_40voj","description":"","breadcrumbs":[{"label":"frontend"}]},{"id":"kuJpCtgdV8Vh8r0Jd2bW","title":"UIx + re-frame","pathname":"/shipclojure-docs/frontend/uix+re-frame","siteSpaceId":"sitesp_40voj","description":"","breadcrumbs":[{"label":"frontend"}]},{"id":"j8XSbuzjCWSQFH1HpWhi","title":"LLMS","pathname":"/shipclojure-docs/llms","siteSpaceId":"sitesp_40voj","description":""},{"id":"CAW03CKWYHUprdRgoPoF","title":"CLAUDE","pathname":"/shipclojure-docs/llms/claude","siteSpaceId":"sitesp_40voj","description":"","breadcrumbs":[{"label":"LLMS"}]},{"id":"6a6MlbpiFV48oDqvS9pS","title":"daisyui","pathname":"/shipclojure-docs/llms/daisyui","siteSpaceId":"sitesp_40voj","description":"","breadcrumbs":[{"label":"LLMS"}]},{"id":"C24szvoBjEPixSdlE3et","title":"uix","pathname":"/shipclojure-docs/llms/uix","siteSpaceId":"sitesp_40voj","description":"","breadcrumbs":[{"label":"LLMS"}]},{"id":"7GyD4Aav4kJRGIqOwiuH","title":"server-side-rendering","pathname":"/shipclojure-docs/server-side-rendering","siteSpaceId":"sitesp_40voj"},{"id":"tN5xXnt9EPaFALFDN3Wq","title":"Static / Server-Rendered Pages","pathname":"/shipclojure-docs/server-side-rendering/static-pages","siteSpaceId":"sitesp_40voj","description":"","breadcrumbs":[{"label":"server-side-rendering"}]}]}