Work in (live) progress

I'm planning to share the progress of this website here in the upcoming blog, Youtube (for now no live streams tho) and Twitter.

The current state is just a starting point. It felt too chaotic to already record and blog about. I needed a "solid" starting point I feel comfortable with as a base to build upon.

I'm planning to also blog about this base template/starter in the next days and weeks.

It's currently build as a custom Deno React SSR server, I'm not sure if or for how long it'll stay that way, as Aleph.js might be an interesting alternative.

Articles

Changelog

  • 2021-10-22 - Add "DONE:" comments to the end of roadmap
  • 2021-10-22 - Fix CLI's pomodoro feature, to gracefully shutdown after a certain amount of time
  • 2021-10-22 - Add roadmap table to CLI
  • 2021-10-22 - Add first tests to pageviews service πŸ₯³
  • 2021-10-21 - Refactor pageviews service to be more Go like and less in one file πŸ˜…
  • 2021-10-20 - Add Twitter Cards & some Open Graph meta tags
  • 2021-10-20 - The first "article" /en/welcome
  • 2021-10-20 - Articles
  • 2021-10-08 - PageView Counter using BadgerDB
  • 2021-10-05 - Roadmap using Leasot & NanoJSX

The planned stack

What you can roughly expect

  • Deno (and most probably Golang)
  • ReactJS, Nano-JSX or maybe even some custom stuff πŸ€“ πŸ€”
  • SSR (Server-Side Rendering)
  • Micro Services (Golang & Deno)
  • Custom "content strategy"
  • Fly.io (with custom Dockerfile)
  • AWS (Lambda, Cloudfront, API Gateway, DynamoDB, SES)
  • Maybe some other CDN like Fastly or Cloudflare
  • IaC aka Infrastructure as Code (probably Pulumi once backend logic is coming)
  • and more..

No promises though πŸ€“

Subscribe to my Newsletter below and follow CanRau Code on Youtube and @CanRau on Twitter

Stay up to date with my progress

CanRau.com Roadmap

FIXME's (11 😨)
  • fix .prose WindiTypography styling

    www/ssr/nano-roadmap.tsx
  • other way than allowDangerousHtml to allow comments in micromark? Obsolete once I get MDX working

    www/ssr/lib/markdown/mod.ts
  • might be able to import types lazily as well right?

    www/ssr/lib/leasot_deno/leasot_deno.ts
  • Reconsider API before publishing article or at least the module!

    www/ssr/lib/leasot_deno/leasot_deno.ts
  • only import parsers actually in use according to associateParser, or at least provide a way of disabling parsers not in associateParser

    www/ssr/lib/leasot_deno/leasot_deno.ts
  • this is a test case, so nothing to fix πŸ₯°

    www/ssr/lib/leasot_deno/leasot_deno_test.ts
  • add trailing slash or not?

    www/ssr/server.tsx
  • fix .prose WindiTypography styling

    www/ssr/server.tsx
  • static middleware not working?, though only needed locally as fly.io handles static files automatically

    www/ssr/middlewares/static-middleware.ts
  • outsource generateRoadmap into it's own module, then open-source!

    commands/roadmap.ts
  • make <title> overridable from within a component

    modules/nanojsx/components/helmet.ts
