From 4c10b4b5173472a1f3ee57efab990fa2947eada7 Mon Sep 17 00:00:00 2001 From: Artem Korsakov Date: Sun, 26 Jul 2026 10:00:45 +0300 Subject: [PATCH 1/9] Add HTMX example --- build.sbt | 3 + docs/src/pages/directory.conf | 1 + docs/src/pages/examples/README.md | 6 + docs/src/pages/examples/directory.conf | 4 + .../src/main/resources/asset/htmx-example.css | 417 ++++++++++++++++++ .../src/main/resources/asset/htmx-example.js | 99 +++++ project/KropTwirlLayout.scala | 25 ++ project/plugins.sbt | 1 + 8 files changed, 556 insertions(+) create mode 100644 docs/src/pages/examples/README.md create mode 100644 docs/src/pages/examples/directory.conf create mode 100644 examples/src/main/resources/asset/htmx-example.css create mode 100644 examples/src/main/resources/asset/htmx-example.js create mode 100644 project/KropTwirlLayout.scala diff --git a/build.sbt b/build.sbt index 29bacc1..61adda1 100644 --- a/build.sbt +++ b/build.sbt @@ -197,6 +197,9 @@ lazy val unidocs = project // To avoid including this in the core build lazy val examples = project .in(file("examples")) + .enablePlugins( + KropTwirlLayout + ) .settings( commonSettings, moduleName := "krop-examples", diff --git a/docs/src/pages/directory.conf b/docs/src/pages/directory.conf index a0d2a47..3eccfb5 100644 --- a/docs/src/pages/directory.conf +++ b/docs/src/pages/directory.conf @@ -9,4 +9,5 @@ laika.navigationOrder = [ controller tools.md development.md + examples ] diff --git a/docs/src/pages/examples/README.md b/docs/src/pages/examples/README.md new file mode 100644 index 0000000..ad3fd66 --- /dev/null +++ b/docs/src/pages/examples/README.md @@ -0,0 +1,6 @@ +# Examples + +The following examples demonstrate Krop in action, from a simple application to more advanced patterns. +They illustrate how Krop's design enables you to build everything from fast and scalable JSON APIs +to applications that serve static files, handle form data, compose routes, and use middleware for cross-cutting concerns like authorization. +These practical examples are here to help you see Krop's philosophy in practice and to serve as a starting point for your own projects. diff --git a/docs/src/pages/examples/directory.conf b/docs/src/pages/examples/directory.conf new file mode 100644 index 0000000..ccbe0a2 --- /dev/null +++ b/docs/src/pages/examples/directory.conf @@ -0,0 +1,4 @@ +laika.navigationOrder = [ + README.md + htmx.md +] \ No newline at end of file diff --git a/examples/src/main/resources/asset/htmx-example.css b/examples/src/main/resources/asset/htmx-example.css new file mode 100644 index 0000000..b7542ce --- /dev/null +++ b/examples/src/main/resources/asset/htmx-example.css @@ -0,0 +1,417 @@ +/* ========== Base styles ========== */ +body { + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; + margin: 0; + padding: 0; + background: #f8f9fa; + color: #333; + min-height: 100vh; +} + +/* ========== Top header ========== */ +.app-header { + position: fixed; + top: 0; + left: 0; + right: 0; + z-index: 1000; + background: white; + box-shadow: 0 2px 4px rgba(0,0,0,0.05); +} + +.header-container { + max-width: 100%; + margin: 0 auto; + padding: 16px 20px; + text-align: center; +} + +.header-title { + color: #2c3e50; + text-decoration: none; + font-size: 20px; + font-weight: 600; + letter-spacing: 0.5px; + transition: color 0.3s; + display: inline-block; +} + +.header-title:hover { + color: #3498db; +} + +.header-divider { + height: 2px; + background: linear-gradient( + to right, + transparent 0%, + #e0e0e0 10%, + #e0e0e0 90%, + transparent 100% + ); + margin: 0 20px; +} + +/* ========== Main content ========== */ +.main-content { + max-width: 100%; + margin: 80px 0 30px; + padding: 0 20px; +} + +/* ========== Forms ========== */ +.app-container { + background: white; + padding: 30px; + border-radius: 12px; + border: 1px solid #e0e0e0; + box-shadow: 0 2px 8px rgba(0,0,0,0.06); + max-width: 100%; +} + +.app-container-narrow { + background: white; + padding: 30px; + border-radius: 12px; + border: 1px solid #e0e0e0; + box-shadow: 0 2px 8px rgba(0,0,0,0.06); + max-width: 500px; + margin: 0 auto; +} + +.form-group { + margin-bottom: 20px; +} + +label { + display: block; + margin-bottom: 8px; + font-weight: 600; + color: #555; +} + +input { + width: 100%; + padding: 10px; + border: 2px solid #e0e0e0; + border-radius: 8px; + font-size: 16px; + transition: border-color 0.3s; + box-sizing: border-box; + background: white; +} + +input:focus { + outline: none; + border-color: #007bff; +} + +/* ========== Buttons ========== */ +button { + padding: 12px 24px; + cursor: pointer; + background: #007bff; + color: white; + border: none; + border-radius: 8px; + font-size: 16px; + font-weight: 600; + transition: background 0.3s, transform 0.1s; +} + +button:hover { + background: #0056b3; +} + +button:active { + transform: scale(0.98); +} + +button:disabled { + opacity: 0.6; + cursor: not-allowed; +} + +#logoutBtn { + background: #dc3545; + margin-top: 15px; +} + +#logoutBtn:hover { + background: #c82333; +} + +/* ========== Messages ========== */ +.success { + color: #155724; + background: #d4edda; + padding: 12px 16px; + border-radius: 8px; + border: 1px solid #c3e6cb; + margin: 10px 0; +} + +.error { + color: #721c24; + background: #f8d7da; + padding: 12px 16px; + border-radius: 8px; + border: 1px solid #f5c6cb; + margin: 10px 0; +} + +.hidden { + display: none !important; +} + +/* ========== Blocks ========== */ +#welcomeBlock { + margin-top: 20px; +} + +#messageBlock { + margin-top: 15px; +} + +/* ========== Links ========== */ +a { + color: #007bff; + text-decoration: none; + transition: color 0.2s, text-decoration 0.2s; +} + +a:hover { + color: #0056b3; + text-decoration: underline; +} + +a:active { + color: #003d80; +} + +a:visited { + color: #6c3483; +} + +.header-title { + color: #2c3e50; + text-decoration: none; +} + +.header-title:hover { + color: #3498db; + text-decoration: none; +} + +/* ========== Top ========== */ + +.welcome-container { + width: 100%; + max-width: 100%; + margin: 0 auto; +} + +.welcome-header { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 24px; + padding-bottom: 16px; + border-bottom: 2px solid #e8ecf0; +} + +.welcome-user { + flex: 1; +} + +.welcome-user h2 { + margin: 0; + color: #2c3e50; + font-size: 22px; +} + +.logout-btn { + background: #dc3545; + color: white; + border: none; + padding: 10px 20px; + border-radius: 8px; + font-size: 14px; + font-weight: 600; + cursor: pointer; + transition: background 0.2s, transform 0.1s; + flex-shrink: 0; + margin: 0; +} + +.logout-btn:hover { + background: #c82333; +} + +.logout-btn:active { + transform: scale(0.97); +} + +/* ========== Tabs ========== */ +.tabs-container { + background: #f8f9fa; + border-radius: 12px; + padding: 20px; + border: 1px solid #e8ecf0; +} + +.tabs-header { + display: flex; + gap: 4px; + margin-bottom: 20px; + border-bottom: 2px solid #e8ecf0; + padding-bottom: 12px; +} + +.tab-btn { + padding: 10px 24px; + border: none; + background: transparent; + font-size: 15px; + font-weight: 500; + color: #7f8c8d; + cursor: pointer; + border-radius: 8px 8px 0 0; + transition: all 0.2s; + position: relative; +} + +.tab-btn:hover { + color: #2c3e50; + background: #e8ecf0; +} + +.tab-btn.active { + color: #2c3e50; + background: white; + box-shadow: 0 -2px 4px rgba(0,0,0,0.04); +} + +.tab-btn.active::after { + content: ''; + position: absolute; + bottom: -2px; + left: 0; + right: 0; + height: 3px; + background: #3498db; + border-radius: 2px; +} + +/* ========== Content ========== */ +.tab-content { + display: none; + animation: fadeIn 0.25s ease; +} + +.tab-content.active { + display: block; +} + +@keyframes fadeIn { + from { opacity: 0; transform: translateY(8px); } + to { opacity: 1; transform: translateY(0); } +} + +.tab-actions { + display: flex; + justify-content: flex-end; + margin-bottom: 16px; +} + +.create-task-btn { + background: #3498db; + color: white; + border: none; + padding: 8px 18px; + border-radius: 6px; + font-size: 14px; + font-weight: 500; + cursor: pointer; + transition: background 0.2s; + display: flex; + align-items: center; + gap: 6px; +} + +.create-task-btn:hover { + background: #2980b9; +} + +.tasks-grid { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); + gap: 12px; + max-height: 400px; + overflow-y: auto; + padding-right: 4px; +} + +.tasks-grid::-webkit-scrollbar { + width: 6px; +} + +.tasks-grid::-webkit-scrollbar-track { + background: #f0f0f0; + border-radius: 3px; +} + +.tasks-grid::-webkit-scrollbar-thumb { + background: #c0c0c0; + border-radius: 3px; +} + +.tasks-grid::-webkit-scrollbar-thumb:hover { + background: #a0a0a0; +} + +.task-card { + display: flex; + align-items: flex-start; + gap: 12px; + padding: 16px; + background: white; + border-radius: 10px; + border: 1px solid #e8ecf0; + transition: transform 0.15s, box-shadow 0.15s; +} + +.task-card:hover { + transform: translateY(-2px); + box-shadow: 0 4px 12px rgba(0,0,0,0.06); +} + +.task-icon { + font-size: 24px; + flex-shrink: 0; + width: 36px; + height: 36px; + display: flex; + align-items: center; + justify-content: center; + background: #f0f4f8; + border-radius: 8px; +} + +.task-info { + flex: 1; + min-width: 0; +} + +.task-title { + font-weight: 500; + color: #2c3e50; + margin-bottom: 4px; + font-size: 15px; +} + +.task-meta { + font-size: 13px; + color: #95a5a6; + line-height: 1.4; +} diff --git a/examples/src/main/resources/asset/htmx-example.js b/examples/src/main/resources/asset/htmx-example.js new file mode 100644 index 0000000..490d6e5 --- /dev/null +++ b/examples/src/main/resources/asset/htmx-example.js @@ -0,0 +1,99 @@ +document.addEventListener('htmx:beforeRequest', function(event) { + var token = getCookie('token'); + if (token) { + event.detail.xhr.setRequestHeader('Authorization', 'Bearer ' + token); + } +}); + +function setCookie(name, value, days) { + days = days || 7; + var expires = new Date(); + expires.setTime(expires.getTime() + days * 24 * 60 * 60 * 1000); + document.cookie = name + "=" + encodeURIComponent(value) + + "; expires=" + expires.toUTCString() + + "; path=/"; +} + +function getCookie(name) { + var nameEQ = name + "="; + var ca = document.cookie.split(';'); + for(var i = 0; i < ca.length; i++) { + var c = ca[i]; + while (c.charAt(0) === ' ') c = c.substring(1, c.length); + if (c.indexOf(nameEQ) === 0) return decodeURIComponent(c.substring(nameEQ.length, c.length)); + } + return null; +} + +function deleteCookie(name) { + document.cookie = name + '=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;'; +} + +function saveUserCookies(token) { + if (token) { + setCookie('token', token); + } +} + +function clearUserCookies() { + deleteCookie('token'); +} + +function handleAuthResponse(response) { + if (response.ok) { + return response.text().then(html => { + var parser = new DOMParser(); + var doc = parser.parseFromString(html, 'text/html'); + var welcomeBlock = doc.querySelector('#welcomeBlock'); + + if (welcomeBlock) { + var token = welcomeBlock.getAttribute('data-token'); + if (token) { + saveUserCookies(token); + } + } + + document.getElementById('app').outerHTML = html; + }); + } else { + return response.text().then(html => { + document.getElementById('app').outerHTML = html; + }); + } +} + +function registerUser() { + const username = document.getElementById('username').value; + const password = document.getElementById('password').value; + + fetch('/new_user', { + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + body: JSON.stringify({username, password}) + }) + .then(response => handleAuthResponse(response)); +} + +function loginUser() { + const username = document.getElementById('loginUsername').value; + const password = document.getElementById('loginPassword').value; + + fetch('/auth/login', { + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + body: JSON.stringify({username, password}) + }) + .then(response => handleAuthResponse(response)); +} + +function switchTab(tabId) { + document.querySelectorAll('.tab-btn').forEach(btn => btn.classList.remove('active')); + document.querySelectorAll('.tab-content').forEach(content => content.classList.remove('active')); + + document.querySelector(`.tab-btn[data-tab="${tabId}"]`).classList.add('active'); + document.getElementById(`tab-${tabId}`).classList.add('active'); +} diff --git a/project/KropTwirlLayout.scala b/project/KropTwirlLayout.scala new file mode 100644 index 0000000..a8b6b3d --- /dev/null +++ b/project/KropTwirlLayout.scala @@ -0,0 +1,25 @@ +// A simple plugin that sets the directory layout for Twirl to the Krop +// standard. This removes the excessive indirection the Maven standard uses. +// Inspired by PlayLayoutPlugin. + +import sbt.* +import sbt.Keys.* + +import play.twirl.sbt.SbtTwirl +import play.twirl.sbt.Import.TwirlKeys + +object KropTwirlLayout extends AutoPlugin { + // Must be explicitly enabled + override def trigger = noTrigger + + override def requires = SbtTwirl + + override def projectSettings = Seq( + Compile / TwirlKeys.compileTemplates / sourceDirectories := Seq( + (Compile / scalaSource).value + ), + Test / TwirlKeys.compileTemplates / sourceDirectories := Seq( + (Test / scalaSource).value + ) + ) +} diff --git a/project/plugins.sbt b/project/plugins.sbt index 422e951..8a57586 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -7,3 +7,4 @@ addSbtPlugin("org.typelevel" % "sbt-typelevel" % "0.8.5") addSbtPlugin("org.typelevel" % "sbt-typelevel-site" % "0.8.5") addSbtPlugin("org.scala-native" % "sbt-scala-native" % "0.5.10") addSbtPlugin("org.creativescala" % "creative-scala-theme" % "0.5.2") +addSbtPlugin("org.playframework.twirl" % "sbt-twirl" % "2.0.9") From a93e53a3eea8a773cd00b2aa238170a2a354955f Mon Sep 17 00:00:00 2001 From: Artem Korsakov Date: Sun, 26 Jul 2026 10:01:22 +0300 Subject: [PATCH 2/9] Add HTMX example --- .../krop/examples/htmx/handlers/Parser.scala | 9 ++ .../krop/examples/htmx/routes/Routes.scala | 65 ++++++++ .../krop/examples/htmx/views/base.scala.html | 29 ++++ .../krop/examples/htmx/views/login.scala.html | 32 ++++ .../examples/htmx/views/register.scala.html | 32 ++++ .../examples/htmx/views/welcome.scala.html | 150 ++++++++++++++++++ 6 files changed, 317 insertions(+) create mode 100644 examples/src/main/scala/krop/examples/htmx/handlers/Parser.scala create mode 100644 examples/src/main/scala/krop/examples/htmx/routes/Routes.scala create mode 100644 examples/src/main/scala/krop/examples/htmx/views/base.scala.html create mode 100644 examples/src/main/scala/krop/examples/htmx/views/login.scala.html create mode 100644 examples/src/main/scala/krop/examples/htmx/views/register.scala.html create mode 100644 examples/src/main/scala/krop/examples/htmx/views/welcome.scala.html diff --git a/examples/src/main/scala/krop/examples/htmx/handlers/Parser.scala b/examples/src/main/scala/krop/examples/htmx/handlers/Parser.scala new file mode 100644 index 0000000..2d27255 --- /dev/null +++ b/examples/src/main/scala/krop/examples/htmx/handlers/Parser.scala @@ -0,0 +1,9 @@ +package krop.examples.htmx.handlers + +import org.http4s.headers.Cookie + +object Parser: + extension (cookie: Cookie) + def getToken: Option[String] = + cookie.values.collectFirst: + case rq if rq.name == "token" => rq.content diff --git a/examples/src/main/scala/krop/examples/htmx/routes/Routes.scala b/examples/src/main/scala/krop/examples/htmx/routes/Routes.scala new file mode 100644 index 0000000..bfadfa6 --- /dev/null +++ b/examples/src/main/scala/krop/examples/htmx/routes/Routes.scala @@ -0,0 +1,65 @@ +package krop.examples.htmx.routes + +import io.circe.Json +import krop.Types.TupleConcat +import krop.all.{Entity, Path, Request, Response, Route, *} +import krop.examples.htmx.models.LoginRequest +import org.http4s.Status as HttpStatus +import org.http4s.headers.* +import org.http4s.headers.Authorization + +object Routes: + val index = + Route( + Request.get(Path.root).extractHeader[`Cookie`], + Response.ok(Entity.html) + ) + + val home = + Route( + Request.get(Path.root / "home").extractHeader[`Cookie`], + Response.ok(Entity.html) + ) + + val register = + Route( + Request.get(Path.root / "register"), + Response.ok(Entity.html) + ) + + val login = Route( + Request + .post(Path.root / "auth" / "login") + .withEntity(Entity.jsonOf[LoginRequest]), + Response + .ok(Entity.html) + .orElse(Response.status(HttpStatus.Forbidden, Entity.html)) + .orNotFound + ) + + val newUser = Route( + Request + .post(Path.root / "new_user") + .withEntity(Entity.jsonOf[LoginRequest]), + Response + .status(HttpStatus.Created, Entity.html) + .orElse(Response.status(HttpStatus.Conflict, Entity.html)) + .orNotFound + ) + + val logout = Route( + Request + .post(Path.root / "auth" / "logout") + .extractHeader[Authorization], + Response + .ok(Entity.html) + .orElse(Response.status(HttpStatus.Forbidden, Entity.html)) + .orNotFound + ) + + val assetRoute = + Route( + Request.get(Path.root / "asset" / Params.separatedString("/")), + Response.staticResource("/asset/") + ) +end Routes diff --git a/examples/src/main/scala/krop/examples/htmx/views/base.scala.html b/examples/src/main/scala/krop/examples/htmx/views/base.scala.html new file mode 100644 index 0000000..83021e0 --- /dev/null +++ b/examples/src/main/scala/krop/examples/htmx/views/base.scala.html @@ -0,0 +1,29 @@ +@(title: String, content: Html) + + + + + + @title + + + + + + +
+
+ @title +
+
+
+ +
+ @content +
+ + \ No newline at end of file diff --git a/examples/src/main/scala/krop/examples/htmx/views/login.scala.html b/examples/src/main/scala/krop/examples/htmx/views/login.scala.html new file mode 100644 index 0000000..460cc59 --- /dev/null +++ b/examples/src/main/scala/krop/examples/htmx/views/login.scala.html @@ -0,0 +1,32 @@ +@(errorMessage: Option[String]) +
+

