diff --git a/.formatter.exs b/.formatter.exs new file mode 100644 index 0000000..eaeb00f --- /dev/null +++ b/.formatter.exs @@ -0,0 +1,5 @@ +[ + import_deps: [], + plugins: [Phoenix.Liveview.HTMLFormatter], + inputs: ["{mix,.formatter}.exs", "{config,lib,test}/**/*.{ex,exs}"] +] diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..daec4d6 --- /dev/null +++ b/.gitignore @@ -0,0 +1,29 @@ +# The directory Mix will write compiled artifacts to. +/_build/ + +# The generated website. +/_site/ + +# If you run "mix test --cover", coverage assets end up here. +/cover/ + +# The directory Mix downloads your dependencies sources to. +/deps/ + +# Where third-party dependencies like ExDoc output generated docs. +/doc/ + +# Ignore .fetch files in case you like to edit your project deps locally. +/.fetch + +# If the VM crashes, it generates a dump, let's ignore it too. +erl_crash.dump + +# Also ignore archive artifacts (built via "mix archive.build"). +*.ez + +# Ignore package tarball (built via "mix hex.build"). +tableau_new-*.tar + +# Temporary files, for example, from tests. +/tmp/ diff --git a/README.md b/README.md index f9664f2..7bc026c 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,5 @@ -# criminallycute.fi +# Criminally Cute Website -sources for criminallycute.fi \ No newline at end of file +Sources for [criminallycute.fi][] + +[criminallycute.fi]:https://criminallycute.fi diff --git a/_data/projects.yml b/_data/projects.yml new file mode 100644 index 0000000..5c579aa --- /dev/null +++ b/_data/projects.yml @@ -0,0 +1,5 @@ +- active: + - name: test + link: https://some.site + description: | + Fleet bilge rat hang the jib Sail ho dead men tell no tales gibbet yardarm galleon. Bowsprit long boat cackle fruit draft chandler scurvy crimp black spot lugger Sea Legs. diff --git a/_pages/uses.dm b/_pages/uses.dm new file mode 100644 index 0000000..6d111e3 --- /dev/null +++ b/_pages/uses.dm @@ -0,0 +1,4 @@ +--- +layout: Website.PostLayout +title: Uses +--- diff --git a/_posts/test-post.md b/_posts/test-post.md new file mode 100644 index 0000000..2865751 --- /dev/null +++ b/_posts/test-post.md @@ -0,0 +1,9 @@ +--- +layout: Website.PostLayout +title: Test Post +date: 2024-11-08 +categories: post +permalink: test-post +--- + +TEST POST PLEASE IGNORE diff --git a/config/config.exs b/config/config.exs new file mode 100644 index 0000000..bb3c1b1 --- /dev/null +++ b/config/config.exs @@ -0,0 +1,37 @@ +import Config + +config :tableau, :reloader, + patterns: [ + ~r"^lib/.*.ex", + ~r"^(_posts|_pages)/.*.md", + ~r"assets/.*.(css|js)", + ] + +config :web_dev_utils, :reload_log, true + +config :tableau, :config, + url: "http://localhost:4999", + timezone: "Europe/Helsinki", + include_dir: "static", + markdown: [ + mdex: [ + extension: [table: true, header_ids: "", tasklist: true, strikethrough: true], + render: [unsafe_: true], + features: [syntax_highlight_theme: "kanagawa"] + ] + ] + +config :tableau, Tableau.PageExtension, enabled: true +config :tableau, Tableau.PostExtension, enabled: true, future: true +config :tableau, Tableau.DataExtension, enabled: true +config :tableau, Tableau.SitemapExtension, enabled: true + +config :tableau, Tableau.RSSExtension, + enabled: true, + title: "site", + description: "My beautiful website" + +config :elixir, :time_zone_database, Tz.TimeZoneDatabase + +import_config "#{Mix.env()}.exs" + diff --git a/config/dev.exs b/config/dev.exs new file mode 100644 index 0000000..becde76 --- /dev/null +++ b/config/dev.exs @@ -0,0 +1 @@ +import Config diff --git a/config/prod.exs b/config/prod.exs new file mode 100644 index 0000000..69b4869 --- /dev/null +++ b/config/prod.exs @@ -0,0 +1,4 @@ +import Config + +config :tableau, :config, url: "https://criminallycute.fi" +config :tableau, Tableau.PostExtension, future: false diff --git a/config/test.exs b/config/test.exs new file mode 100644 index 0000000..becde76 --- /dev/null +++ b/config/test.exs @@ -0,0 +1 @@ +import Config diff --git a/formatter.exs b/formatter.exs new file mode 100644 index 0000000..eaeb00f --- /dev/null +++ b/formatter.exs @@ -0,0 +1,5 @@ +[ + import_deps: [], + plugins: [Phoenix.Liveview.HTMLFormatter], + inputs: ["{mix,.formatter}.exs", "{config,lib,test}/**/*.{ex,exs}"] +] diff --git a/lib/layouts/page_layout.ex b/lib/layouts/page_layout.ex new file mode 100644 index 0000000..dfb90c5 --- /dev/null +++ b/lib/layouts/page_layout.ex @@ -0,0 +1,12 @@ +defmodule Website.PageLayout do + use Tableau.Layout, layout: Website.RootLayout + use Phoenix.Component + + def template(assigns) do + ~H""" +
+ <%= {:safe, render(@inner_content)} %> +
+ """ + end +end diff --git a/lib/layouts/post_layout.ex b/lib/layouts/post_layout.ex new file mode 100644 index 0000000..2dbb02b --- /dev/null +++ b/lib/layouts/post_layout.ex @@ -0,0 +1,10 @@ +defmodule Website.PostLayout do + use Tableau.Layout, layout: Website.RootLayout + use Phoenix.Component + + def template(assigns) do + ~H""" + <%= {:safe, render(@inner_content)} %> + """ + end +end diff --git a/lib/layouts/root_layout.ex b/lib/layouts/root_layout.ex new file mode 100644 index 0000000..9416b4b --- /dev/null +++ b/lib/layouts/root_layout.ex @@ -0,0 +1,60 @@ +defmodule Website.RootLayout do + use Tableau.Layout + use Phoenix.Component + + def template(assigns) do + ~H""" + + + + + + + <%= [@page[:title], "Criminally Cute"] + |> Enum.filter(& &1) + |> Enum.intersperse("|") + |> Enum.join(" ") %> + + + + + + +
+ +
+