TODO's (40 😱)
  • deno.jsonc
  • Make age a dynamic component

    www/content/en/welcome.md
  • Add link to actual generate-roadmap code once open-sourced

    www/content/en/leasot-deno.md
  • Add ids to md headlines

    www/content/en/index.md
  • or switch to unknown?

    www/components/components.tsx
  • www/components/newsletter-signup/NewsletterSignup.tsx
  • eat more fruit 🍌`,

    www/ssr/lib/leasot_deno/leasot_deno_test.ts
  • Make leasot file exclusion less error prone

    www/ssr/lib/generate-roadmap.ts
  • tokenize sub elements (bold, underline, strikethrough, italics, code)

    www/ssr/lib/mdx_tokenizer.ts
  • tokenize sub elements (bold, underline, strikethrough, italics, code)

    www/ssr/lib/mdx_tokenizer.ts
  • tokenize sub elements (bold, underline, strikethrough, italics, code)

    www/ssr/lib/mdx_tokenizer.ts
  • Add RSS feed with PrettyFeed example

    www/ssr/server.tsx
  • before open sourcing set the fly secret DB_DOMAIN to the current app info's Hostname

    www/ssr/server.tsx
  • TLS in dev mkcert, usage, vite-plugin, npm

    www/ssr/server.tsx
  • www/ssr/server.tsx
  • move Roadmap to it's own filterable page 😍

    www/ssr/server.tsx
  • cache busting, hashing, eTag?

    www/ssr/server.tsx
  • Favicons & Webmanifest

    www/ssr/server.tsx
  • www/ssr/server.tsx
  • Outsource the page creation to throw here and handle anything else in errorMiddleware?

    www/ssr/server.tsx
  • activate client scripts when esbuild or sthg?

    www/ssr/server.tsx
  • Put pageviews middleware in its own file

    www/ssr/server.tsx
  • implement something like Netlify's _redirects.yml, check out KCD's

    www/ssr/server.tsx
  • www/ssr/middlewares/spa-middleware.ts
  • wrap emojis to make them bigger?

    www/lib/render-dynamic-components.ts
  • fix Type Guard?

    www/lib/render-dynamic-components.ts
  • Maybe I add a sourcemap?

    www/lib/generate-styles.ts
  • Or disable it for development and curious devs to learn if some query parameter is provided?

    www/lib/generate-styles.ts
  • www/client/client.tsx
  • add bundle stage like in denoland/deno_docker#5 awaiting #12086

    Dockerfile
  • maybe use dotenv for domain?

    www.config.ts
  • add cli tests like in deployctl

    cli.ts
  • auto-completion using omelette

    cli.ts
  • add TLS to dev-server

    cli.ts
  • Maybe add release command which updates VERSION, git commits and deploys?

    cli.ts
  • destroy fly-builder app after successful deploy

    cli.ts
  • add release command to bump version, commit & git tag --annotate

    cli.ts
  • Show only for longer running processes and not for e.g. version

    cli.ts
  • get cmds working!!! probably better splitting deploy and dev into their own files already!

    cli.ts
  • Maybe defining the file instead of cmd which will be async imported and deno.runed?

    cli.ts
DONE's (6 😌)
  • how to markup keyboard shortcut in md?

    www/content/en/gracefully-close-sub-subprocess-using-signals-in-deno.md
  • add link to Promise.any docs

    www/content/en/gracefully-close-sub-subprocess-using-signals-in-deno.md
  • Add syntax highlighting

    www/content/en/leasot-deno.md
  • WINDICONFIG?

    www/lib/generate-styles.ts
  • figure out dev.to profile url

    www.config.ts
  • shutdown not freeing http.listen addr! 😒

    cli.ts
NOTE's (25 😱)
  • wanted to switch to unified for easier rehype integration but can't get it working so far because of type issues

    www/ssr/lib/markdown/mod.ts
  • not using import-map here to be able to resue in CLI, going to have to fix more things and probably relocate this file then, maybe crux.land?

    www/ssr/lib/generate-roadmap.ts
  • switched from markdown_wasm (failed on things like <title> in todo comments) to micromark

    www/ssr/lib/generate-roadmap.ts
  • www/ssr/lib/generate-roadmap.ts
  • list of supported languages by leasot

    www/ssr/lib/generate-roadmap.ts
  • or use a ready markdown file so no need for nano-app.tsx

    www/ssr/lib/generate-roadmap.ts
  • www/ssr/server.tsx
  • www/ssr/server.tsx
  • asterism from ctrl.blog

    www/ssr/server.tsx
  • had to set ENV via

    Dockerfile
  • ARGs in multi-stage

    Dockerfile
  • had to set ENV

    Dockerfile
  • importing PluginUtils type from WindiCss doesn't work (yet)

    windi.config.ts
  • just to make sure Windi won't unnecessarily try to extract

    windi.config.ts
  • WindiTypography needs the .prose class and optionally the .dark class on body along prose-dark

    windi.config.ts
  • --build-arg via

    commands/deploy.ts
  • import-maps are cool but can easily bring more in than expected which can lead to strange errors πŸ₯²

    commands/roadmap.ts
  • that MDXLayout is special as it’s taken from

    modules/xdm-deno/plugin/recma-jsx-rewrite.js
  • CLI inspirations

    cli.ts
  • Setting flags as boolean allows them to be used even between commands πŸ₯³

    cli.ts
  • interesting Docker API for Deno - denocker

    cli.ts
  • send SIGQUIT to the subprocess which'll get picked up by the server to .abort() it, to free up the address it was listening on

    cli.ts
  • SIGKILL not supported in Rust #12515

    cli.ts
  • send SIGKILL to the subprocess to stop the Deno --watcher

    cli.ts
  • p.close to end the Deno.run mainprocess to free up memory

    cli.ts

Stay up to date with my progress

CanRau.com
Can Rau

Designed and developed by

Can Rau

Pageviews so far:
4785
v0.7.4 | #046a905 (to be open-sourced) | Deployed as empty-wave-3298 (v111) on Fly.io
Β© Copyright Can Rau | moc.liamg@uarsnac