1# lit
2
3[Lit](https://lit.dev/docs/ssr/server-usage/) is kind of like Google's answer to React: it's a little more reliant on browser APIs like custom elements and the shadow DOM, a little less 'magic', like using JSX.
4
5This is an example of using Lit and rendering it straight to a string, which is something that's recently popular. It works pretty well, right off the bat: Lit provides nice ESM modules and a pretty smooth workflow!
3[QS](https://github.com/ljharb/qs/) is a pretty old module that you probably shouldn't use but it's still pretty heavily used.
4
5In the very very early days there wasn't a built-in way in JavaScript to parse querystrings. So QS was born. But then, Node.js added a `querystring` module built-in. Then, JavaScript introduced [URLSearchParams](https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams), which you should use whenever you want to parse or generate query strings.
6
7Migrated from folder: Modules/qsExample
1# luxon
2
3[Luxon](https://moment.github.io/luxon/#/?id=luxon) is, like [date-fns](https://www.val.town/v/tmcw.datefnsExample), a good option for formatting, parsing, and manipulating dates. It's more of a direct successor to [moment](https://www.val.town/v/tmcw.momentExample) and has a similar method-chain-oriented API rather than function-call oriented API like date-fns.
4
5Migrated from folder: Modules/luxonExample
1# Get YT Video Information
2
3Given a youtube video url, this val returns a small amount of information about the video: title, channel title, and the description. It uses the Youtube Data API v3, so you need to bring your own API key to get it to work (see [here](https://developers.google.com/youtube/v3/getting-started) about setting up an API key).
1# [The Big Story](https://tmcw-big_story_visualization.express.val.run/)
2
3This val, along with [@tmcw.big_story](https://www.val.town/v/tmcw.big_story), which requests from the [New York Times API](https://developer.nytimes.com/), and [@tmcw.big_stories_ranks](https://www.val.town/v/tmcw.big_stories_ranks), which contains the data, generates a visualization of top stories on the NYTimes homepage.
4
5This is here just to ask the question – what happens to cover stories over time? Do they slowly drop down the page, or just get replaced by a fully new lede? So far it doesn't have quite enough data to answer that question.
5[https://tmcw-poll.express.val.run](https://tmcw-poll.express.val.run)
6
7This val, along with a val called `poll_results` and a val called `poll_options`, lets you conduct a little poll using just Val Town! With the [express API](https://docs.val.town/api#9bff1f5f778e4fe3a143df8169101795), this exposes a web interface in which people can click an option and vote. We make sure everyone only votes once by setting a cookie in their browser.
8
9This uses [htmx](https://htmx.org/) to make the voting experience slick, [Tailwind](https://tailwindcss.com/) to style the UI, and [htm](https://github.com/developit/htm) to generate HTML for the pages.
1# SVG Button Link for Markdown
2
3Pioneered by [@easrng](/u/easrng), this val allows you to create an SVG image via the Express API, which we can embed in Val Town markdown, and wrap so it acts like a button.
4
5## Usage
1This val is simple, and just a way to test the express API.
1null
2
3Migrated from folder: External_APIs/github/githubNormalizedJsonString
1null
2
3Migrated from folder: External_APIs/DateMeDocs/DateMeNotion/logError