<%= @page[:title] %>

+
+
+ +
+ <%= render(@inner_content) %> +
+ + + + + + <%= if Mix.env() == :dev do %> + <%= Phoenix.HTML.raw(Tableau.live_reload(assigns)) %> + <% end %> + """ + |> Phoenix.HTML.Safe.to_iodata() + end +end diff --git a/lib/pages/about_page.ex b/lib/pages/about_page.ex new file mode 100644 index 0000000..fcc8b2b --- /dev/null +++ b/lib/pages/about_page.ex @@ -0,0 +1,16 @@ +defmodule Website.Aboutpage do + use Tableau.Page, + layout: Website.PageLayout, + permalink: "/about", + title: "About" + + use Phoenix.Component + + def template(assigns) do + ~H""" +

Lateen sail pillage reef splice the main brace loot capstan carouser boatswain Corsair run a rig. Capstan tackle careen booty brig stern parrel topsail rope's end run a shot across the bow. Boatswain gun plunder jack no prey, no pay sutler carouser driver bring a spring upon her cable quarter.

+

Sink me bring a spring upon her cable scourge of the seven seas piracy shrouds reef sails long boat killick Shiver me timbers belay. Schooner keelhaul parrel gangway grapple nipper chantey lad cackle fruit rutters. Come about bowsprit jury mast main sheet line sloop skysail yard Sea Legs weigh anchor.

+

Bilge hornswaggle draught coffer lass boom boatswain hempen halter gun blow the man down. Heave to pink Privateer bounty rum parley mutiny scurvy wherry trysail. Trysail Sea Legs mizzenmast long boat topmast furl aft fathom landlubber or just lubber jolly boat.