Login

+ +
+
+ + +
+
+ + +
+ +
+ +
+ @errorMessage.map { msg => +
@msg
+ } +
+ +

+ Don't have an account? + Register +

+
\ No newline at end of file diff --git a/examples/src/main/scala/krop/examples/htmx/views/register.scala.html b/examples/src/main/scala/krop/examples/htmx/views/register.scala.html new file mode 100644 index 0000000..00073e9 --- /dev/null +++ b/examples/src/main/scala/krop/examples/htmx/views/register.scala.html @@ -0,0 +1,32 @@ +@(errorMessage: Option[String]) +
+

Registration

+ +
+
+ + +
+
+ + +
+ +
+ +
+ @errorMessage.map { msg => +
@msg
+ } +
+ +

+ Have an account? + Login +

+
\ No newline at end of file diff --git a/examples/src/main/scala/krop/examples/htmx/views/welcome.scala.html b/examples/src/main/scala/krop/examples/htmx/views/welcome.scala.html new file mode 100644 index 0000000..e9574be --- /dev/null +++ b/examples/src/main/scala/krop/examples/htmx/views/welcome.scala.html @@ -0,0 +1,150 @@ +@(username: String, token: String) +
+
+
+
+

Welcome, @username!

+
+ +
+ +
+
+ + + +
+ +
+
+ +
+
+
+
📚
+
+
Read "Creative Scala"
+
Noel Welsh • Progress: 60%
+
+
+
+
📝
+
+
Write an article about Krop
+
Blog • Deadline: July 25, 2026
+
+
+
+
💻
+
+
Implement Authentication
+
PDP Project • Priority: High
+
+
+
+
📊
+
+
Prepare Monthly Report
+
Statistics • Due by August 1st
+
+
+
+
+ +
+
+ +
+
+
+
📖
+
+
Learn Scala 3
+
Plan • Start in August
+
+
+
+
🎯
+
+
Launch MVP project
+
Plan • Goal: Q4 2026
+
+
+
+
📈
+
+
Course Typelevel Stack
+
Training • Planned for September
+
+
+
+
+ +
+
+ +
+
+
+
📄
+
+
Krop Documentation
+
Knowledge Base • Read and Take Notes
+
+
+
+
🎓
+
+
FP Lectures
+
Knowledge Base • View and Write Questions
+
+
+
+
+
+ +
+
+
\ No newline at end of file From 0507b2265bcc80e13d654369d7c99dc3bb3bb1c9 Mon Sep 17 00:00:00 2001 From: Artem Korsakov Date: Sun, 26 Jul 2026 10:01:30 +0300 Subject: [PATCH 3/9] Add HTMX example --- .../scala/krop/examples/htmx/models/LoginRequest.scala | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 examples/src/main/scala/krop/examples/htmx/models/LoginRequest.scala diff --git a/examples/src/main/scala/krop/examples/htmx/models/LoginRequest.scala b/examples/src/main/scala/krop/examples/htmx/models/LoginRequest.scala new file mode 100644 index 0000000..8e8698d --- /dev/null +++ b/examples/src/main/scala/krop/examples/htmx/models/LoginRequest.scala @@ -0,0 +1,9 @@ +package krop.examples.htmx.models + +import io.circe.* + +final case class LoginRequest( + username: String, + password: String +) derives Decoder, + Encoder From 8d32841f77ff7073e19a8637edc0e65ab989d4b6 Mon Sep 17 00:00:00 2001 From: Artem Korsakov Date: Sun, 26 Jul 2026 11:14:44 +0300 Subject: [PATCH 4/9] Add HTMX example --- .../scala/krop/asset/FileNameHasher.scala | 3 +- build.sbt | 2 + docs/src/pages/examples/htmx.md | 608 ++++++++++++++++++ .../main/scala/krop/examples/htmx/Main.scala | 64 ++ .../examples/htmx/handlers/HomeHandler.scala | 52 ++ .../htmx/handlers/InitialHandler.scala | 57 ++ .../examples/htmx/handlers/LoginHandler.scala | 44 ++ .../htmx/handlers/LogoutHandler.scala | 51 ++ .../htmx/handlers/NewUserHandler.scala | 44 ++ .../krop/examples/htmx/handlers/Parser.scala | 16 + .../htmx/handlers/RegisterHandler.scala | 27 + .../examples/htmx/models/LoginRequest.scala | 16 + .../krop/examples/htmx/routes/Routes.scala | 21 +- .../htmx/server/SimpleAuthService.scala | 57 ++ project/Dependencies.scala | 6 +- project/build.properties | 2 +- project/plugins.sbt | 14 +- 17 files changed, 1068 insertions(+), 16 deletions(-) create mode 100644 docs/src/pages/examples/htmx.md create mode 100644 examples/src/main/scala/krop/examples/htmx/Main.scala create mode 100644 examples/src/main/scala/krop/examples/htmx/handlers/HomeHandler.scala create mode 100644 examples/src/main/scala/krop/examples/htmx/handlers/InitialHandler.scala create mode 100644 examples/src/main/scala/krop/examples/htmx/handlers/LoginHandler.scala create mode 100644 examples/src/main/scala/krop/examples/htmx/handlers/LogoutHandler.scala create mode 100644 examples/src/main/scala/krop/examples/htmx/handlers/NewUserHandler.scala create mode 100644 examples/src/main/scala/krop/examples/htmx/handlers/RegisterHandler.scala create mode 100644 examples/src/main/scala/krop/examples/htmx/server/SimpleAuthService.scala diff --git a/asset/src/main/scala/krop/asset/FileNameHasher.scala b/asset/src/main/scala/krop/asset/FileNameHasher.scala index e18eb9c..5bbcd18 100644 --- a/asset/src/main/scala/krop/asset/FileNameHasher.scala +++ b/asset/src/main/scala/krop/asset/FileNameHasher.scala @@ -21,7 +21,8 @@ import cats.effect.std.MapRef import fs2.io.file.Path as Fs2Path import org.typelevel.log4cats.Logger -import HashingFileWatcher.Event.{Hashed, Deleted} +import HashingFileWatcher.Event.Hashed +import HashingFileWatcher.Event.Deleted /** Maintains a map of Path to HexString, and provides operations to hash a * path, adding a HexString, and unhash a path, removing a HexString. diff --git a/build.sbt b/build.sbt index 61adda1..286636c 100644 --- a/build.sbt +++ b/build.sbt @@ -202,6 +202,8 @@ lazy val examples = project ) .settings( commonSettings, + // To avoid warn "unused import" for krop/examples/htmx/views/???.scala.html files + scalacOptions += "-Wconf:src=.*/views/html/.*:silent", moduleName := "krop-examples", mimaPreviousArtifacts := Set.empty, // This sets Krop into development mode, which gives useful tools for diff --git a/docs/src/pages/examples/htmx.md b/docs/src/pages/examples/htmx.md new file mode 100644 index 0000000..0929fba --- /dev/null +++ b/docs/src/pages/examples/htmx.md @@ -0,0 +1,608 @@ +# Htmx + +## Create models + +```scala 3 +package krop.examples.htmx.models + +import io.circe.* + +final case class LoginRequest( + username: String, + password: String +) derives Decoder, + Encoder +``` + +## Create routes + +```scala 3 +package krop.examples.htmx.routes + +import krop.all.* +import krop.examples.htmx.models.LoginRequest +import org.http4s.Status as HttpStatus +import org.http4s.headers.* + +object Routes: + val index = + Route( + Request.get(Path.root).extractHeader[`Cookie`], + Response.ok(Entity.html) + ) + + val home = + Route( + Request.get(Path.root / "home").extractHeader[`Cookie`], + Response.ok(Entity.html) + ) + + val register = + Route( + Request.get(Path.root / "register"), + Response.ok(Entity.html) + ) + + val login = Route( + Request + .post(Path.root / "auth" / "login") + .withEntity(Entity.jsonOf[LoginRequest]), + Response + .ok(Entity.html) + .orElse(Response.status(HttpStatus.Forbidden, Entity.html)) + .orNotFound + ) + + val newUser = Route( + Request + .post(Path.root / "new_user") + .withEntity(Entity.jsonOf[LoginRequest]), + Response + .status(HttpStatus.Created, Entity.html) + .orElse(Response.status(HttpStatus.Conflict, Entity.html)) + .orNotFound + ) + + val logout = Route( + Request + .post(Path.root / "auth" / "logout") + .extractHeader[Authorization], + Response + .ok(Entity.html) + .orElse(Response.status(HttpStatus.Forbidden, Entity.html)) + .orNotFound + ) + + val assetRoute = + Route( + Request.get(Path.root / "asset" / Params.separatedString("/")), + Response.staticResource("/asset/") + ) +end Routes +``` + +## Create views + +### base.scala.html + +```html +@(title: String, content: Html) + + + + + + @title + + + + + + +
+
+ @title +
+
+
+ +
+ @content +
+ + +``` + +### login.scala.html + +```html +@(errorMessage: Option[String]) +
+

