diff --git a/theme/home-page.liquid b/theme/home-page.liquid
new file mode 100644
index 0000000..0cf61d0
--- /dev/null
+++ b/theme/home-page.liquid
@@ -0,0 +1,131 @@
+
+
+ {{ page.text }}
+ {% if logged_on -%}
+ Edit This Page
+ {% endif %}
+
+
+
diff --git a/theme/layout-partial.liquid b/theme/layout-partial.liquid
new file mode 100644
index 0000000..5451130
--- /dev/null
+++ b/theme/layout-partial.liquid
@@ -0,0 +1,10 @@
+
+
+
+
+ {{ page_title }} » Bit Badger Solutions
+
+
+ {{ content }}
+
+
diff --git a/theme/layout.liquid b/theme/layout.liquid
new file mode 100644
index 0000000..08c9ae5
--- /dev/null
+++ b/theme/layout.liquid
@@ -0,0 +1,49 @@
+
+
+
+
+
+ {{ page_title }} » Bit Badger Solutions
+
+ {% page_head -%}
+
+
+
+ Loading…
+ {{ content }}
+
+ {% page_foot %}
+
+
\ No newline at end of file
diff --git a/theme/project-page.liquid b/theme/project-page.liquid
new file mode 100644
index 0000000..2a448ca
--- /dev/null
+++ b/theme/project-page.liquid
@@ -0,0 +1,33 @@
+
+ {%- assign parts = page.title | split: ' » ' -%}
+ {%- assign parts_count = parts | size -%}
+
+ {% if parts_count == 1 -%}
+ {{ page.title }}
+
+
+ View on GitHub
+
+ {% if logged_on %} • Edit Page{% endif %}
+
+ {%- else -%}
+
+ {{ parts[0] }}
+ {% if logged_on %} • Edit{% endif %}
+
+
+ {{ parts[1] }}
+ {%- endif %}
+
+ {{ page.text }}
+ {% if parts_count > 1 -%}
+
+ {%- endif %}
+
diff --git a/theme/single-page.liquid b/theme/single-page.liquid
new file mode 100644
index 0000000..e0f97b5
--- /dev/null
+++ b/theme/single-page.liquid
@@ -0,0 +1,8 @@
+
+ {{ page.title }}
+ {{ page.text }}
+
« Home
+ {% if logged_on -%}
+ Edit This Page
+ {% endif %}
+
diff --git a/theme/solution-page.liquid b/theme/solution-page.liquid
new file mode 100644
index 0000000..23f61ab
--- /dev/null
+++ b/theme/solution-page.liquid
@@ -0,0 +1,112 @@
+
+
+
+
+ {{ page.text }}
+ {%- assign curr_tech = page.metadata | where: "name", "tech" -%}
+ {%- assign past_tech = page.metadata | where: "name", "past_tech" -%}
+ {%- assign curr_count = curr_tech | size -%}
+ {%- assign past_count = past_tech | size -%}
+ {% if curr_count > 0 or past_count > 0 -%}
+ {% comment %} TODO / WIP
+ {% capture all_links -%}
+ ASP.NET MVC|https://dotnet.microsoft.com/apps/aspnet/mvc,
+ Azure|https://azure.microsoft.com/,
+ BlogEngine.NET|http://www.dotnetblogengine.net/,
+ Database Abstraction|https://github.com/danieljsummers/DatabaseAbstraction,
+ Digital Ocean|https://www.digitalocean.com/,
+ Giraffe|https://github.com/giraffe-fsharp/Giraffe,
+ GitHub|https://github.com/,
+ GitHub Pages|https://pages.github.com/,
+ Hexo|https://hexo.io/,
+ Hugo|https://gohugo.io/,
+ Jekyll|https://jekyllrb.com/,
+ MongoDB|https://www.mongodb.com/,
+ MySQL|https://www.mysql.com/,
+ myWebLog|https://github.com/bit-badger/myWebLog,
+ nginx|http://nginx.org/,
+ Orchard|https://orchardproject.net/,
+ PHP|https://www.php.net/,
+ PostgreSQL|https://www.postgresql.org/,
+ Rackspace Cloud|https://www.rackspace.com/cloud,
+ RavenDB|https://ravendb.net/,
+ RethinkDB|https://rethinkdb.com/,
+ SQL Server|https://www.microsoft.com/en-us/sql-server/,
+ Vue.js|https://vuejs.org/,
+ WordPress|https://wordpress.org
+ {%- endcapture %}
+ {% endcomment %}
+
+
+ The Technology Stack▼
+
+
+ {% if curr_count > 0 -%}
+ {% if past_count > 0 -%}
+
Current:
+ {%- endif %}
+
+ {% for curr in curr_tech -%}
+ {%- assign tech = curr.value | split: "|" -%}
+ -
+ {% comment %} {{ tech[0] }} {% endcomment %}
+ {{ tech[0] }} for {{ tech[1] }}
+
+ {%- endfor %}
+
+ {%- endif %}
+ {% if past_count > 0 -%}
+ {% if curr_count > 0 %}
+
Previously:
+ {% endif %}
+
+ {% for past in past_tech -%}
+ {%- assign tech = past.value | split: "|" -%}
+ -
+ {% comment %} {{ tech[0] }} {% endcomment %}
+ {{ tech[0] }} for {{ tech[1] }}
+
+ {%- endfor %}
+
+ {% endif %}
+
+
+ {%- endif %}
+
« Back to All Solutions
+ {% if logged_on -%}
+ Edit This Page
+ {% endif %}
+
+
+
diff --git a/theme/version.txt b/theme/version.txt
new file mode 100644
index 0000000..e69de29
diff --git a/theme/wwwroot/bit-badger-auth.png b/theme/wwwroot/bit-badger-auth.png
new file mode 100644
index 0000000..42c407c
Binary files /dev/null and b/theme/wwwroot/bit-badger-auth.png differ
diff --git a/theme/wwwroot/bitbadger.png b/theme/wwwroot/bitbadger.png
new file mode 100644
index 0000000..62f8d76
Binary files /dev/null and b/theme/wwwroot/bitbadger.png differ
diff --git a/theme/wwwroot/facebook.png b/theme/wwwroot/facebook.png
new file mode 100644
index 0000000..3cdde01
Binary files /dev/null and b/theme/wwwroot/facebook.png differ
diff --git a/theme/wwwroot/favicon.ico b/theme/wwwroot/favicon.ico
new file mode 100644
index 0000000..22ca446
Binary files /dev/null and b/theme/wwwroot/favicon.ico differ
diff --git a/theme/wwwroot/screenshots/bay-vista.png b/theme/wwwroot/screenshots/bay-vista.png
new file mode 100644
index 0000000..0af52cf
Binary files /dev/null and b/theme/wwwroot/screenshots/bay-vista.png differ
diff --git a/theme/wwwroot/screenshots/cassy-fiano.png b/theme/wwwroot/screenshots/cassy-fiano.png
new file mode 100644
index 0000000..5c96982
Binary files /dev/null and b/theme/wwwroot/screenshots/cassy-fiano.png differ
diff --git a/theme/wwwroot/screenshots/dr-melissa-clouthier.png b/theme/wwwroot/screenshots/dr-melissa-clouthier.png
new file mode 100644
index 0000000..1784647
Binary files /dev/null and b/theme/wwwroot/screenshots/dr-melissa-clouthier.png differ
diff --git a/theme/wwwroot/screenshots/emerald-mountain-christian-school.png b/theme/wwwroot/screenshots/emerald-mountain-christian-school.png
new file mode 100644
index 0000000..9275710
Binary files /dev/null and b/theme/wwwroot/screenshots/emerald-mountain-christian-school.png differ
diff --git a/theme/wwwroot/screenshots/futility-closet.png b/theme/wwwroot/screenshots/futility-closet.png
new file mode 100644
index 0000000..e9189fa
Binary files /dev/null and b/theme/wwwroot/screenshots/futility-closet.png differ
diff --git a/theme/wwwroot/screenshots/hard-corps-wife.png b/theme/wwwroot/screenshots/hard-corps-wife.png
new file mode 100644
index 0000000..31e9d11
Binary files /dev/null and b/theme/wwwroot/screenshots/hard-corps-wife.png differ
diff --git a/theme/wwwroot/screenshots/liberty-pundits.png b/theme/wwwroot/screenshots/liberty-pundits.png
new file mode 100644
index 0000000..1382c80
Binary files /dev/null and b/theme/wwwroot/screenshots/liberty-pundits.png differ
diff --git a/theme/wwwroot/screenshots/mindy-mackenzie.png b/theme/wwwroot/screenshots/mindy-mackenzie.png
new file mode 100644
index 0000000..39fef9c
Binary files /dev/null and b/theme/wwwroot/screenshots/mindy-mackenzie.png differ
diff --git a/theme/wwwroot/screenshots/my-prayer-journal.png b/theme/wwwroot/screenshots/my-prayer-journal.png
new file mode 100644
index 0000000..6192350
Binary files /dev/null and b/theme/wwwroot/screenshots/my-prayer-journal.png differ
diff --git a/theme/wwwroot/screenshots/nsx.png b/theme/wwwroot/screenshots/nsx.png
new file mode 100644
index 0000000..4083b97
Binary files /dev/null and b/theme/wwwroot/screenshots/nsx.png differ
diff --git a/theme/wwwroot/screenshots/olivet-baptist.png b/theme/wwwroot/screenshots/olivet-baptist.png
new file mode 100644
index 0000000..30edc33
Binary files /dev/null and b/theme/wwwroot/screenshots/olivet-baptist.png differ
diff --git a/theme/wwwroot/screenshots/photography-by-michelle.png b/theme/wwwroot/screenshots/photography-by-michelle.png
new file mode 100644
index 0000000..31c662b
Binary files /dev/null and b/theme/wwwroot/screenshots/photography-by-michelle.png differ
diff --git a/theme/wwwroot/screenshots/prayer-tracker.png b/theme/wwwroot/screenshots/prayer-tracker.png
new file mode 100644
index 0000000..0c81b77
Binary files /dev/null and b/theme/wwwroot/screenshots/prayer-tracker.png differ
diff --git a/theme/wwwroot/screenshots/riehl-world-news.png b/theme/wwwroot/screenshots/riehl-world-news.png
new file mode 100644
index 0000000..a6f6d57
Binary files /dev/null and b/theme/wwwroot/screenshots/riehl-world-news.png differ
diff --git a/theme/wwwroot/screenshots/tcms.png b/theme/wwwroot/screenshots/tcms.png
new file mode 100644
index 0000000..01c4792
Binary files /dev/null and b/theme/wwwroot/screenshots/tcms.png differ
diff --git a/theme/wwwroot/screenshots/tech-blog.png b/theme/wwwroot/screenshots/tech-blog.png
new file mode 100644
index 0000000..e1a479f
Binary files /dev/null and b/theme/wwwroot/screenshots/tech-blog.png differ
diff --git a/theme/wwwroot/screenshots/the-shark-tank.png b/theme/wwwroot/screenshots/the-shark-tank.png
new file mode 100644
index 0000000..35783d9
Binary files /dev/null and b/theme/wwwroot/screenshots/the-shark-tank.png differ
diff --git a/theme/wwwroot/screenshots/virtual-prayer-room.png b/theme/wwwroot/screenshots/virtual-prayer-room.png
new file mode 100644
index 0000000..d9e1bed
Binary files /dev/null and b/theme/wwwroot/screenshots/virtual-prayer-room.png differ
diff --git a/theme/wwwroot/style.css b/theme/wwwroot/style.css
new file mode 100644
index 0000000..16ee68d
--- /dev/null
+++ b/theme/wwwroot/style.css
@@ -0,0 +1,372 @@
+:root {
+ --heading-fonts: Oswald, "Segoe UI", Ubuntu, "DejaVu Sans", "Liberation Sans", Arial, sans-serif;
+ --accent-color: navy;
+ --app-color: maroon;
+ --edge-color: lightgray;
+ --bkg-color: #fffafa;
+}
+html {
+ background-color: var(--edge-color);
+}
+body {
+ margin: 0;
+ font-family: Raleway, "Segoe UI", Ubuntu, Tahoma, "DejaVu Sans", "Liberation Sans", Arial, sans-serif;
+ background-color: var(--bkg-color);
+}
+a {
+ color: var(--accent-color);
+ text-decoration: none;
+}
+a:hover {
+ border-bottom: dotted 1px var(--accent-color);
+}
+a img {
+ border: 0;
+}
+acronym {
+ border-bottom: dotted 1px black;
+}
+header, h1, h2, h3, .footer-by a {
+ font-family: var(--heading-fonts);
+}
+h1 {
+ text-align: center;
+ margin: 1.4rem 0;
+ font-size: 2rem;
+}
+h1.project-title {
+ line-height: 1.2;
+}
+h2 {
+ margin: 1.2rem 0;
+}
+h3 {
+ margin: 1rem 0;
+}
+h2, h3 {
+ border-bottom: solid 2px var(--accent-color);
+ width: 95%;
+}
+@media all and (min-width: 40rem) {
+ h1 {
+ margin: 0 0 1.4rem 0;
+ }
+ h2, h3 {
+ width: 80%;
+ }
+}
+p {
+ margin: 1rem 0;
+}
+code, pre {
+ font-family: "JetBrains Mono","SFMono-Regular",Consolas,"Liberation Mono",Menlo,Courier,monospace;
+ font-size: 80%;
+}
+code {
+ background-color: rgba(0, 0, 0, .1);
+ padding: 0 .25rem;
+ white-space: pre;
+}
+pre {
+ background-color: rgba(0, 0, 0, .9);
+ color: rgba(255, 255, 255, .9);
+ padding: .5rem;
+ border-radius: .5rem;
+ overflow: auto;
+}
+pre > code {
+ background-color: unset;
+}
+div[style="color:#DADADA;background-color:#1E1E1E;"] {
+ background-color: unset !important;
+}
+#content {
+ margin: 0 1rem;
+}
+.content {
+ font-size: 1.1rem;
+ padding: 0 .5rem;
+}
+.auto {
+ margin: 0 auto;
+}
+@media all and (min-width: 68rem) {
+ .content {
+ width: 66rem;
+ padding: 0 1rem;
+ }
+}
+.hdr {
+ font-size: 14pt;
+ font-weight: bold;
+}
+.strike {
+ text-decoration: line-through;
+}
+.alignleft {
+ float: left;
+ padding-right: 5px;
+}
+ul {
+ padding-left: 1.5rem;
+}
+li {
+ list-style-type: disc;
+}
+.app-info {
+ display: flex;
+ flex-flow: row-reverse wrap;
+ justify-content: center;
+}
+abbr[title] {
+ text-decoration: none;
+ border-bottom: dotted 1px rgba(0, 0, 0, .5)
+}
+/* Page header */
+.site-header {
+ height: 100px;
+ display: flex;
+ flex-direction: row;
+ justify-content: space-between;
+ background-image: linear-gradient(to bottom, var(--edge-color), var(--bkg-color));
+}
+.site-header a, .site-header a:visited {
+ color: black;
+}
+.site-header a:hover {
+ border-bottom: none;
+}
+.header-title {
+ font-size: 3rem;
+ font-weight: bold;
+ line-height: 100px;
+ text-align: center;
+}
+.header-spacer {
+ flex-grow: 3;
+}
+.header-social {
+ padding: 25px .8rem 0 0;
+}
+.header-social img {
+ width: 50px;
+ height: 50px;
+}
+@media all and (max-width: 40rem) {
+ .site-header {
+ height: auto;
+ flex-direction: column;
+ align-items: center;
+ }
+ .header-title {
+ line-height: 3rem;
+ }
+ .header-spacer {
+ display: none;
+ }
+}
+/* Home page */
+@media all and (min-width: 80rem) {
+ .home {
+ display: flex;
+ flex-flow: row;
+ align-items: flex-start;
+ justify-content: space-around;
+ }
+}
+.home-lead {
+ font-size: 1.3rem;
+ text-align: center;
+}
+.app-sidebar {
+ text-align: center;
+ border-top: dotted 1px var(--edge-color);
+ padding-top: 1rem;
+ font-size: .9rem;
+ display: flex;
+ flex-flow: row wrap;
+ justify-content: space-around;
+}
+.app-sidebar > div {
+ width: 20rem;
+ padding-bottom: 1rem;
+}
+@media all and (min-width: 68rem) {
+ .app-sidebar {
+ width: 66rem;
+ margin: auto;
+ }
+}
+@media all and (min-width: 80rem) {
+ .app-sidebar {
+ width: 12rem;
+ border-top: none;
+ border-left: dotted 1px var(--edge-color);
+ padding-top: 0;
+ padding-left: 2rem;
+ flex-direction: column;
+ }
+ .app-sidebar > div {
+ width: auto;
+ }
+}
+.app-sidebar a {
+ font-size: 10pt;
+ font-family: sans-serif;
+}
+.app-sidebar-head {
+ font-family: var(--heading-fonts);
+ font-weight: bold;
+ color: var(--app-color);
+ margin-bottom: .8rem;
+ padding: 3px 12px;
+ border-bottom: solid 2px var(--edge-color);
+ font-size: 1rem;
+}
+.app-sidebar-name, .app-sidebar-description {
+ margin: 0;
+ padding: 0;
+}
+.app-sidebar-description {
+ font-style: italic;
+ color: #555555;
+ padding-bottom: .6rem;
+}
+/* All solution page */
+.app-name {
+ font-family: var(--heading-fonts);
+ font-size: 1.3rem;
+ font-weight: bold;
+ color: var(--app-color);
+}
+/* Individual solution pages */
+h1.solution-header {
+ line-height: 1;
+}
+.app-info aside {
+ float: right;
+ background-color: #FFFAFA;
+ padding-left: .5rem;
+}
+@media all and (max-width: 40rem) {
+ .app-info aside {
+ float: none;
+ text-align: center;
+ padding-left: 0;
+ }
+}
+.app-info aside > img {
+ overflow: hidden;
+ border: dotted 1px darkgray;
+ border-radius: .5rem;
+}
+.tech-stack p {
+ margin-bottom: 0;
+}
+.tech-stack ul {
+ margin-top: 0;
+}
+blockquote {
+ border-left: solid 1px darkgray;
+ margin-left: 25px;
+ padding-left: 15px;
+}
+.quote {
+ font-style: italic;
+}
+.source {
+ text-align: right;
+ padding-right: 60px;
+}
+.app-info h3:hover {
+ cursor: hand;
+ cursor: pointer;
+}
+.app-info .arrow {
+ font-size: .75rem;
+ padding-left: 1rem;
+}
+.collapse-panel {
+ max-height: 0;
+ transition: max-height .5s ease-in-out;
+ overflow: hidden;
+}
+.collapse-panel.shown {
+ max-height: 25rem;
+ overflow: auto;
+}
+.collapse-panel p:first-of-type {
+ margin-top: 0;
+}
+/* Footer */
+.project-footer {
+ padding-top: 1rem;
+ display: flex;
+ flex-flow: row wrap;
+ justify-content: space-between;
+}
+footer {
+ display: flex;
+ flex-flow: row wrap;
+ justify-content: space-between;
+ padding: 20px 15px 10px 15px;
+ font-size: 1rem;
+ color: black;
+ clear: both;
+ background-image: linear-gradient(to bottom, var(--bkg-color), var(--edge-color));
+}
+footer a:link, footer a:visited {
+ color: black;
+}
+/* htmx "Loading" overlay */
+.load-overlay {
+ position: fixed;
+ display: flex;
+ flex-flow: row;
+ align-items: center;
+ width: 95%;
+ margin-left: 2.5%;
+ height: 0;
+ z-index: 2000;
+ background-color: rgba(0, 0, 0, .5);
+ border-radius: 1rem;
+ animation: fadeOut .25s ease-in-out;
+ overflow: hidden;
+}
+.load-overlay h1 {
+ color: white;
+ background-color: rgba(0, 0, 0, .75);
+ margin-left: auto;
+ margin-right: auto;
+ border-radius: 1rem;
+ width: 50%;
+ padding: 1rem;
+}
+.load-overlay.htmx-request {
+ height: 80vh;
+ animation: fadeIn .25s ease-in-out;
+}
+@keyframes fadeIn {
+ 0% {
+ opacity: 0;
+ height: 80vh;
+ }
+ 100% {
+ opacity: 1;
+ height: 80vh;
+ }
+}
+@keyframes fadeOut {
+ 0% {
+ opacity: 1;
+ height: 80vh;
+ }
+ 99% {
+ opacity: 0;
+ height: 80vh;
+ }
+ 100% {
+ opacity: 0;
+ height: 0;
+ }
+}
diff --git a/theme/wwwroot/twitter.png b/theme/wwwroot/twitter.png
new file mode 100644
index 0000000..8b5ae7c
Binary files /dev/null and b/theme/wwwroot/twitter.png differ