+ """ + end +end diff --git a/lib/pages/blog_page.ex b/lib/pages/blog_page.ex new file mode 100644 index 0000000..4c81b7b --- /dev/null +++ b/lib/pages/blog_page.ex @@ -0,0 +1,24 @@ +defmodule Website.BlogPage do + use Tableau.Page, + layout: Website.PageLayout, + permalink: "/blog", + title: "Blog" + + use Phoenix.Component + + def template(assigns) do + ~H""" +
+
+ Blog description goes here + post.permalink}> +

+ + <%= post.title %> +

+
+
+
+ """ + end +end diff --git a/lib/pages/home_page.ex b/lib/pages/home_page.ex new file mode 100644 index 0000000..f8867a0 --- /dev/null +++ b/lib/pages/home_page.ex @@ -0,0 +1,15 @@ +defmodule Website.HomePage do + use Tableau.Page, + layout: Website.PageLayout, + permalink: "/", + title: "Criminally Cute" + + use Phoenix.Component + + def template(assigns) do + ~H""" +

Swing the lead bucko bilge water jib smartly reef crack Jennys tea cup gibbet pillage boatswain.

+

Ballast maroon fathom Sink me hempen halter Admiral of the Black scuppers jury mast Jolly Roger rutters. Gibbet Plate Fleet snow sloop Barbary Coast tender barque loot loaded to the gunwalls Brethren of the Coast. Sheet loot clap of thunder Nelsons folly Chain Shot case shot warp dance the hempen jig bucko quarter.

+ """ + end +end diff --git a/lib/pages/projects_page.ex b/lib/pages/projects_page.ex new file mode 100644 index 0000000..7c04b61 --- /dev/null +++ b/lib/pages/projects_page.ex @@ -0,0 +1,34 @@ +defmodule Website.ProjectsPage do + use Tableau.Page, + layout: Website.PageLayout, + permalink: "/projects", + title: "Projects" + + use Phoenix.Component + + def template(assigns) do + ~H""" +
+
+ <%= for type <- @data["projects"] do %> +
+

<%= status %>

+
+
+ <%= if project["link"] do %> + <%= project["name"] %> + <% else %> + <%= project["name"] %> + <% end %> +

+ <%= project["description"] %> +