Login

+ +
+
+ + +
+
+ + +
+ +
+ +
+ @errorMessage.map { msg => +
@msg
+ } +
+ +

+ Don't have an account? + Register +

+
+``` + +### register.scala.html + +```html +@(errorMessage: Option[String]) +
+

Registration

+ +
+
+ + +
+
+ + +
+ +
+ +
+ @errorMessage.map { msg => +
@msg
+ } +
+ +

+ Have an account? + Login +

+
+``` + +### welcome.scala.html + +```html +@(username: String, token: String) +
+
+
+
+

Welcome, @username!

+
+ +
+ +
+
+ + + +
+ +
+
+ +
+
+
+
📚
+
+
Read "Creative Scala"
+
Noel Welsh • Progress: 60%
+
+
+
+
📝
+
+
Write an article about Krop
+
Blog • Deadline: July 25, 2026
+
+
+
+
💻
+
+
Implement Authentication
+
PDP Project • Priority: High
+
+
+
+
📊
+
+
Prepare Monthly Report
+
Statistics • Due by August 1st
+
+
+
+
+ +
+
+ +
+
+
+
📖
+
+
Learn Scala 3
+
Plan • Start in August
+
+
+
+
🎯
+
+
Launch MVP project
+
Plan • Goal: Q4 2026
+
+
+
+
📈
+
+
Course Typelevel Stack
+
Training • Planned for September
+
+
+
+
+ +
+
+ +
+
+
+
📄
+
+
Krop Documentation
+
Knowledge Base • Read and Take Notes
+
+
+
+
🎓
+
+
FP Lectures
+
Knowledge Base • View and Write Questions
+
+
+
+
+
+ +
+
+
+``` + +## Create assets + +```javascript +document.addEventListener('htmx:beforeRequest', function(event) { + var token = getCookie('token'); + if (token) { + event.detail.xhr.setRequestHeader('Authorization', 'Bearer ' + token); + } +}); + +function setCookie(name, value, days) { + days = days || 7; + var expires = new Date(); + expires.setTime(expires.getTime() + days * 24 * 60 * 60 * 1000); + document.cookie = name + "=" + encodeURIComponent(value) + + "; expires=" + expires.toUTCString() + + "; path=/"; +} + +function getCookie(name) { + var nameEQ = name + "="; + var ca = document.cookie.split(';'); + for(var i = 0; i < ca.length; i++) { + var c = ca[i]; + while (c.charAt(0) === ' ') c = c.substring(1, c.length); + if (c.indexOf(nameEQ) === 0) return decodeURIComponent(c.substring(nameEQ.length, c.length)); + } + return null; +} + +function deleteCookie(name) { + document.cookie = name + '=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;'; +} + +function saveUserCookies(token) { + if (token) { + setCookie('token', token); + } +} + +function clearUserCookies() { + deleteCookie('token'); +} + +function handleAuthResponse(response) { + if (response.ok) { + return response.text().then(html => { + var parser = new DOMParser(); + var doc = parser.parseFromString(html, 'text/html'); + var welcomeBlock = doc.querySelector('#welcomeBlock'); + + if (welcomeBlock) { + var token = welcomeBlock.getAttribute('data-token'); + if (token) { + saveUserCookies(token); + } + } + + document.getElementById('app').outerHTML = html; + }); + } else { + return response.text().then(html => { + document.getElementById('app').outerHTML = html; + }); + } +} + +function registerUser() { + const username = document.getElementById('username').value; + const password = document.getElementById('password').value; + + fetch('/new_user', { + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + body: JSON.stringify({username, password}) + }) + .then(response => handleAuthResponse(response)); +} + +function loginUser() { + const username = document.getElementById('loginUsername').value; + const password = document.getElementById('loginPassword').value; + + fetch('/auth/login', { + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + body: JSON.stringify({username, password}) + }) + .then(response => handleAuthResponse(response)); +} + +function switchTab(tabId) { + document.querySelectorAll('.tab-btn').forEach(btn => btn.classList.remove('active')); + document.querySelectorAll('.tab-content').forEach(content => content.classList.remove('active')); + + document.querySelector(`.tab-btn[data-tab="${tabId}"]`).classList.add('active'); + document.getElementById(`tab-${tabId}`).classList.add('active'); +} +``` + + +## Create simple auth server only for demonstration + +```scala 3 + +``` + + +## Create Handlers + +### Create Parser + +```scala 3 +package krop.examples.htmx.handlers + +import org.http4s.headers.Cookie + +object Parser: + extension (cookie: Cookie) + def getToken: Option[String] = + cookie.values.collectFirst: + case rq if rq.name == "token" => rq.content +``` + +### InitialHandler + +```scala 3 +package krop.examples.htmx.handlers + +import cats.effect.IO +import cats.syntax.all.* +import krop.all.* +import krop.examples.htmx.routes.Routes +import krop.examples.htmx.server.SimpleAuthServer +import org.http4s.headers.Cookie +import org.typelevel.log4cats.Logger +import krop.examples.htmx.handlers.Parser.* +import krop.examples.htmx.views.html + +final case class InitialHandler( + authServer: SimpleAuthServer[IO] +)(using Logger[IO]): + private val name = "Personal Development Plan" + + private val defaultPage = + html.base(name, html.login(None)).toString + + val handler: Handler = + Routes.index.handleIO: (cookie: Cookie) => + cookie.getToken match + case Some(token) => + authServer + .findUser(token) + .map: + case Some(user) => + html + .base(name, html.welcome(user.username, token)) + .toString + case None => + defaultPage + .recoverWith: + case ex => + Logger[IO] + .error(ex)(s"Server error: ${ex.getMessage}") + .as(defaultPage) + case None => + defaultPage.pure[IO] +end InitialHandler +``` + +### HomeHandler + +```scala 3 +package krop.examples.htmx.handlers + +import cats.effect.IO +import cats.syntax.all.* +import krop.all.* +import krop.examples.htmx.routes.Routes +import krop.examples.htmx.server.SimpleAuthServer +import org.http4s.headers.Cookie +import org.typelevel.log4cats.Logger +import krop.examples.htmx.handlers.Parser.* +import krop.examples.htmx.views.html + +final case class HomeHandler( + authServer: SimpleAuthServer[IO] +)(using Logger[IO]): + private val defaultPage = html.login(None).toString + + val handler: Handler = + Routes.home.handleIO: (cookie: Cookie) => + cookie.getToken match + case Some(token) => + authServer + .findUser(token) + .map: + case Some(user) => + html.welcome(user.username, token).toString + case None => + defaultPage + .recoverWith: + case ex => + Logger[IO] + .error(ex)(s"Ошибка: ${ex.getMessage}") + .as(defaultPage) + case None => + defaultPage.pure[IO] +end HomeHandler +``` + +### RegisterHandler + +```scala 3 +package krop.examples.htmx.handlers + +import krop.all.* +import krop.examples.htmx.routes.Routes +import krop.examples.htmx.views.html + +object RegisterHandler: + val handler: Handler = + Routes.register.handle { () => + html.register(None).toString + } +``` + +### LoginHandler + +```scala 3 + +``` + +### LogoutHandler + +```scala 3 + +``` + +### NewUserHandler + +```scala 3 + +``` + + + +## Create Main + +```scala 3 + +``` + + +[htmx]: https://htmx.org/ +[source]: https://github.com/creativescala/krop/tree/main/examples/src/main \ No newline at end of file diff --git a/examples/src/main/scala/krop/examples/htmx/Main.scala b/examples/src/main/scala/krop/examples/htmx/Main.scala new file mode 100644 index 0000000..ad17014 --- /dev/null +++ b/examples/src/main/scala/krop/examples/htmx/Main.scala @@ -0,0 +1,64 @@ +/* + * Copyright 2023 Creative Scala + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package krop.examples.htmx + +import cats.effect.* +import krop.all.* +import krop.examples.htmx.handlers.* +import krop.examples.htmx.server.SimpleAuthService +import krop.examples.htmx.server.SimpleAuthService.UserInfo +import org.typelevel.log4cats.Logger +import org.typelevel.log4cats.slf4j.Slf4jLogger + +val name = "Personal Development Plan" + +object Main extends IOApp: + given Logger[IO] = Slf4jLogger.getLogger[IO] + + def application(db: Ref[IO, Vector[UserInfo]]): Application = + val service: SimpleAuthService[IO] = + SimpleAuthService.make(db) + + val initialHandler = InitialHandler(service) + val homeHandler = HomeHandler(service) + val loginHandler = LoginHandler(service) + val logoutHandler = LogoutHandler(service) + val newUserHandler = NewUserHandler(service) + val assetRoute = + Route( + Request.get(Path.root / "asset" / Params.separatedString("/")), + Response.staticResource("/asset/") + ) + + initialHandler.handler + .orElse(homeHandler.handler) + .orElse(RegisterHandler.handler) + .orElse(loginHandler.handler) + .orElse(logoutHandler.handler) + .orElse(newUserHandler.handler) + .orElse(assetRoute.passthrough) + .orElse(Application.notFound) + + override def run(args: List[String]): IO[ExitCode] = + Ref[IO] + .of(Vector.empty[UserInfo]) + .flatMap: db => + ServerBuilder.default + .withApplication(application(db)) + .build + .toIO + .as(ExitCode.Success) diff --git a/examples/src/main/scala/krop/examples/htmx/handlers/HomeHandler.scala b/examples/src/main/scala/krop/examples/htmx/handlers/HomeHandler.scala new file mode 100644 index 0000000..d1ba2df --- /dev/null +++ b/examples/src/main/scala/krop/examples/htmx/handlers/HomeHandler.scala @@ -0,0 +1,52 @@ +/* + * Copyright 2023 Creative Scala + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package krop.examples.htmx.handlers + +import cats.effect.IO +import cats.syntax.all.* +import krop.all.* +import krop.examples.htmx.handlers.Parser.* +import krop.examples.htmx.routes.Routes +import krop.examples.htmx.server.SimpleAuthService +import krop.examples.htmx.views.html +import org.http4s.headers.Cookie +import org.typelevel.log4cats.Logger + +final case class HomeHandler( + service: SimpleAuthService[IO] +)(using Logger[IO]): + private val defaultPage = html.login(None).toString + + val handler: Handler = + Routes.home.handleIO: (cookie: Cookie) => + cookie.getToken match + case Some(token) => + service + .findUser(token) + .map: + case Some(user) => + html.welcome(user.username, token).toString + case None => + defaultPage + .recoverWith: + case ex => + Logger[IO] + .error(ex)(s"Server error: ${ex.getMessage}") + .as(defaultPage) + case None => + defaultPage.pure[IO] +end HomeHandler diff --git a/examples/src/main/scala/krop/examples/htmx/handlers/InitialHandler.scala b/examples/src/main/scala/krop/examples/htmx/handlers/InitialHandler.scala new file mode 100644 index 0000000..9df4630 --- /dev/null +++ b/examples/src/main/scala/krop/examples/htmx/handlers/InitialHandler.scala @@ -0,0 +1,57 @@ +/* + * Copyright 2023 Creative Scala + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package krop.examples.htmx.handlers + +import cats.effect.IO +import cats.syntax.all.* +import krop.all.* +import krop.examples.htmx.handlers.Parser.* +import krop.examples.htmx.routes.Routes +import krop.examples.htmx.server.SimpleAuthService +import krop.examples.htmx.views.html +import org.http4s.headers.Cookie +import org.typelevel.log4cats.Logger + +final case class InitialHandler( + service: SimpleAuthService[IO] +)(using Logger[IO]): + private val name = "Personal Development Plan" + + private val defaultPage = + html.base(name, html.login(None)).toString + + val handler: Handler = + Routes.index.handleIO: (cookie: Cookie) => + cookie.getToken match + case Some(token) => + service + .findUser(token) + .map: + case Some(user) => + html + .base(name, html.welcome(user.username, token)) + .toString + case None => + defaultPage + .recoverWith: + case ex => + Logger[IO] + .error(ex)(s"Server error: ${ex.getMessage}") + .as(defaultPage) + case None => + defaultPage.pure[IO] +end InitialHandler diff --git a/examples/src/main/scala/krop/examples/htmx/handlers/LoginHandler.scala b/examples/src/main/scala/krop/examples/htmx/handlers/LoginHandler.scala new file mode 100644 index 0000000..094b5ea --- /dev/null +++ b/examples/src/main/scala/krop/examples/htmx/handlers/LoginHandler.scala @@ -0,0 +1,44 @@ +/* + * Copyright 2023 Creative Scala + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package krop.examples.htmx.handlers + +import cats.effect.IO +import cats.syntax.all.* +import krop.all.* +import krop.examples.htmx.models.LoginRequest +import krop.examples.htmx.routes.Routes +import krop.examples.htmx.server.SimpleAuthService +import krop.examples.htmx.views.html +import org.typelevel.log4cats.Logger + +final case class LoginHandler( + service: SimpleAuthService[IO] +)(using Logger[IO]): + val handler: Handler = + Routes.login.handleIO { (request: LoginRequest) => + service + .login(request.username, request.password) + .map: + case Some(user) => + html.welcome(user.username, user.token).toString.asRight.some + case None => + html.login("User not found".some).toString.asLeft.some + .recoverWith: + case ex => + Logger[IO].error(ex)(s"Server error: ${ex.getMessage}").as(none) + } +end LoginHandler diff --git a/examples/src/main/scala/krop/examples/htmx/handlers/LogoutHandler.scala b/examples/src/main/scala/krop/examples/htmx/handlers/LogoutHandler.scala new file mode 100644 index 0000000..1a2aea2 --- /dev/null +++ b/examples/src/main/scala/krop/examples/htmx/handlers/LogoutHandler.scala @@ -0,0 +1,51 @@ +/* + * Copyright 2023 Creative Scala + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package krop.examples.htmx.handlers + +import cats.effect.IO +import cats.syntax.all.* +import krop.all.* +import krop.examples.htmx.routes.Routes +import krop.examples.htmx.server.SimpleAuthService +import krop.examples.htmx.views.html +import org.http4s.AuthScheme +import org.http4s.Credentials.Token +import org.http4s.headers.Authorization +import org.typelevel.log4cats.Logger + +final case class LogoutHandler( + service: SimpleAuthService[IO] +)(using Logger[IO]): + val handler: Handler = + Routes.logout.handleIO: (authorization: Authorization) => + authorization match + case Authorization(Token(AuthScheme.Bearer, token)) => + service + .findUser(token) + .map: + case Some(_) => + html.login(none).toString.asRight.some + case None => + html.login("User not found".some).toString.asLeft.some + case _ => + html + .login("An authorization error occurred".some) + .toString + .asLeft + .some + .pure[IO] +end LogoutHandler diff --git a/examples/src/main/scala/krop/examples/htmx/handlers/NewUserHandler.scala b/examples/src/main/scala/krop/examples/htmx/handlers/NewUserHandler.scala new file mode 100644 index 0000000..34a7c60 --- /dev/null +++ b/examples/src/main/scala/krop/examples/htmx/handlers/NewUserHandler.scala @@ -0,0 +1,44 @@ +/* + * Copyright 2023 Creative Scala + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package krop.examples.htmx.handlers + +import cats.effect.IO +import cats.syntax.all.* +import krop.all.* +import krop.examples.htmx.models.LoginRequest +import krop.examples.htmx.routes.Routes +import krop.examples.htmx.server.SimpleAuthService +import krop.examples.htmx.views.html +import org.typelevel.log4cats.Logger + +final case class NewUserHandler( + service: SimpleAuthService[IO] +)(using Logger[IO]): + val handler: Handler = + Routes.newUser.handleIO { (request: LoginRequest) => + service + .newUser(request.username, request.password) + .map: + case Right(user) => + html.welcome(user.username, user.token).toString.asRight.some + case Left(error) => + html.register(error.some).toString.asLeft.some + .recoverWith: + case ex => + Logger[IO].error(ex)(s"Server error: ${ex.getMessage}").as(none) + } +end NewUserHandler diff --git a/examples/src/main/scala/krop/examples/htmx/handlers/Parser.scala b/examples/src/main/scala/krop/examples/htmx/handlers/Parser.scala index 2d27255..03924d0 100644 --- a/examples/src/main/scala/krop/examples/htmx/handlers/Parser.scala +++ b/examples/src/main/scala/krop/examples/htmx/handlers/Parser.scala @@ -1,3 +1,19 @@ +/* + * Copyright 2023 Creative Scala + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package krop.examples.htmx.handlers import org.http4s.headers.Cookie diff --git a/examples/src/main/scala/krop/examples/htmx/handlers/RegisterHandler.scala b/examples/src/main/scala/krop/examples/htmx/handlers/RegisterHandler.scala new file mode 100644 index 0000000..4de2ed1 --- /dev/null +++ b/examples/src/main/scala/krop/examples/htmx/handlers/RegisterHandler.scala @@ -0,0 +1,27 @@ +/* + * Copyright 2023 Creative Scala + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package krop.examples.htmx.handlers + +import krop.all.* +import krop.examples.htmx.routes.Routes +import krop.examples.htmx.views.html + +object RegisterHandler: + val handler: Handler = + Routes.register.handle { () => + html.register(None).toString + } diff --git a/examples/src/main/scala/krop/examples/htmx/models/LoginRequest.scala b/examples/src/main/scala/krop/examples/htmx/models/LoginRequest.scala index 8e8698d..530b092 100644 --- a/examples/src/main/scala/krop/examples/htmx/models/LoginRequest.scala +++ b/examples/src/main/scala/krop/examples/htmx/models/LoginRequest.scala @@ -1,3 +1,19 @@ +/* + * Copyright 2023 Creative Scala + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package krop.examples.htmx.models import io.circe.* diff --git a/examples/src/main/scala/krop/examples/htmx/routes/Routes.scala b/examples/src/main/scala/krop/examples/htmx/routes/Routes.scala index bfadfa6..ec5ce0a 100644 --- a/examples/src/main/scala/krop/examples/htmx/routes/Routes.scala +++ b/examples/src/main/scala/krop/examples/htmx/routes/Routes.scala @@ -1,12 +1,25 @@ +/* + * Copyright 2023 Creative Scala + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package krop.examples.htmx.routes -import io.circe.Json -import krop.Types.TupleConcat -import krop.all.{Entity, Path, Request, Response, Route, *} +import krop.all.* import krop.examples.htmx.models.LoginRequest import org.http4s.Status as HttpStatus import org.http4s.headers.* -import org.http4s.headers.Authorization object Routes: val index = diff --git a/examples/src/main/scala/krop/examples/htmx/server/SimpleAuthService.scala b/examples/src/main/scala/krop/examples/htmx/server/SimpleAuthService.scala new file mode 100644 index 0000000..09cfacf --- /dev/null +++ b/examples/src/main/scala/krop/examples/htmx/server/SimpleAuthService.scala @@ -0,0 +1,57 @@ +/* + * Copyright 2023 Creative Scala + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package krop.examples.htmx.server + +import cats.effect.IO +import cats.effect.Ref +import krop.examples.htmx.server.SimpleAuthService.UserInfo + +import java.util.UUID + +// Just for a demonstration +trait SimpleAuthService[F[_]]: + def findUser(token: String): F[Option[UserInfo]] + + def login(username: String, password: String): F[Option[UserInfo]] + + def newUser(username: String, password: String): F[Either[String, UserInfo]] + +object SimpleAuthService: + final case class UserInfo(username: String, password: String, token: String) + + def make(db: Ref[IO, Vector[UserInfo]]): SimpleAuthService[IO] = + new SimpleAuthService: + def findUser(token: String): IO[Option[UserInfo]] = + db.get.map(_.find(_.token == token)) + + def login(username: String, password: String): IO[Option[UserInfo]] = + db.get.map( + _.find(user => user.username == username && user.password == password) + ) + + def newUser( + username: String, + password: String + ): IO[Either[String, UserInfo]] = { + val newUser = UserInfo(username, password, UUID.randomUUID().toString) + + db.get.flatMap: + case users if users.exists(_.username == username) => + IO.pure(Left("A user with such username already exists.")) + case users => + db.update(users => newUser +: users).as(Right(newUser)) + } diff --git a/project/Dependencies.scala b/project/Dependencies.scala index edd8a3b..b6adcaa 100644 --- a/project/Dependencies.scala +++ b/project/Dependencies.scala @@ -8,10 +8,10 @@ object Dependencies { val catsVersion = "2.10.0" val catsEffectVersion = "3.5.1" val circeVersion = "0.14.13" - val circeGenericVersion = "0.14.15" - val declineVersion = "2.6.0" + val circeGenericVersion = "0.14.16" + val declineVersion = "2.6.2" val fs2Version = "3.6.1" - val http4sVersion = "1.0.0-M46" + val http4sVersion = "1.0.0-M47" val scalaJsDomVersion = "2.4.0" val scalaTagsVersion = "0.13.1" val twirlVersion = "2.0.9" diff --git a/project/build.properties b/project/build.properties index 01a16ed..7c95fc1 100644 --- a/project/build.properties +++ b/project/build.properties @@ -1 +1 @@ -sbt.version=1.11.7 +sbt.version=1.12.13 diff --git a/project/plugins.sbt b/project/plugins.sbt index 8a57586..e38207a 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -1,10 +1,10 @@ -addSbtPlugin("org.scala-js" % "sbt-scalajs" % "1.20.2") -addSbtPlugin("com.timushev.sbt" % "sbt-updates" % "0.6.4") -addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.5.6") +addSbtPlugin("org.scala-js" % "sbt-scalajs" % "1.22.0") +addSbtPlugin("com.timushev.sbt" % "sbt-updates" % "0.7.0") +addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.6.2") addSbtPlugin("com.github.sbt" % "sbt-unidoc" % "0.6.1") -addSbtPlugin("ch.epfl.scala" % "sbt-scalafix" % "0.14.6") -addSbtPlugin("org.typelevel" % "sbt-typelevel" % "0.8.5") -addSbtPlugin("org.typelevel" % "sbt-typelevel-site" % "0.8.5") -addSbtPlugin("org.scala-native" % "sbt-scala-native" % "0.5.10") +addSbtPlugin("ch.epfl.scala" % "sbt-scalafix" % "0.14.7") +addSbtPlugin("org.typelevel" % "sbt-typelevel" % "0.8.7") +addSbtPlugin("org.typelevel" % "sbt-typelevel-site" % "0.8.7") +addSbtPlugin("org.scala-native" % "sbt-scala-native" % "0.5.12") addSbtPlugin("org.creativescala" % "creative-scala-theme" % "0.5.2") addSbtPlugin("org.playframework.twirl" % "sbt-twirl" % "2.0.9") From df7dd04ffab040843fab3200ef7e5d057b7d8880 Mon Sep 17 00:00:00 2001 From: Artem Korsakov Date: Sun, 26 Jul 2026 12:12:32 +0300 Subject: [PATCH 5/9] Add HTMX example --- docs/src/pages/examples/htmx.md | 577 ++++++++++++------ .../pages/examples/images/after_logging.png | Bin 0 -> 196426 bytes docs/src/pages/examples/images/login.png | Bin 0 -> 65654 bytes .../pages/examples/images/registration.png | Bin 0 -> 71954 bytes 4 files changed, 379 insertions(+), 198 deletions(-) create mode 100644 docs/src/pages/examples/images/after_logging.png create mode 100644 docs/src/pages/examples/images/login.png create mode 100644 docs/src/pages/examples/images/registration.png diff --git a/docs/src/pages/examples/htmx.md b/docs/src/pages/examples/htmx.md index 0929fba..d8af328 100644 --- a/docs/src/pages/examples/htmx.md +++ b/docs/src/pages/examples/htmx.md @@ -1,8 +1,34 @@ -# Htmx +# Htmx: Building an Authorization Application -## Create models +This example demonstrates how to build a complete authorization application using Krop with [HTMX][htmx] for dynamic interactions. +The application implements user registration, login, logout, and session management — +all while following Krop's principles of type safety and composability. +It also showcases a task management interface with tabbed navigation as an example of authenticated content. -```scala 3 +## Overview + +The application provides a full user authentication flow: + +- **Login page** – Users can sign in with their credentials + ![Start page](images/login.png) +- **Registration page** – New users can create an account + ![Registration page](images/registration.png) +- **Authenticated dashboard** – After login, users see a personalized welcome page with task management tabs + ![After logging](images/after_logging.png) +- **Session management** – User tokens are stored in cookies for persistent sessions +- **Secure logout** – Users can safely end their session + +## Code Structure + +The example is organized into several logical components that work together seamlessly: + +### Models + +The `LoginRequest` case class defines the data structure for authentication requests, +using Circe's derivation support for JSON encoding and decoding. +This model is shared across the registration and login flows. + +```scala package krop.examples.htmx.models import io.circe.* @@ -14,9 +40,23 @@ final case class LoginRequest( Encoder ``` -## Create routes +### Routes -```scala 3 +The `Routes` object defines all the application's endpoints using Krop's routing DSL. Each route specifies: + +- The HTTP method (GET, POST) +- The URL path pattern +- Request extraction (headers, body parsing) +- Response handling with appropriate status codes + +The routes support: + +- Static pages (`/`, `/home`, `/register`) +- Authentication actions (`/auth/login`, `/auth/logout`) +- User creation (`/new_user`) +- Static asset serving (`/asset/*`) + +```scala package krop.examples.htmx.routes import krop.all.* @@ -81,9 +121,14 @@ object Routes: end Routes ``` -## Create views +### Views + +The application uses Twirl templates for server-side rendering. The view layer is organized as: + +#### base.scala.html -### base.scala.html +**`base.scala.html`** – The main layout template that includes the HTMX script, common styles, and navigation structure. +It uses `hx-get` and `hx-target` attributes to enable HTMX's dynamic page updates without full reloads. ```html @(title: String, content: Html) @@ -117,81 +162,93 @@ end Routes ``` -### login.scala.html +#### login.scala.html + +**`login.scala.html`** – The login form with username and password fields. +Error messages are displayed conditionally, and the form uses a JavaScript `onclick` handler to submit via fetch. ```html @(errorMessage: Option[String])
-

