Built for people who think better out loud.

build: Restructure & add Axum backend

isaaccorbrey.com ec29ef33 7d321807

verified
+683 -49
+16 -13
.gitignore
··· 1 - # build output 2 - dist/ 3 - # generated types 4 - .astro/ 1 + # frontend build output 2 + frontend/dist/ 3 + 4 + # frontend generated types 5 + frontend/.astro/ 6 + 7 + # frontend dependencies 8 + frontend/node_modules/ 5 9 6 - # dependencies 7 - node_modules/ 10 + # frontend Storybook 11 + debug-storybook.log 12 + frontend/storybook-static/ 8 13 9 - # logs 14 + # package manager/debug logs 10 15 npm-debug.log* 11 16 yarn-debug.log* 12 17 yarn-error.log* 13 18 pnpm-debug.log* 14 19 15 - 16 20 # environment variables 17 21 .env 18 22 .env.production 19 23 24 + # Rust backend artifacts 25 + **/target/ 26 + 20 27 # macOS-specific files 21 28 .DS_Store 22 29 23 - # jetbrains setting folder 30 + # JetBrains settings 24 31 .idea/ 25 - 26 - # Storybook 27 - debug-storybook.log 28 - storybook-static
.storybook/main.js frontend/.storybook/main.js
.storybook/preview-head.html frontend/.storybook/preview-head.html
.storybook/preview.js frontend/.storybook/preview.js
+14 -36
README.md
··· 1 - # Astro Starter Kit: Minimal 1 + # slipnote 2 2 3 - ```sh 4 - pnpm create astro@latest -- --template minimal 5 - ``` 3 + Monorepo layout: 6 4 7 - > 🧑‍🚀 **Seasoned astronaut?** Delete this file. Have fun! 5 + - `frontend/`: Astro frontend 6 + - `backend/`: Rust Axum backend 8 7 9 - ## 🚀 Project Structure 8 + ## Frontend 10 9 11 - Inside of your Astro project, you'll see the following folders and files: 12 - 13 - ```text 14 - / 15 - ├── public/ 16 - ├── src/ 17 - │ └── pages/ 18 - │ └── index.astro 19 - └── package.json 10 + ```sh 11 + cd frontend 12 + pnpm install 13 + pnpm dev 20 14 ``` 21 15 22 - Astro looks for `.astro` or `.md` files in the `src/pages/` directory. Each page is exposed as a route based on its file name. 16 + ## Backend 23 17 24 - There's nothing special about `src/components/`, but that's where we like to put any Astro/React/Vue/Svelte/Preact components. 25 - 26 - Any static assets, like images, can be placed in the `public/` directory. 27 - 28 - ## 🧞 Commands 29 - 30 - All commands are run from the root of the project, from a terminal: 31 - 32 - | Command | Action | 33 - | :------------------------ | :----------------------------------------------- | 34 - | `pnpm install` | Installs dependencies | 35 - | `pnpm dev` | Starts local dev server at `localhost:4321` | 36 - | `pnpm build` | Build your production site to `./dist/` | 37 - | `pnpm preview` | Preview your build locally, before deploying | 38 - | `pnpm astro ...` | Run CLI commands like `astro add`, `astro check` | 39 - | `pnpm astro -- --help` | Get help using the Astro CLI | 40 - 41 - ## 👀 Want to learn more? 42 - 43 - Feel free to check [our documentation](https://docs.astro.build) or jump into our [Discord server](https://astro.build/chat). 18 + ```sh 19 + cd backend 20 + cargo run 21 + ```
astro.config.mjs frontend/astro.config.mjs
+577
backend/Cargo.lock
··· 1 + # This file is automatically @generated by Cargo. 2 + # It is not intended for manual editing. 3 + version = 4 4 + 5 + [[package]] 6 + name = "atomic-waker" 7 + version = "1.1.2" 8 + source = "registry+https://github.com/rust-lang/crates.io-index" 9 + checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" 10 + 11 + [[package]] 12 + name = "axum" 13 + version = "0.8.8" 14 + source = "registry+https://github.com/rust-lang/crates.io-index" 15 + checksum = "8b52af3cb4058c895d37317bb27508dccc8e5f2d39454016b297bf4a400597b8" 16 + dependencies = [ 17 + "axum-core", 18 + "bytes", 19 + "form_urlencoded", 20 + "futures-util", 21 + "http", 22 + "http-body", 23 + "http-body-util", 24 + "hyper", 25 + "hyper-util", 26 + "itoa", 27 + "matchit", 28 + "memchr", 29 + "mime", 30 + "percent-encoding", 31 + "pin-project-lite", 32 + "serde_core", 33 + "serde_json", 34 + "serde_path_to_error", 35 + "serde_urlencoded", 36 + "sync_wrapper", 37 + "tokio", 38 + "tower", 39 + "tower-layer", 40 + "tower-service", 41 + "tracing", 42 + ] 43 + 44 + [[package]] 45 + name = "axum-core" 46 + version = "0.5.6" 47 + source = "registry+https://github.com/rust-lang/crates.io-index" 48 + checksum = "08c78f31d7b1291f7ee735c1c6780ccde7785daae9a9206026862dab7d8792d1" 49 + dependencies = [ 50 + "bytes", 51 + "futures-core", 52 + "http", 53 + "http-body", 54 + "http-body-util", 55 + "mime", 56 + "pin-project-lite", 57 + "sync_wrapper", 58 + "tower-layer", 59 + "tower-service", 60 + "tracing", 61 + ] 62 + 63 + [[package]] 64 + name = "bytes" 65 + version = "1.11.1" 66 + source = "registry+https://github.com/rust-lang/crates.io-index" 67 + checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" 68 + 69 + [[package]] 70 + name = "form_urlencoded" 71 + version = "1.2.2" 72 + source = "registry+https://github.com/rust-lang/crates.io-index" 73 + checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" 74 + dependencies = [ 75 + "percent-encoding", 76 + ] 77 + 78 + [[package]] 79 + name = "futures-channel" 80 + version = "0.3.32" 81 + source = "registry+https://github.com/rust-lang/crates.io-index" 82 + checksum = "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d" 83 + dependencies = [ 84 + "futures-core", 85 + ] 86 + 87 + [[package]] 88 + name = "futures-core" 89 + version = "0.3.32" 90 + source = "registry+https://github.com/rust-lang/crates.io-index" 91 + checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d" 92 + 93 + [[package]] 94 + name = "futures-task" 95 + version = "0.3.32" 96 + source = "registry+https://github.com/rust-lang/crates.io-index" 97 + checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393" 98 + 99 + [[package]] 100 + name = "futures-util" 101 + version = "0.3.32" 102 + source = "registry+https://github.com/rust-lang/crates.io-index" 103 + checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6" 104 + dependencies = [ 105 + "futures-core", 106 + "futures-task", 107 + "pin-project-lite", 108 + "slab", 109 + ] 110 + 111 + [[package]] 112 + name = "http" 113 + version = "1.4.0" 114 + source = "registry+https://github.com/rust-lang/crates.io-index" 115 + checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a" 116 + dependencies = [ 117 + "bytes", 118 + "itoa", 119 + ] 120 + 121 + [[package]] 122 + name = "http-body" 123 + version = "1.0.1" 124 + source = "registry+https://github.com/rust-lang/crates.io-index" 125 + checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" 126 + dependencies = [ 127 + "bytes", 128 + "http", 129 + ] 130 + 131 + [[package]] 132 + name = "http-body-util" 133 + version = "0.1.3" 134 + source = "registry+https://github.com/rust-lang/crates.io-index" 135 + checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" 136 + dependencies = [ 137 + "bytes", 138 + "futures-core", 139 + "http", 140 + "http-body", 141 + "pin-project-lite", 142 + ] 143 + 144 + [[package]] 145 + name = "httparse" 146 + version = "1.10.1" 147 + source = "registry+https://github.com/rust-lang/crates.io-index" 148 + checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" 149 + 150 + [[package]] 151 + name = "httpdate" 152 + version = "1.0.3" 153 + source = "registry+https://github.com/rust-lang/crates.io-index" 154 + checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" 155 + 156 + [[package]] 157 + name = "hyper" 158 + version = "1.8.1" 159 + source = "registry+https://github.com/rust-lang/crates.io-index" 160 + checksum = "2ab2d4f250c3d7b1c9fcdff1cece94ea4e2dfbec68614f7b87cb205f24ca9d11" 161 + dependencies = [ 162 + "atomic-waker", 163 + "bytes", 164 + "futures-channel", 165 + "futures-core", 166 + "http", 167 + "http-body", 168 + "httparse", 169 + "httpdate", 170 + "itoa", 171 + "pin-project-lite", 172 + "pin-utils", 173 + "smallvec", 174 + "tokio", 175 + ] 176 + 177 + [[package]] 178 + name = "hyper-util" 179 + version = "0.1.20" 180 + source = "registry+https://github.com/rust-lang/crates.io-index" 181 + checksum = "96547c2556ec9d12fb1578c4eaf448b04993e7fb79cbaad930a656880a6bdfa0" 182 + dependencies = [ 183 + "bytes", 184 + "http", 185 + "http-body", 186 + "hyper", 187 + "pin-project-lite", 188 + "tokio", 189 + "tower-service", 190 + ] 191 + 192 + [[package]] 193 + name = "itoa" 194 + version = "1.0.17" 195 + source = "registry+https://github.com/rust-lang/crates.io-index" 196 + checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" 197 + 198 + [[package]] 199 + name = "libc" 200 + version = "0.2.182" 201 + source = "registry+https://github.com/rust-lang/crates.io-index" 202 + checksum = "6800badb6cb2082ffd7b6a67e6125bb39f18782f793520caee8cb8846be06112" 203 + 204 + [[package]] 205 + name = "log" 206 + version = "0.4.29" 207 + source = "registry+https://github.com/rust-lang/crates.io-index" 208 + checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" 209 + 210 + [[package]] 211 + name = "matchit" 212 + version = "0.8.4" 213 + source = "registry+https://github.com/rust-lang/crates.io-index" 214 + checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3" 215 + 216 + [[package]] 217 + name = "memchr" 218 + version = "2.8.0" 219 + source = "registry+https://github.com/rust-lang/crates.io-index" 220 + checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" 221 + 222 + [[package]] 223 + name = "mime" 224 + version = "0.3.17" 225 + source = "registry+https://github.com/rust-lang/crates.io-index" 226 + checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" 227 + 228 + [[package]] 229 + name = "mio" 230 + version = "1.1.1" 231 + source = "registry+https://github.com/rust-lang/crates.io-index" 232 + checksum = "a69bcab0ad47271a0234d9422b131806bf3968021e5dc9328caf2d4cd58557fc" 233 + dependencies = [ 234 + "libc", 235 + "wasi", 236 + "windows-sys 0.61.2", 237 + ] 238 + 239 + [[package]] 240 + name = "once_cell" 241 + version = "1.21.3" 242 + source = "registry+https://github.com/rust-lang/crates.io-index" 243 + checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" 244 + 245 + [[package]] 246 + name = "percent-encoding" 247 + version = "2.3.2" 248 + source = "registry+https://github.com/rust-lang/crates.io-index" 249 + checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" 250 + 251 + [[package]] 252 + name = "pin-project-lite" 253 + version = "0.2.16" 254 + source = "registry+https://github.com/rust-lang/crates.io-index" 255 + checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" 256 + 257 + [[package]] 258 + name = "pin-utils" 259 + version = "0.1.0" 260 + source = "registry+https://github.com/rust-lang/crates.io-index" 261 + checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" 262 + 263 + [[package]] 264 + name = "proc-macro2" 265 + version = "1.0.106" 266 + source = "registry+https://github.com/rust-lang/crates.io-index" 267 + checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" 268 + dependencies = [ 269 + "unicode-ident", 270 + ] 271 + 272 + [[package]] 273 + name = "quote" 274 + version = "1.0.44" 275 + source = "registry+https://github.com/rust-lang/crates.io-index" 276 + checksum = "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4" 277 + dependencies = [ 278 + "proc-macro2", 279 + ] 280 + 281 + [[package]] 282 + name = "ryu" 283 + version = "1.0.23" 284 + source = "registry+https://github.com/rust-lang/crates.io-index" 285 + checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f" 286 + 287 + [[package]] 288 + name = "serde" 289 + version = "1.0.228" 290 + source = "registry+https://github.com/rust-lang/crates.io-index" 291 + checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" 292 + dependencies = [ 293 + "serde_core", 294 + ] 295 + 296 + [[package]] 297 + name = "serde_core" 298 + version = "1.0.228" 299 + source = "registry+https://github.com/rust-lang/crates.io-index" 300 + checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" 301 + dependencies = [ 302 + "serde_derive", 303 + ] 304 + 305 + [[package]] 306 + name = "serde_derive" 307 + version = "1.0.228" 308 + source = "registry+https://github.com/rust-lang/crates.io-index" 309 + checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" 310 + dependencies = [ 311 + "proc-macro2", 312 + "quote", 313 + "syn", 314 + ] 315 + 316 + [[package]] 317 + name = "serde_json" 318 + version = "1.0.149" 319 + source = "registry+https://github.com/rust-lang/crates.io-index" 320 + checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" 321 + dependencies = [ 322 + "itoa", 323 + "memchr", 324 + "serde", 325 + "serde_core", 326 + "zmij", 327 + ] 328 + 329 + [[package]] 330 + name = "serde_path_to_error" 331 + version = "0.1.20" 332 + source = "registry+https://github.com/rust-lang/crates.io-index" 333 + checksum = "10a9ff822e371bb5403e391ecd83e182e0e77ba7f6fe0160b795797109d1b457" 334 + dependencies = [ 335 + "itoa", 336 + "serde", 337 + "serde_core", 338 + ] 339 + 340 + [[package]] 341 + name = "serde_urlencoded" 342 + version = "0.7.1" 343 + source = "registry+https://github.com/rust-lang/crates.io-index" 344 + checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" 345 + dependencies = [ 346 + "form_urlencoded", 347 + "itoa", 348 + "ryu", 349 + "serde", 350 + ] 351 + 352 + [[package]] 353 + name = "slab" 354 + version = "0.4.12" 355 + source = "registry+https://github.com/rust-lang/crates.io-index" 356 + checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" 357 + 358 + [[package]] 359 + name = "slipnote-backend" 360 + version = "0.1.0" 361 + dependencies = [ 362 + "axum", 363 + "tokio", 364 + ] 365 + 366 + [[package]] 367 + name = "smallvec" 368 + version = "1.15.1" 369 + source = "registry+https://github.com/rust-lang/crates.io-index" 370 + checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" 371 + 372 + [[package]] 373 + name = "socket2" 374 + version = "0.6.2" 375 + source = "registry+https://github.com/rust-lang/crates.io-index" 376 + checksum = "86f4aa3ad99f2088c990dfa82d367e19cb29268ed67c574d10d0a4bfe71f07e0" 377 + dependencies = [ 378 + "libc", 379 + "windows-sys 0.60.2", 380 + ] 381 + 382 + [[package]] 383 + name = "syn" 384 + version = "2.0.116" 385 + source = "registry+https://github.com/rust-lang/crates.io-index" 386 + checksum = "3df424c70518695237746f84cede799c9c58fcb37450d7b23716568cc8bc69cb" 387 + dependencies = [ 388 + "proc-macro2", 389 + "quote", 390 + "unicode-ident", 391 + ] 392 + 393 + [[package]] 394 + name = "sync_wrapper" 395 + version = "1.0.2" 396 + source = "registry+https://github.com/rust-lang/crates.io-index" 397 + checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" 398 + 399 + [[package]] 400 + name = "tokio" 401 + version = "1.49.0" 402 + source = "registry+https://github.com/rust-lang/crates.io-index" 403 + checksum = "72a2903cd7736441aac9df9d7688bd0ce48edccaadf181c3b90be801e81d3d86" 404 + dependencies = [ 405 + "libc", 406 + "mio", 407 + "pin-project-lite", 408 + "socket2", 409 + "tokio-macros", 410 + "windows-sys 0.61.2", 411 + ] 412 + 413 + [[package]] 414 + name = "tokio-macros" 415 + version = "2.6.0" 416 + source = "registry+https://github.com/rust-lang/crates.io-index" 417 + checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" 418 + dependencies = [ 419 + "proc-macro2", 420 + "quote", 421 + "syn", 422 + ] 423 + 424 + [[package]] 425 + name = "tower" 426 + version = "0.5.3" 427 + source = "registry+https://github.com/rust-lang/crates.io-index" 428 + checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4" 429 + dependencies = [ 430 + "futures-core", 431 + "futures-util", 432 + "pin-project-lite", 433 + "sync_wrapper", 434 + "tokio", 435 + "tower-layer", 436 + "tower-service", 437 + "tracing", 438 + ] 439 + 440 + [[package]] 441 + name = "tower-layer" 442 + version = "0.3.3" 443 + source = "registry+https://github.com/rust-lang/crates.io-index" 444 + checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" 445 + 446 + [[package]] 447 + name = "tower-service" 448 + version = "0.3.3" 449 + source = "registry+https://github.com/rust-lang/crates.io-index" 450 + checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" 451 + 452 + [[package]] 453 + name = "tracing" 454 + version = "0.1.44" 455 + source = "registry+https://github.com/rust-lang/crates.io-index" 456 + checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" 457 + dependencies = [ 458 + "log", 459 + "pin-project-lite", 460 + "tracing-core", 461 + ] 462 + 463 + [[package]] 464 + name = "tracing-core" 465 + version = "0.1.36" 466 + source = "registry+https://github.com/rust-lang/crates.io-index" 467 + checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" 468 + dependencies = [ 469 + "once_cell", 470 + ] 471 + 472 + [[package]] 473 + name = "unicode-ident" 474 + version = "1.0.24" 475 + source = "registry+https://github.com/rust-lang/crates.io-index" 476 + checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" 477 + 478 + [[package]] 479 + name = "wasi" 480 + version = "0.11.1+wasi-snapshot-preview1" 481 + source = "registry+https://github.com/rust-lang/crates.io-index" 482 + checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" 483 + 484 + [[package]] 485 + name = "windows-link" 486 + version = "0.2.1" 487 + source = "registry+https://github.com/rust-lang/crates.io-index" 488 + checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" 489 + 490 + [[package]] 491 + name = "windows-sys" 492 + version = "0.60.2" 493 + source = "registry+https://github.com/rust-lang/crates.io-index" 494 + checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" 495 + dependencies = [ 496 + "windows-targets", 497 + ] 498 + 499 + [[package]] 500 + name = "windows-sys" 501 + version = "0.61.2" 502 + source = "registry+https://github.com/rust-lang/crates.io-index" 503 + checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" 504 + dependencies = [ 505 + "windows-link", 506 + ] 507 + 508 + [[package]] 509 + name = "windows-targets" 510 + version = "0.53.5" 511 + source = "registry+https://github.com/rust-lang/crates.io-index" 512 + checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" 513 + dependencies = [ 514 + "windows-link", 515 + "windows_aarch64_gnullvm", 516 + "windows_aarch64_msvc", 517 + "windows_i686_gnu", 518 + "windows_i686_gnullvm", 519 + "windows_i686_msvc", 520 + "windows_x86_64_gnu", 521 + "windows_x86_64_gnullvm", 522 + "windows_x86_64_msvc", 523 + ] 524 + 525 + [[package]] 526 + name = "windows_aarch64_gnullvm" 527 + version = "0.53.1" 528 + source = "registry+https://github.com/rust-lang/crates.io-index" 529 + checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" 530 + 531 + [[package]] 532 + name = "windows_aarch64_msvc" 533 + version = "0.53.1" 534 + source = "registry+https://github.com/rust-lang/crates.io-index" 535 + checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" 536 + 537 + [[package]] 538 + name = "windows_i686_gnu" 539 + version = "0.53.1" 540 + source = "registry+https://github.com/rust-lang/crates.io-index" 541 + checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" 542 + 543 + [[package]] 544 + name = "windows_i686_gnullvm" 545 + version = "0.53.1" 546 + source = "registry+https://github.com/rust-lang/crates.io-index" 547 + checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" 548 + 549 + [[package]] 550 + name = "windows_i686_msvc" 551 + version = "0.53.1" 552 + source = "registry+https://github.com/rust-lang/crates.io-index" 553 + checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" 554 + 555 + [[package]] 556 + name = "windows_x86_64_gnu" 557 + version = "0.53.1" 558 + source = "registry+https://github.com/rust-lang/crates.io-index" 559 + checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" 560 + 561 + [[package]] 562 + name = "windows_x86_64_gnullvm" 563 + version = "0.53.1" 564 + source = "registry+https://github.com/rust-lang/crates.io-index" 565 + checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" 566 + 567 + [[package]] 568 + name = "windows_x86_64_msvc" 569 + version = "0.53.1" 570 + source = "registry+https://github.com/rust-lang/crates.io-index" 571 + checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" 572 + 573 + [[package]] 574 + name = "zmij" 575 + version = "1.0.21" 576 + source = "registry+https://github.com/rust-lang/crates.io-index" 577 + checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa"
+8
backend/Cargo.toml
··· 1 + [package] 2 + name = "slipnote-backend" 3 + version = "0.1.0" 4 + edition = "2024" 5 + 6 + [dependencies] 7 + axum = "0.8" 8 + tokio = { version = "1", features = ["macros", "rt-multi-thread"] }
+25
backend/src/main.rs
··· 1 + use axum::{Router, routing::get}; 2 + use tokio::net::TcpListener; 3 + 4 + #[tokio::main] 5 + async fn main() { 6 + let app = Router::new() 7 + .route("/", get(root)) 8 + .route("/health", get(health)); 9 + 10 + let listener = TcpListener::bind("0.0.0.0:3000") 11 + .await 12 + .expect("failed to bind to 0.0.0.0:3000"); 13 + 14 + axum::serve(listener, app) 15 + .await 16 + .expect("axum server failed"); 17 + } 18 + 19 + async fn root() -> &'static str { 20 + "slipnote backend" 21 + } 22 + 23 + async fn health() -> &'static str { 24 + "ok" 25 + }
+43
frontend/README.md
··· 1 + # Astro Starter Kit: Minimal 2 + 3 + ```sh 4 + pnpm create astro@latest -- --template minimal 5 + ``` 6 + 7 + > 🧑‍🚀 **Seasoned astronaut?** Delete this file. Have fun! 8 + 9 + ## 🚀 Project Structure 10 + 11 + Inside of your Astro project, you'll see the following folders and files: 12 + 13 + ```text 14 + / 15 + ├── public/ 16 + ├── src/ 17 + │ └── pages/ 18 + │ └── index.astro 19 + └── package.json 20 + ``` 21 + 22 + Astro looks for `.astro` or `.md` files in the `src/pages/` directory. Each page is exposed as a route based on its file name. 23 + 24 + There's nothing special about `src/components/`, but that's where we like to put any Astro/React/Vue/Svelte/Preact components. 25 + 26 + Any static assets, like images, can be placed in the `public/` directory. 27 + 28 + ## 🧞 Commands 29 + 30 + All commands are run from the root of the project, from a terminal: 31 + 32 + | Command | Action | 33 + | :------------------------ | :----------------------------------------------- | 34 + | `pnpm install` | Installs dependencies | 35 + | `pnpm dev` | Starts local dev server at `localhost:4321` | 36 + | `pnpm build` | Build your production site to `./dist/` | 37 + | `pnpm preview` | Preview your build locally, before deploying | 38 + | `pnpm astro ...` | Run CLI commands like `astro add`, `astro check` | 39 + | `pnpm astro -- --help` | Get help using the Astro CLI | 40 + 41 + ## 👀 Want to learn more? 42 + 43 + Feel free to check [our documentation](https://docs.astro.build) or jump into our [Discord server](https://astro.build/chat).
package.json frontend/package.json
pnpm-lock.yaml frontend/pnpm-lock.yaml
public/favicon.ico frontend/public/favicon.ico
public/favicon.svg frontend/public/favicon.svg
src/components/Button.stories.svelte frontend/src/components/Button.stories.svelte
src/components/Button.svelte frontend/src/components/Button.svelte
src/components/DownloadButton.stories.svelte frontend/src/components/DownloadButton.stories.svelte
src/components/DownloadButton.svelte frontend/src/components/DownloadButton.svelte
src/components/EmailSignup.stories.svelte frontend/src/components/EmailSignup.stories.svelte
src/components/EmailSignup.svelte frontend/src/components/EmailSignup.svelte
src/components/IconButton.stories.svelte frontend/src/components/IconButton.stories.svelte
src/components/IconButton.svelte frontend/src/components/IconButton.svelte
src/components/Input.stories.svelte frontend/src/components/Input.stories.svelte
src/components/Input.svelte frontend/src/components/Input.svelte
src/components/Logo.stories.svelte frontend/src/components/Logo.stories.svelte
src/components/Logo.svelte frontend/src/components/Logo.svelte
src/components/MicRecorder.stories.svelte frontend/src/components/MicRecorder.stories.svelte
src/components/MicRecorder.svelte frontend/src/components/MicRecorder.svelte
src/components/MicRecorderDemo.svelte frontend/src/components/MicRecorderDemo.svelte
src/components/MicRecorderWhisperDemo.svelte frontend/src/components/MicRecorderWhisperDemo.svelte
src/components/Prose.stories.svelte frontend/src/components/Prose.stories.svelte
src/components/Prose.svelte frontend/src/components/Prose.svelte
src/components/StorySlot.svelte frontend/src/components/StorySlot.svelte
src/components/Textarea.stories.svelte frontend/src/components/Textarea.stories.svelte
src/components/Textarea.svelte frontend/src/components/Textarea.svelte
src/pages/index.astro frontend/src/pages/index.astro
src/styles/global.css frontend/src/styles/global.css
tsconfig.json frontend/tsconfig.json