+
+
+
+ <% end %> +
+
+ """ + end +end diff --git a/mix.exs b/mix.exs new file mode 100644 index 0000000..836415e --- /dev/null +++ b/mix.exs @@ -0,0 +1,36 @@ +defmodule Website.MixProject do + use Mix.Project + + def project do + [ + app: :criminallycute_web, + version: "0.1.0", + elixir: "~> 1.15", + start_permanent: Mix.env() == :prod, + compilers: Mix.compilers(), + aliases: aliases(), + deps: deps() + ] + end + + # Run "mix help compile.app" to learn about applications. + def application do + [ + extra_applications: [:logger] + ] + end + + def aliases() do + [ + build: ["tableau.build"] + ] + end + + # Run "mix help deps" to learn about dependencies. + defp deps do + [ + {:tableau, "~> 0.17"}, + {:phoenix_live_view, "~> 0.20"}, + ] + end +end diff --git a/mix.lock b/mix.lock new file mode 100644 index 0000000..e946107 --- /dev/null +++ b/mix.lock @@ -0,0 +1,33 @@ +%{ + "bandit": {:hex, :bandit, "1.5.7", "6856b1e1df4f2b0cb3df1377eab7891bec2da6a7fd69dc78594ad3e152363a50", [:mix], [{:hpax, "~> 1.0.0", [hex: :hpax, repo: "hexpm", optional: false]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}, {:thousand_island, "~> 1.0", [hex: :thousand_island, repo: "hexpm", optional: false]}, {:websock, "~> 0.5", [hex: :websock, repo: "hexpm", optional: false]}], "hexpm", "f2dd92ae87d2cbea2fa9aa1652db157b6cba6c405cb44d4f6dd87abba41371cd"}, + "castore": {:hex, :castore, "1.0.9", "5cc77474afadf02c7c017823f460a17daa7908e991b0cc917febc90e466a375c", [:mix], [], "hexpm", "5ea956504f1ba6f2b4eb707061d8e17870de2bee95fb59d512872c2ef06925e7"}, + "date_time_parser": {:hex, :date_time_parser, "1.2.0", "3d5a816b91967f51e0f94dcb16a34b2cb780f22cd48931779e81d72f7d3eadb1", [:mix], [{:kday, "~> 1.0", [hex: :kday, repo: "hexpm", optional: false]}], "hexpm", "0cf09ada9f42c0b3bfba02dc0ea2e4b4d2f543d9d2bf99b831a29e6b4a4160e5"}, + "file_system": {:hex, :file_system, "1.0.1", "79e8ceaddb0416f8b8cd02a0127bdbababe7bf4a23d2a395b983c1f8b3f73edd", [:mix], [], "hexpm", "4414d1f38863ddf9120720cd976fce5bdde8e91d8283353f0e31850fa89feb9e"}, + "floki": {:hex, :floki, "0.36.3", "1102f93b16a55bc5383b85ae3ec470f82dee056eaeff9195e8afdf0ef2a43c30", [:mix], [], "hexpm", "fe0158bff509e407735f6d40b3ee0d7deb47f3f3ee7c6c182ad28599f9f6b27a"}, + "hpax": {:hex, :hpax, "1.0.0", "28dcf54509fe2152a3d040e4e3df5b265dcb6cb532029ecbacf4ce52caea3fd2", [:mix], [], "hexpm", "7f1314731d711e2ca5fdc7fd361296593fc2542570b3105595bb0bc6d0fad601"}, + "html_entities": {:hex, :html_entities, "0.5.2", "9e47e70598da7de2a9ff6af8758399251db6dbb7eebe2b013f2bbd2515895c3c", [:mix], [], "hexpm", "c53ba390403485615623b9531e97696f076ed415e8d8058b1dbaa28181f4fdcc"}, + "kday": {:hex, :kday, "1.1.0", "64efac85279a12283eaaf3ad6f13001ca2dff943eda8c53288179775a8c057a0", [:mix], [{:ex_doc, "~> 0.21", [hex: :ex_doc, repo: "hexpm", optional: true]}], "hexpm", "69703055d63b8d5b260479266c78b0b3e66f7aecdd2022906cd9bf09892a266d"}, + "libgraph": {:hex, :libgraph, "0.16.0", "3936f3eca6ef826e08880230f806bfea13193e49bf153f93edcf0239d4fd1d07", [:mix], [], "hexpm", "41ca92240e8a4138c30a7e06466acc709b0cbb795c643e9e17174a178982d6bf"}, + "mdex": {:hex, :mdex, "0.2.0", "af93e03bc964f2628c3940d22ba03435b119e070bd423fd62d31772d428a7e6c", [:mix], [{:rustler, "~> 0.32", [hex: :rustler, repo: "hexpm", optional: true]}, {:rustler_precompiled, "~> 0.7", [hex: :rustler_precompiled, repo: "hexpm", optional: false]}], "hexpm", "d8d21d3d6ecb0b2a10f88b539f3a61df974f9570226bf6bd24404c9e361c8089"}, + "mime": {:hex, :mime, "2.0.6", "8f18486773d9b15f95f4f4f1e39b710045fa1de891fada4516559967276e4dc2", [:mix], [], "hexpm", "c9945363a6b26d747389aac3643f8e0e09d30499a138ad64fe8fd1d13d9b153e"}, + "phoenix": {:hex, :phoenix, "1.7.14", "a7d0b3f1bc95987044ddada111e77bd7f75646a08518942c72a8440278ae7825", [:mix], [{:castore, ">= 0.0.0", [hex: :castore, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix_pubsub, "~> 2.1", [hex: :phoenix_pubsub, repo: "hexpm", optional: false]}, {:phoenix_template, "~> 1.0", [hex: :phoenix_template, repo: "hexpm", optional: false]}, {:phoenix_view, "~> 2.0", [hex: :phoenix_view, repo: "hexpm", optional: true]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 2.7", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:plug_crypto, "~> 1.2 or ~> 2.0", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}, {:websock_adapter, "~> 0.5.3", [hex: :websock_adapter, repo: "hexpm", optional: false]}], "hexpm", "c7859bc56cc5dfef19ecfc240775dae358cbaa530231118a9e014df392ace61a"}, + "phoenix_html": {:hex, :phoenix_html, "4.1.1", "4c064fd3873d12ebb1388425a8f2a19348cef56e7289e1998e2d2fa758aa982e", [:mix], [], "hexpm", "f2f2df5a72bc9a2f510b21497fd7d2b86d932ec0598f0210fed4114adc546c6f"}, + "phoenix_live_view": {:hex, :phoenix_live_view, "0.20.17", "f396bbdaf4ba227b82251eb75ac0afa6b3da5e509bc0d030206374237dfc9450", [:mix], [{:floki, "~> 0.36", [hex: :floki, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix, "~> 1.6.15 or ~> 1.7.0", [hex: :phoenix, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 3.3 or ~> 4.0", [hex: :phoenix_html, repo: "hexpm", optional: false]}, {:phoenix_template, "~> 1.0", [hex: :phoenix_template, repo: "hexpm", optional: false]}, {:phoenix_view, "~> 2.0", [hex: :phoenix_view, repo: "hexpm", optional: true]}, {:plug, "~> 1.15", [hex: :plug, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.2 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "a61d741ffb78c85fdbca0de084da6a48f8ceb5261a79165b5a0b59e5f65ce98b"}, + "phoenix_pubsub": {:hex, :phoenix_pubsub, "2.1.3", "3168d78ba41835aecad272d5e8cd51aa87a7ac9eb836eabc42f6e57538e3731d", [:mix], [], "hexpm", "bba06bc1dcfd8cb086759f0edc94a8ba2bc8896d5331a1e2c2902bf8e36ee502"}, + "phoenix_template": {:hex, :phoenix_template, "1.0.4", "e2092c132f3b5e5b2d49c96695342eb36d0ed514c5b252a77048d5969330d639", [:mix], [{:phoenix_html, "~> 2.14.2 or ~> 3.0 or ~> 4.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}], "hexpm", "2c0c81f0e5c6753faf5cca2f229c9709919aba34fab866d3bc05060c9c444206"}, + "plug": {:hex, :plug, "1.16.1", "40c74619c12f82736d2214557dedec2e9762029b2438d6d175c5074c933edc9d", [:mix], [{:mime, "~> 1.0 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_crypto, "~> 1.1.1 or ~> 1.2 or ~> 2.0", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.3 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "a13ff6b9006b03d7e33874945b2755253841b238c34071ed85b0e86057f8cddc"}, + "plug_crypto": {:hex, :plug_crypto, "2.1.0", "f44309c2b06d249c27c8d3f65cfe08158ade08418cf540fd4f72d4d6863abb7b", [:mix], [], "hexpm", "131216a4b030b8f8ce0f26038bc4421ae60e4bb95c5cf5395e1421437824c4fa"}, + "plug_static_index_html": {:hex, :plug_static_index_html, "1.0.0", "840123d4d3975585133485ea86af73cb2600afd7f2a976f9f5fd8b3808e636a0", [:mix], [{:plug, "~> 1.0", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "79fd4fcf34d110605c26560cbae8f23c603ec4158c08298bd4360fdea90bb5cf"}, + "rustler_precompiled": {:hex, :rustler_precompiled, "0.8.2", "5f25cbe220a8fac3e7ad62e6f950fcdca5a5a5f8501835d2823e8c74bf4268d5", [:mix], [{:castore, "~> 0.1 or ~> 1.0", [hex: :castore, repo: "hexpm", optional: false]}, {:rustler, "~> 0.23", [hex: :rustler, repo: "hexpm", optional: true]}], "hexpm", "63d1bd5f8e23096d1ff851839923162096364bac8656a4a3c00d1fff8e83ee0a"}, + "schematic": {:hex, :schematic, "0.4.0", "2b3c4865c919bb9392251aba4198982f7be8785bc37c732ccfe672a3e19e4591", [:mix], [{:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "692747901601f4b511171fbd3a4032bf13d84dc81d52e827f041373ce2035588"}, + "tableau": {:hex, :tableau, "0.18.0", "5fdbbbe95c9ca9c5f46002cff795fe5de07a0ce69c7dc8f1a00734742194e919", [:mix], [{:bandit, "~> 1.0", [hex: :bandit, repo: "hexpm", optional: false]}, {:date_time_parser, "~> 1.2", [hex: :date_time_parser, repo: "hexpm", optional: false]}, {:floki, "~> 0.34", [hex: :floki, repo: "hexpm", optional: false]}, {:html_entities, "~> 0.5.2", [hex: :html_entities, repo: "hexpm", optional: false]}, {:libgraph, "~> 0.16.0", [hex: :libgraph, repo: "hexpm", optional: false]}, {:mdex, "~> 0.2.0", [hex: :mdex, repo: "hexpm", optional: false]}, {:plug_static_index_html, "~> 1.0", [hex: :plug_static_index_html, repo: "hexpm", optional: false]}, {:schematic, "~> 0.4", [hex: :schematic, repo: "hexpm", optional: false]}, {:tz, "~> 0.28.1", [hex: :tz, repo: "hexpm", optional: false]}, {:web_dev_utils, "~> 0.2", [hex: :web_dev_utils, repo: "hexpm", optional: false]}, {:websock_adapter, "~> 0.5", [hex: :websock_adapter, repo: "hexpm", optional: false]}, {:xml_builder, "~> 2.1", [hex: :xml_builder, repo: "hexpm", optional: false]}, {:yaml_elixir, "~> 2.9", [hex: :yaml_elixir, repo: "hexpm", optional: false]}], "hexpm", "a210c84f73ff6571865b554a41f1f9c3a9ada9682fd2c911e82ad35900b71c0f"}, + "telemetry": {:hex, :telemetry, "1.3.0", "fedebbae410d715cf8e7062c96a1ef32ec22e764197f70cda73d82778d61e7a2", [:rebar3], [], "hexpm", "7015fc8919dbe63764f4b4b87a95b7c0996bd539e0d499be6ec9d7f3875b79e6"}, + "thousand_island": {:hex, :thousand_island, "1.3.5", "6022b6338f1635b3d32406ff98d68b843ba73b3aa95cfc27154223244f3a6ca5", [:mix], [{:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "2be6954916fdfe4756af3239fb6b6d75d0b8063b5df03ba76fd8a4c87849e180"}, + "tz": {:hex, :tz, "0.28.1", "717f5ffddfd1e475e2a233e221dc0b4b76c35c4b3650b060c8e3ba29dd6632e9", [:mix], [{:castore, "~> 0.1 or ~> 1.0", [hex: :castore, repo: "hexpm", optional: true]}, {:mint, "~> 1.6", [hex: :mint, repo: "hexpm", optional: true]}], "hexpm", "bfdca1aa1902643c6c43b77c1fb0cb3d744fd2f09a8a98405468afdee0848c8a"}, + "web_dev_utils": {:hex, :web_dev_utils, "0.2.0", "3bcd109d1ac18445d06db095d5cfdca5de7586022641c0b09b0702788b8e4ea8", [:mix], [{:file_system, "~> 1.0", [hex: :file_system, repo: "hexpm", optional: false]}], "hexpm", "595e9bd35440ea2add0156ae9e68e578d986805d801dacf22b13067ca48980ed"}, + "websock": {:hex, :websock, "0.5.3", "2f69a6ebe810328555b6fe5c831a851f485e303a7c8ce6c5f675abeb20ebdadc", [:mix], [], "hexpm", "6105453d7fac22c712ad66fab1d45abdf049868f253cf719b625151460b8b453"}, + "websock_adapter": {:hex, :websock_adapter, "0.5.7", "65fa74042530064ef0570b75b43f5c49bb8b235d6515671b3d250022cb8a1f9e", [:mix], [{:bandit, ">= 0.6.0", [hex: :bandit, repo: "hexpm", optional: true]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 2.6", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:websock, "~> 0.5", [hex: :websock, repo: "hexpm", optional: false]}], "hexpm", "d0f478ee64deddfec64b800673fd6e0c8888b079d9f3444dd96d2a98383bdbd1"}, + "xml_builder": {:hex, :xml_builder, "2.3.0", "69d214c6ad41ae1300b36acff4367551cdfd9dc1b860affc16e103c6b1589053", [:mix], [], "hexpm", "972ec33346a225cd5acd14ab23d4e79042bd37cb904e07e24cd06992dde1a0ed"}, + "yamerl": {:hex, :yamerl, "0.10.0", "4ff81fee2f1f6a46f1700c0d880b24d193ddb74bd14ef42cb0bcf46e81ef2f8e", [:rebar3], [], "hexpm", "346adb2963f1051dc837a2364e4acf6eb7d80097c0f53cbdc3046ec8ec4b4e6e"}, + "yaml_elixir": {:hex, :yaml_elixir, "2.11.0", "9e9ccd134e861c66b84825a3542a1c22ba33f338d82c07282f4f1f52d847bd50", [:mix], [{:yamerl, "~> 0.10", [hex: :yamerl, repo: "hexpm", optional: false]}], "hexpm", "53cc28357ee7eb952344995787f4bb8cc3cecbf189652236e9b163e8ce1bc242"}, +} diff --git a/static/css/site.css b/static/css/site.css new file mode 100644 index 0000000..d7940c5 --- /dev/null +++ b/static/css/site.css @@ -0,0 +1,4 @@ +:root { + color-scheme: dark light; +} + diff --git a/static/favicon.png b/static/favicon.png new file mode 100644 index 0000000..7598b0a Binary files /dev/null and b/static/favicon.png differ diff --git a/test-post.md b/test-post.md new file mode 100644 index 0000000..eeaf438 --- /dev/null +++ b/test-post.md @@ -0,0 +1,36 @@ +--- +layout: Website.PostLayout +title: Test Post +date: 2024-11-8 +categories: post +permalink: "/test-post" +--- + +I’d love to drop anchor in your lagoon. Brwaack! Polly want a cracker? … Oh, wait. That’s for Talk Like a PARROT Day. That’s quite a cutlass ye got thar, what ye need is a good scabbard! Take what you can, give nothing back And that was done without a single drop of rum… The existence of the sea means the existence of pirates. + +Let’s get together and haul some keel. Aye, I guarantee ye, I’ve had a twenty percent decrease in me “lice ratio!” Me I’m Dishonest. And A Dishonest Man You Can Always Trust To Be Dishonest. Honestly Its The Honest Ones You Want To Watch Out For Because You Never Know When They Are Going To Do Something Completely Stupid! The rougher the seas, the smoother we sail. Ahoy! Give me freedom or give me the rope. For I shall not take the shackles that subjugate the poor to uphold the rich. Drink up me hearties yoho …a pirates life for me The average man will bristle if you say his father was dishonest, but he will brag a little if he discovers that his great- grandfather was a pirate. + +``` bash +#!/bin/sh +if [[ ! $1 ]]; then + user="siinamonster" +else + user="$1" +fi + +api_url="https://api.listenbrainz.org/1/user/$user/playing-now" + +data=$(curl -s $api_url | jq -r '.payload.listens[0].track_metadata') +artist=$(echo "$data" | jq '.artist_name' | tr -d '"') +track=$(echo "$data" | jq '.track_name' | tr -d '"') + +if [[ "$artist" != "null" ]]; then + echo "Currently playing: $artist" - "$track" +else + echo "Not listening to anything right now." +fi +``` + +Come on up and see me urchins. Prepare to be boarded. That’s the finest pirate booty I’ve ever laid eyes on. What are YOU doing here? Life’s pretty good, and why wouldn’t it be? I’m a pirate, after all. Shiver me timbers. + +Pardon me, but would ya mind if I fired me cannon through your porthole? Take what you can, give nothing back There comes a time in most men’s lives where they feel the need to raise the Black Flag. you know, thats the 2nd time I’v watched that man sail away with my ship. “I’ve got a jar of dirt! I’ve got a jar of dirt, and guess what’s inside it?” “Why is the rum always gone?” Land was created to provide a place for boats to visit.