Login

- -
-
- - -
-
- - -
- -
- -
- @errorMessage.map { msg => -
@msg
- } -
+

Login

+ +
+
+ + +
+
+ + +
+ +
+ +
+ @errorMessage.map { msg => +
@msg
+ } +
-

- Don't have an account? - Register -

+

+ Don't have an account? + Register +

``` -### register.scala.html +#### register.scala.html + +**`register.scala.html`** – The registration form, similar to the login page but for new user creation. ```html @(errorMessage: Option[String])
-

Registration

+

Registration

-
-
- - -
-
- - -
- -
+
+
+ + +
+
+ + +
+ +
-
- @errorMessage.map { msg => -
@msg
- } -
+
+ @errorMessage.map { msg => +
@msg
+ } +
-

- Have an account? - Login -

+

+ Have an account? + Login +

``` -### welcome.scala.html +#### welcome.scala.html + +**`welcome.scala.html`** – The authenticated user dashboard. This template: + +- Displays the user's name and logout button +- Implements three tabbed sections: "In progress", "Planned", and "Knowledge base" +- Shows example tasks in each tab +- Includes `data-token` attribute for JavaScript to extract and store the session token ```html @(username: String, token: String) @@ -230,114 +287,15 @@ end Routes
-
- -
-
-
-
📚
-
-
Read "Creative Scala"
-
Noel Welsh • Progress: 60%
-
-
-
-
📝
-
-
Write an article about Krop
-
Blog • Deadline: July 25, 2026
-
-
-
-
💻
-
-
Implement Authentication
-
PDP Project • Priority: High
-
-
-
-
📊
-
-
Prepare Monthly Report
-
Statistics • Due by August 1st
-
-
-
+ ... // Mocks
-
- -
-
-
-
📖
-
-
Learn Scala 3
-
Plan • Start in August
-
-
-
-
🎯
-
-
Launch MVP project
-
Plan • Goal: Q4 2026
-
-
-
-
📈
-
-
Course Typelevel Stack
-
Training • Planned for September
-
-
-
+ ... // Mocks
-
- -
-
-
-
📄
-
-
Krop Documentation
-
Knowledge Base • Read and Take Notes
-
-
-
-
🎓
-
-
FP Lectures
-
Knowledge Base • View and Write Questions
-
-
-
+ ... // Mocks
@@ -346,7 +304,15 @@ end Routes ``` -## Create assets +### Assets + +The JavaScript file manages client-side interactions: + +- **Cookie management** – Functions to set, get, and delete cookies for storing the authentication token +- **Authentication handlers** – `loginUser()` and `registerUser()` functions that send credentials to the server +- **Response processing** – `handleAuthResponse()` parses the server response, extracts the token, and updates the UI +- **Tab switching** – `switchTab()` manages the task tabs on the dashboard +- **HTMX integration** – Automatically attaches the authentication token to all HTMX requests via the `htmx:beforeRequest` event listener ```javascript document.addEventListener('htmx:beforeRequest', function(event) { @@ -450,19 +416,78 @@ function switchTab(tabId) { } ``` +### Server + +The `SimpleAuthService` trait defines the authentication contract with three operations: -## Create simple auth server only for demonstration +- `findUser(token)` – Retrieves user information from a stored token +- `login(username, password)` – Validates credentials and returns user info +- `newUser(username, password)` – Creates a new user account -```scala 3 +The in-memory implementation demonstrates how to store and query user data, using a `Ref[IO, Vector[UserInfo]]` +for thread-safe state management. +This is a simplified demonstration; in production, you would replace this with a proper database. +```scala +package krop.examples.htmx.server + +import cats.effect.IO +import cats.effect.Ref +import krop.examples.htmx.server.SimpleAuthService.UserInfo + +import java.util.UUID + +/** !!!Just for the demonstration!!! */ +trait SimpleAuthService[F[_]]: + def findUser(token: String): F[Option[UserInfo]] + + def login(username: String, password: String): F[Option[UserInfo]] + + def newUser(username: String, password: String): F[Either[String, UserInfo]] + +object SimpleAuthService: + final case class UserInfo(username: String, password: String, token: String) + + def make(db: Ref[IO, Vector[UserInfo]]): SimpleAuthService[IO] = + new SimpleAuthService: + def findUser(token: String): IO[Option[UserInfo]] = + db.get.map(_.find(_.token == token)) + + def login(username: String, password: String): IO[Option[UserInfo]] = + db.get.map( + _.find(user => user.username == username && user.password == password) + ) + + def newUser( + username: String, + password: String + ): IO[Either[String, UserInfo]] = { + val newUser = UserInfo(username, password, UUID.randomUUID().toString) + + db.get.flatMap: + case users if users.exists(_.username == username) => + IO.pure(Left("A user with such username already exists.")) + case users => + db.update(users => newUser +: users).as(Right(newUser)) + } ``` +### Handlers + +Each route has a corresponding handler that processes requests and generates responses: + +- **`InitialHandler`** – Handles the root path (`/`), checking for existing sessions and either showing the login page or redirecting to the dashboard +- **`HomeHandler`** – Serves the home endpoint, similarly checking for valid sessions +- **`RegisterHandler`** – Serves the registration form +- **`LoginHandler`** – Processes login credentials, returning either the welcome page or an error message +- **`LogoutHandler`** – Validates the token and logs out the user +- **`NewUserHandler`** – Processes registration requests, handling both success and conflict cases -## Create Handlers +All handlers use Krop's `handleIO` method for effectful computations, with proper error handling and logging. -### Create Parser +#### Create Parser -```scala 3 +```scala package krop.examples.htmx.handlers import org.http4s.headers.Cookie @@ -474,23 +499,23 @@ object Parser: case rq if rq.name == "token" => rq.content ``` -### InitialHandler +#### InitialHandler -```scala 3 +```scala package krop.examples.htmx.handlers import cats.effect.IO import cats.syntax.all.* import krop.all.* +import krop.examples.htmx.handlers.Parser.* import krop.examples.htmx.routes.Routes -import krop.examples.htmx.server.SimpleAuthServer +import krop.examples.htmx.server.SimpleAuthService +import krop.examples.htmx.views.html import org.http4s.headers.Cookie import org.typelevel.log4cats.Logger -import krop.examples.htmx.handlers.Parser.* -import krop.examples.htmx.views.html final case class InitialHandler( - authServer: SimpleAuthServer[IO] + service: SimpleAuthService[IO] )(using Logger[IO]): private val name = "Personal Development Plan" @@ -501,7 +526,7 @@ final case class InitialHandler( Routes.index.handleIO: (cookie: Cookie) => cookie.getToken match case Some(token) => - authServer + service .findUser(token) .map: case Some(user) => @@ -520,23 +545,23 @@ final case class InitialHandler( end InitialHandler ``` -### HomeHandler +#### HomeHandler -```scala 3 +```scala package krop.examples.htmx.handlers import cats.effect.IO import cats.syntax.all.* import krop.all.* +import krop.examples.htmx.handlers.Parser.* import krop.examples.htmx.routes.Routes -import krop.examples.htmx.server.SimpleAuthServer +import krop.examples.htmx.server.SimpleAuthService +import krop.examples.htmx.views.html import org.http4s.headers.Cookie import org.typelevel.log4cats.Logger -import krop.examples.htmx.handlers.Parser.* -import krop.examples.htmx.views.html final case class HomeHandler( - authServer: SimpleAuthServer[IO] + service: SimpleAuthService[IO] )(using Logger[IO]): private val defaultPage = html.login(None).toString @@ -544,7 +569,7 @@ final case class HomeHandler( Routes.home.handleIO: (cookie: Cookie) => cookie.getToken match case Some(token) => - authServer + service .findUser(token) .map: case Some(user) => @@ -554,16 +579,16 @@ final case class HomeHandler( .recoverWith: case ex => Logger[IO] - .error(ex)(s"Ошибка: ${ex.getMessage}") + .error(ex)(s"Server error: ${ex.getMessage}") .as(defaultPage) case None => defaultPage.pure[IO] end HomeHandler ``` -### RegisterHandler +#### RegisterHandler -```scala 3 +```scala package krop.examples.htmx.handlers import krop.all.* @@ -577,32 +602,188 @@ object RegisterHandler: } ``` -### LoginHandler +#### LoginHandler + +```scala +package krop.examples.htmx.handlers -```scala 3 +import cats.effect.IO +import cats.syntax.all.* +import krop.all.* +import krop.examples.htmx.models.LoginRequest +import krop.examples.htmx.routes.Routes +import krop.examples.htmx.server.SimpleAuthService +import krop.examples.htmx.views.html +import org.typelevel.log4cats.Logger +final case class LoginHandler( + service: SimpleAuthService[IO] +)(using Logger[IO]): + val handler: Handler = + Routes.login.handleIO { (request: LoginRequest) => + service + .login(request.username, request.password) + .map: + case Some(user) => + html.welcome(user.username, user.token).toString.asRight.some + case None => + html.login("User not found".some).toString.asLeft.some + .recoverWith: + case ex => + Logger[IO].error(ex)(s"Server error: ${ex.getMessage}").as(none) + } +end LoginHandler ``` -### LogoutHandler +#### LogoutHandler + +```scala +package krop.examples.htmx.handlers -```scala 3 +import cats.effect.IO +import cats.syntax.all.* +import krop.all.* +import krop.examples.htmx.routes.Routes +import krop.examples.htmx.server.SimpleAuthService +import krop.examples.htmx.views.html +import org.http4s.AuthScheme +import org.http4s.Credentials.Token +import org.http4s.headers.Authorization +import org.typelevel.log4cats.Logger +final case class LogoutHandler( + service: SimpleAuthService[IO] +)(using Logger[IO]): + val handler: Handler = + Routes.logout.handleIO: (authorization: Authorization) => + authorization match + case Authorization(Token(AuthScheme.Bearer, token)) => + service + .findUser(token) + .map: + case Some(_) => + html.login(none).toString.asRight.some + case None => + html.login("User not found".some).toString.asLeft.some + case _ => + html + .login("An authorization error occurred".some) + .toString + .asLeft + .some + .pure[IO] +end LogoutHandler ``` -### NewUserHandler +#### NewUserHandler + +```scala +package krop.examples.htmx.handlers -```scala 3 +import cats.effect.IO +import cats.syntax.all.* +import krop.all.* +import krop.examples.htmx.models.LoginRequest +import krop.examples.htmx.routes.Routes +import krop.examples.htmx.server.SimpleAuthService +import krop.examples.htmx.views.html +import org.typelevel.log4cats.Logger +final case class NewUserHandler( + service: SimpleAuthService[IO] +)(using Logger[IO]): + val handler: Handler = + Routes.newUser.handleIO { (request: LoginRequest) => + service + .newUser(request.username, request.password) + .map: + case Right(user) => + html.welcome(user.username, user.token).toString.asRight.some + case Left(error) => + html.register(error.some).toString.asLeft.some + .recoverWith: + case ex => + Logger[IO].error(ex)(s"Server error: ${ex.getMessage}").as(none) + } +end NewUserHandler ``` +### Main +The `Main` object is the application entry point. It: -## Create Main +1. Creates a logger instance +2. Initializes the in-memory user database +3. Composes all routes together using `orElse` +4. Builds and runs the server on the default port -```scala 3 +```scala +package krop.examples.htmx +import cats.effect.* +import krop.all.* +import krop.examples.htmx.handlers.* +import krop.examples.htmx.server.SimpleAuthService +import krop.examples.htmx.server.SimpleAuthService.UserInfo +import org.typelevel.log4cats.Logger +import org.typelevel.log4cats.slf4j.Slf4jLogger + +val name = "Personal Development Plan" + +object Main extends IOApp: + given Logger[IO] = Slf4jLogger.getLogger[IO] + + def application(db: Ref[IO, Vector[UserInfo]]): Application = + val service: SimpleAuthService[IO] = + SimpleAuthService.make(db) + + val initialHandler = InitialHandler(service) + val homeHandler = HomeHandler(service) + val loginHandler = LoginHandler(service) + val logoutHandler = LogoutHandler(service) + val newUserHandler = NewUserHandler(service) + val assetRoute = + Route( + Request.get(Path.root / "asset" / Params.separatedString("/")), + Response.staticResource("/asset/") + ) + + initialHandler.handler + .orElse(homeHandler.handler) + .orElse(RegisterHandler.handler) + .orElse(loginHandler.handler) + .orElse(logoutHandler.handler) + .orElse(newUserHandler.handler) + .orElse(assetRoute.passthrough) + .orElse(Application.notFound) + + override def run(args: List[String]): IO[ExitCode] = + Ref[IO] + .of(Vector.empty[UserInfo]) + .flatMap: db => + ServerBuilder.default + .withApplication(application(db)) + .build + .toIO + .as(ExitCode.Success) ``` +## Using the Application + +1. Start the application by running the `Main` class +2. Open your browser and navigate to `http://localhost:8080/` +3. You'll see the login page. Use the "Register" link to create a new account +4. After registration or login, you'll be redirected to your personalized dashboard +5. Explore the task tabs, use the logout button, or switch between accounts + +## Conclusion + +This example demonstrates how Krop's design enables you to build complete, type-safe web applications +with modern frontend interactions using [HTMX][htmx]. +By combining Krop's routing, request handling, and response composition with HTMX's dynamic capabilities, +you can create rich user experiences while maintaining clean separation of concerns and functional programming principles. + +The full source code is available in the Krop [examples directory][source]. [htmx]: https://htmx.org/ -[source]: https://github.com/creativescala/krop/tree/main/examples/src/main \ No newline at end of file +[source]: https://github.com/creativescala/krop/tree/main/examples/src/main diff --git a/docs/src/pages/examples/images/after_logging.png b/docs/src/pages/examples/images/after_logging.png new file mode 100644 index 0000000000000000000000000000000000000000..e99ff950b94834001c9d704a2aef451712442ff9 GIT binary patch literal 196426 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%0A_1RGrh4SZF>m@1fSK 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 Y7I)3%mudM2fIkYi@7~I}@%Y9607X7W#{d8T literal 0 HcmV?d00001 diff --git a/docs/src/pages/examples/images/login.png b/docs/src/pages/examples/images/login.png new file mode 100644 index 0000000000000000000000000000000000000000..1fafbccb82170a643175224c74b157ba4fbde129 GIT binary patch literal 65654 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

C| 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 literal 0 HcmV?d00001 From f5c8117f81965f502bde1c5de259b8ec6ad6532f Mon Sep 17 00:00:00 2001 From: Artem Korsakov Date: Sun, 26 Jul 2026 12:28:00 +0300 Subject: [PATCH 6/9] Add HTMX example --- build.sbt | 2 +- .../scala/krop/examples/htmx/server/SimpleAuthService.scala | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/build.sbt b/build.sbt index 286636c..78c8268 100644 --- a/build.sbt +++ b/build.sbt @@ -202,7 +202,7 @@ lazy val examples = project ) .settings( commonSettings, - // To avoid warn "unused import" for krop/examples/htmx/views/???.scala.html files + // To avoid warn "unused import" for krop/examples/htmx/views/*.scala.html files scalacOptions += "-Wconf:src=.*/views/html/.*:silent", moduleName := "krop-examples", mimaPreviousArtifacts := Set.empty, diff --git a/examples/src/main/scala/krop/examples/htmx/server/SimpleAuthService.scala b/examples/src/main/scala/krop/examples/htmx/server/SimpleAuthService.scala index 09cfacf..e5152aa 100644 --- a/examples/src/main/scala/krop/examples/htmx/server/SimpleAuthService.scala +++ b/examples/src/main/scala/krop/examples/htmx/server/SimpleAuthService.scala @@ -22,7 +22,7 @@ import krop.examples.htmx.server.SimpleAuthService.UserInfo import java.util.UUID -// Just for a demonstration +/** !!!Just for the demonstration!!! */ trait SimpleAuthService[F[_]]: def findUser(token: String): F[Option[UserInfo]] From 16495ca40cec6d0682fe944d2525ded5c8d76ed0 Mon Sep 17 00:00:00 2001 From: Artem Korsakov Date: Mon, 27 Jul 2026 08:18:02 +0300 Subject: [PATCH 7/9] Add HTMX example --- .../scala/krop/examples/htmx/handlers/LogoutHandler.scala | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/examples/src/main/scala/krop/examples/htmx/handlers/LogoutHandler.scala b/examples/src/main/scala/krop/examples/htmx/handlers/LogoutHandler.scala index 1a2aea2..fc4ce43 100644 --- a/examples/src/main/scala/krop/examples/htmx/handlers/LogoutHandler.scala +++ b/examples/src/main/scala/krop/examples/htmx/handlers/LogoutHandler.scala @@ -25,11 +25,8 @@ import krop.examples.htmx.views.html import org.http4s.AuthScheme import org.http4s.Credentials.Token import org.http4s.headers.Authorization -import org.typelevel.log4cats.Logger -final case class LogoutHandler( - service: SimpleAuthService[IO] -)(using Logger[IO]): +final case class LogoutHandler(service: SimpleAuthService[IO]): val handler: Handler = Routes.logout.handleIO: (authorization: Authorization) => authorization match From 53873902b1008e372a7d1151e8c7035aa7c5a2a6 Mon Sep 17 00:00:00 2001 From: Artem Korsakov Date: Mon, 27 Jul 2026 09:17:20 +0300 Subject: [PATCH 8/9] Add FormCodec for POST-requests --- .../src/main/resources/asset/htmx-example.js | 51 ---------------- .../examples/htmx/models/LoginRequest.scala | 4 +- .../krop/examples/htmx/routes/Routes.scala | 4 +- .../krop/examples/htmx/views/login.scala.html | 58 ++++++++++--------- .../examples/htmx/views/register.scala.html | 58 ++++++++++--------- .../examples/htmx/views/welcome.scala.html | 4 +- 6 files changed, 71 insertions(+), 108 deletions(-) diff --git a/examples/src/main/resources/asset/htmx-example.js b/examples/src/main/resources/asset/htmx-example.js index 490d6e5..a5bf4b0 100644 --- a/examples/src/main/resources/asset/htmx-example.js +++ b/examples/src/main/resources/asset/htmx-example.js @@ -39,57 +39,6 @@ function clearUserCookies() { deleteCookie('token'); } -function handleAuthResponse(response) { - if (response.ok) { - return response.text().then(html => { - var parser = new DOMParser(); - var doc = parser.parseFromString(html, 'text/html'); - var welcomeBlock = doc.querySelector('#welcomeBlock'); - - if (welcomeBlock) { - var token = welcomeBlock.getAttribute('data-token'); - if (token) { - saveUserCookies(token); - } - } - - document.getElementById('app').outerHTML = html; - }); - } else { - return response.text().then(html => { - document.getElementById('app').outerHTML = html; - }); - } -} - -function registerUser() { - const username = document.getElementById('username').value; - const password = document.getElementById('password').value; - - fetch('/new_user', { - method: 'POST', - headers: { - 'Content-Type': 'application/json' - }, - body: JSON.stringify({username, password}) - }) - .then(response => handleAuthResponse(response)); -} - -function loginUser() { - const username = document.getElementById('loginUsername').value; - const password = document.getElementById('loginPassword').value; - - fetch('/auth/login', { - method: 'POST', - headers: { - 'Content-Type': 'application/json' - }, - body: JSON.stringify({username, password}) - }) - .then(response => handleAuthResponse(response)); -} - function switchTab(tabId) { document.querySelectorAll('.tab-btn').forEach(btn => btn.classList.remove('active')); document.querySelectorAll('.tab-content').forEach(content => content.classList.remove('active')); diff --git a/examples/src/main/scala/krop/examples/htmx/models/LoginRequest.scala b/examples/src/main/scala/krop/examples/htmx/models/LoginRequest.scala index 530b092..36eaf5c 100644 --- a/examples/src/main/scala/krop/examples/htmx/models/LoginRequest.scala +++ b/examples/src/main/scala/krop/examples/htmx/models/LoginRequest.scala @@ -17,9 +17,11 @@ package krop.examples.htmx.models import io.circe.* +import krop.route.FormCodec final case class LoginRequest( username: String, password: String ) derives Decoder, - Encoder + Encoder, + FormCodec diff --git a/examples/src/main/scala/krop/examples/htmx/routes/Routes.scala b/examples/src/main/scala/krop/examples/htmx/routes/Routes.scala index ec5ce0a..8cc8953 100644 --- a/examples/src/main/scala/krop/examples/htmx/routes/Routes.scala +++ b/examples/src/main/scala/krop/examples/htmx/routes/Routes.scala @@ -43,7 +43,7 @@ object Routes: val login = Route( Request .post(Path.root / "auth" / "login") - .withEntity(Entity.jsonOf[LoginRequest]), + .withEntity(Entity.formOf[LoginRequest]), Response .ok(Entity.html) .orElse(Response.status(HttpStatus.Forbidden, Entity.html)) @@ -53,7 +53,7 @@ object Routes: val newUser = Route( Request .post(Path.root / "new_user") - .withEntity(Entity.jsonOf[LoginRequest]), + .withEntity(Entity.formOf[LoginRequest]), Response .status(HttpStatus.Created, Entity.html) .orElse(Response.status(HttpStatus.Conflict, Entity.html)) diff --git a/examples/src/main/scala/krop/examples/htmx/views/login.scala.html b/examples/src/main/scala/krop/examples/htmx/views/login.scala.html index 460cc59..22cf06b 100644 --- a/examples/src/main/scala/krop/examples/htmx/views/login.scala.html +++ b/examples/src/main/scala/krop/examples/htmx/views/login.scala.html @@ -1,32 +1,38 @@ @(errorMessage: Option[String])

\ No newline at end of file diff --git a/examples/src/main/scala/krop/examples/htmx/views/register.scala.html b/examples/src/main/scala/krop/examples/htmx/views/register.scala.html index 00073e9..5083585 100644 --- a/examples/src/main/scala/krop/examples/htmx/views/register.scala.html +++ b/examples/src/main/scala/krop/examples/htmx/views/register.scala.html @@ -1,32 +1,38 @@ @(errorMessage: Option[String])
-

Registration

+

Registration

-
-
- - -
-
- - -
- -
+
+
+ + +
+
+ + +
+ +
-
- @errorMessage.map { msg => -
@msg
- } -
+
+ @errorMessage.map { msg => +
@msg
+ } +
-

- Have an account? - Login -

+

+ Have an account? + Login +

\ No newline at end of file diff --git a/examples/src/main/scala/krop/examples/htmx/views/welcome.scala.html b/examples/src/main/scala/krop/examples/htmx/views/welcome.scala.html index e9574be..596a276 100644 --- a/examples/src/main/scala/krop/examples/htmx/views/welcome.scala.html +++ b/examples/src/main/scala/krop/examples/htmx/views/welcome.scala.html @@ -1,7 +1,7 @@ @(username: String, token: String)
-
+ +

Welcome, @username!

From 77bde788d7c258a81772a84aee357bce6c1f18a4 Mon Sep 17 00:00:00 2001 From: Artem Korsakov Date: Mon, 27 Jul 2026 09:38:43 +0300 Subject: [PATCH 9/9] Add FormCodec for POST-requests --- docs/src/pages/examples/htmx.md | 246 ++++++++---------- .../krop/examples/htmx/routes/Routes.scala | 6 +- 2 files changed, 107 insertions(+), 145 deletions(-) diff --git a/docs/src/pages/examples/htmx.md b/docs/src/pages/examples/htmx.md index d8af328..057a559 100644 --- a/docs/src/pages/examples/htmx.md +++ b/docs/src/pages/examples/htmx.md @@ -32,12 +32,14 @@ This model is shared across the registration and login flows. package krop.examples.htmx.models import io.circe.* +import krop.route.FormCodec final case class LoginRequest( username: String, password: String ) derives Decoder, - Encoder + Encoder, + FormCodec ``` ### Routes @@ -86,20 +88,20 @@ object Routes: val login = Route( Request .post(Path.root / "auth" / "login") - .withEntity(Entity.jsonOf[LoginRequest]), + .withEntity(Entity.formOf[LoginRequest]), Response .ok(Entity.html) - .orElse(Response.status(HttpStatus.Forbidden, Entity.html)) + .orElse(Response.status(HttpStatus.Ok, Entity.html)) .orNotFound ) val newUser = Route( Request .post(Path.root / "new_user") - .withEntity(Entity.jsonOf[LoginRequest]), + .withEntity(Entity.formOf[LoginRequest]), Response .status(HttpStatus.Created, Entity.html) - .orElse(Response.status(HttpStatus.Conflict, Entity.html)) + .orElse(Response.status(HttpStatus.Ok, Entity.html)) .orNotFound ) @@ -109,7 +111,7 @@ object Routes: .extractHeader[Authorization], Response .ok(Entity.html) - .orElse(Response.status(HttpStatus.Forbidden, Entity.html)) + .orElse(Response.status(HttpStatus.Ok, Entity.html)) .orNotFound ) @@ -165,40 +167,46 @@ It uses `hx-get` and `hx-target` attributes to enable HTMX's dynamic page update #### login.scala.html **`login.scala.html`** – The login form with username and password fields. -Error messages are displayed conditionally, and the form uses a JavaScript `onclick` handler to submit via fetch. +Error messages are displayed conditionally, and the form uses `hx-post` handler to submit via fetch. ```html @(errorMessage: Option[String])
-

Login

+

Login

-
-
- - -
-
- - -
- -
- -
- @errorMessage.map { msg => -
@msg
- } +
+
+ +
- -

- Don't have an account? - Register -

+
+ + +
+ +
+ +
+ @errorMessage.map { msg => +
@msg
+ } +
+ +

+ Don't have an account? + Register +

``` @@ -209,35 +217,41 @@ Error messages are displayed conditionally, and the form uses a JavaScript `oncl ```html @(errorMessage: Option[String])
-

Registration

- -
-
- - -
-
- - -
- -
+

Registration

-
- @errorMessage.map { msg => -
@msg
- } +
+
+ +
- -

- Have an account? - Login -

+
+ + +
+ +
+ +
+ @errorMessage.map { msg => +
@msg
+ } +
+ +

+ Have an account? + Login +

``` @@ -248,11 +262,12 @@ Error messages are displayed conditionally, and the form uses a JavaScript `oncl - Displays the user's name and logout button - Implements three tabbed sections: "In progress", "Planned", and "Knowledge base" - Shows example tasks in each tab -- Includes `data-token` attribute for JavaScript to extract and store the session token +- Includes `saveUserCookies` script to extract and store the session token ```html @(username: String, token: String)
+
@@ -309,110 +324,57 @@ Error messages are displayed conditionally, and the form uses a JavaScript `oncl The JavaScript file manages client-side interactions: - **Cookie management** – Functions to set, get, and delete cookies for storing the authentication token -- **Authentication handlers** – `loginUser()` and `registerUser()` functions that send credentials to the server -- **Response processing** – `handleAuthResponse()` parses the server response, extracts the token, and updates the UI - **Tab switching** – `switchTab()` manages the task tabs on the dashboard - **HTMX integration** – Automatically attaches the authentication token to all HTMX requests via the `htmx:beforeRequest` event listener ```javascript document.addEventListener('htmx:beforeRequest', function(event) { - var token = getCookie('token'); - if (token) { - event.detail.xhr.setRequestHeader('Authorization', 'Bearer ' + token); - } + var token = getCookie('token'); + if (token) { + event.detail.xhr.setRequestHeader('Authorization', 'Bearer ' + token); + } }); function setCookie(name, value, days) { - days = days || 7; - var expires = new Date(); - expires.setTime(expires.getTime() + days * 24 * 60 * 60 * 1000); - document.cookie = name + "=" + encodeURIComponent(value) + - "; expires=" + expires.toUTCString() + - "; path=/"; + days = days || 7; + var expires = new Date(); + expires.setTime(expires.getTime() + days * 24 * 60 * 60 * 1000); + document.cookie = name + "=" + encodeURIComponent(value) + + "; expires=" + expires.toUTCString() + + "; path=/"; } function getCookie(name) { - var nameEQ = name + "="; - var ca = document.cookie.split(';'); - for(var i = 0; i < ca.length; i++) { - var c = ca[i]; - while (c.charAt(0) === ' ') c = c.substring(1, c.length); - if (c.indexOf(nameEQ) === 0) return decodeURIComponent(c.substring(nameEQ.length, c.length)); - } - return null; + var nameEQ = name + "="; + var ca = document.cookie.split(';'); + for(var i = 0; i < ca.length; i++) { + var c = ca[i]; + while (c.charAt(0) === ' ') c = c.substring(1, c.length); + if (c.indexOf(nameEQ) === 0) return decodeURIComponent(c.substring(nameEQ.length, c.length)); + } + return null; } function deleteCookie(name) { - document.cookie = name + '=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;'; + document.cookie = name + '=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;'; } function saveUserCookies(token) { - if (token) { - setCookie('token', token); - } + if (token) { + setCookie('token', token); + } } function clearUserCookies() { - deleteCookie('token'); -} - -function handleAuthResponse(response) { - if (response.ok) { - return response.text().then(html => { - var parser = new DOMParser(); - var doc = parser.parseFromString(html, 'text/html'); - var welcomeBlock = doc.querySelector('#welcomeBlock'); - - if (welcomeBlock) { - var token = welcomeBlock.getAttribute('data-token'); - if (token) { - saveUserCookies(token); - } - } - - document.getElementById('app').outerHTML = html; - }); - } else { - return response.text().then(html => { - document.getElementById('app').outerHTML = html; - }); - } -} - -function registerUser() { - const username = document.getElementById('username').value; - const password = document.getElementById('password').value; - - fetch('/new_user', { - method: 'POST', - headers: { - 'Content-Type': 'application/json' - }, - body: JSON.stringify({username, password}) - }) - .then(response => handleAuthResponse(response)); -} - -function loginUser() { - const username = document.getElementById('loginUsername').value; - const password = document.getElementById('loginPassword').value; - - fetch('/auth/login', { - method: 'POST', - headers: { - 'Content-Type': 'application/json' - }, - body: JSON.stringify({username, password}) - }) - .then(response => handleAuthResponse(response)); + deleteCookie('token'); } function switchTab(tabId) { - document.querySelectorAll('.tab-btn').forEach(btn => btn.classList.remove('active')); - document.querySelectorAll('.tab-content').forEach(content => content.classList.remove('active')); + document.querySelectorAll('.tab-btn').forEach(btn => btn.classList.remove('active')); + document.querySelectorAll('.tab-content').forEach(content => content.classList.remove('active')); - document.querySelector(`.tab-btn[data-tab="${tabId}"]`).classList.add('active'); - document.getElementById(`tab-${tabId}`).classList.add('active'); + document.querySelector(`.tab-btn[data-tab="${tabId}"]`).classList.add('active'); + document.getElementById(`tab-${tabId}`).classList.add('active'); } ``` diff --git a/examples/src/main/scala/krop/examples/htmx/routes/Routes.scala b/examples/src/main/scala/krop/examples/htmx/routes/Routes.scala index 8cc8953..2a495e6 100644 --- a/examples/src/main/scala/krop/examples/htmx/routes/Routes.scala +++ b/examples/src/main/scala/krop/examples/htmx/routes/Routes.scala @@ -46,7 +46,7 @@ object Routes: .withEntity(Entity.formOf[LoginRequest]), Response .ok(Entity.html) - .orElse(Response.status(HttpStatus.Forbidden, Entity.html)) + .orElse(Response.status(HttpStatus.Ok, Entity.html)) .orNotFound ) @@ -56,7 +56,7 @@ object Routes: .withEntity(Entity.formOf[LoginRequest]), Response .status(HttpStatus.Created, Entity.html) - .orElse(Response.status(HttpStatus.Conflict, Entity.html)) + .orElse(Response.status(HttpStatus.Ok, Entity.html)) .orNotFound ) @@ -66,7 +66,7 @@ object Routes: .extractHeader[Authorization], Response .ok(Entity.html) - .orElse(Response.status(HttpStatus.Forbidden, Entity.html)) + .orElse(Response.status(HttpStatus.Ok, Entity.html)) .orNotFound )