diff --git a/.gitignore b/.gitignore
index 0320acb..8608f04 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,3 @@
public/
bin/
+tmp
diff --git a/content/about/index.md b/content/about/index.md
new file mode 100644
index 0000000..d035f8b
--- /dev/null
+++ b/content/about/index.md
@@ -0,0 +1,96 @@
++++
+title = "About"
+description = "About"
++++
+
+Hostea provides dedicated managed Gitea hosting, including CI/CD and
+static pages. Upgrades are carefully tested and include security
+updates. Each Gitea instance is monitored 24/7 and has backups.
+
+### You will want to rent a Gitea instance at Hostea if you are ...
+
+- Individual software developers or companies who need their own Gitea
+ instance with CI/CD and static pages but can't be bothered with
+ installation and maintenance. You want the freedom to download a
+ backup and seamlessly self-host it whenever you decide: no strings
+ attached.
+- Organizations that want to resell Gitea hosting under their brand and
+ rent the infrastructure at a discounted price. You want the option to
+ run the Hostea infrastructure on your own hardware in the future and
+ seamlessly migrate your clients.
+
+### Committed to Free Software and Radical Transparency
+
+- Everything is public, there are no internal discussions, all financial
+ records are public down to the last cent
+- Every piece of software is and will always be exclusively Free
+ Software so that it can be self-hosted by users and re-used by
+ competitors
+- Private data (names, addresses, etc. ) is carefully protected and
+ destroyed as soon as possible
+
+### Hostea is operated by a collective of individuals and organizations
+
+The members of Hostea are like minded individuals and organizations who
+share the same commitment to Free Software and transparency. They share
+the Hostea income in proportion of their involvement which is recorded
+in a publicly available spreadsheet for everyone to audit.
+
+The motivation for becoming a member of Hostea can be:
+
+- To refer the occasional customer to Hostea, knowing it has a vote to
+ influence where Hostea is going.
+- To provide Gitea hosting to its clients under its own brand because it
+ is easier than setting up Hostea on their own hardware to do the same.
+ And knowing that when they want to do so it will be as easy as
+ possible.
+- To make a living as a Free Software developer working on developing
+ and maintaining Hostea. The time logged working on Hostea will be
+ compensated with the income.
+- To support the idea of a sustainable online service exclusively based
+ on Free Software (there are actually very few of them, it is a non
+ trivial problem to solve) and do nothing. In which case there won't be
+ any income distributed to the member.
+- To free developers from centralized forges lock-in by providing a
+ reliable alternative and work on the Ansible playbooks to maintain
+ Hostea. In which case the member is entitled to a share of the income
+ in proportion of the time.
+
+### Truly self-hostable
+
+When self-hosting the development of a software project is difficult, it
+is a theoretical possibility that has no practical use. The Gitea
+project itself has been stuck on GitHub for many years. Hostea is
+committed to provide a seamless migration path to self hosting. A
+virtual machine to run the Gitea instance, including CI/CD and static
+pages can be downloaded at any time. It can then be booted on premise or
+in the cloud.
+
+The infrastructure as code running Hostea itself is published,
+documented and tested so that it can also be used on premise. Either to
+manage the virtual machine retrieved from Hostea, with the same user
+panel, monitoring, backups etc. Or to run a public Gitea hosting service
+identical to Hostea and become a competitor.
+
+### Interoperable with existing infrastructures
+
+Running Hostea with its integrated monitoring and backup system is an
+interesting proposition: all in one. When it is deployed within an
+existing infrastructure that has its own backup and monitoring setup, it
+provides:
+
+- A monitoring endpoint to get a global health status (red/green) which
+ is an aggregation of the probes deployed to verify Gitea runs,
+ security updates have been applied, the latest upgrades are installed,
+ backups have been successfully created, communicates with the CI etc.
+- A backup download endpoint to get a copy of the backups so they can be
+ stored in the existing backup system for safekeeping
+
+### Hostea is not ...
+
+- Hostea is not a shared Gitea hosting facility that can be used for free
+ such as Codeberg. It provides dedicated Gitea instances for a fee.
+- Hostea is not a company with shareholders that make a passive income.
+ The income is redistributed to the people and organizations doing the
+ work. The workers are also empowered with every decision about Hostea,
+ either by consensus or by vote.
diff --git a/content/contact/index.md b/content/contact/index.md
new file mode 100644
index 0000000..cf52920
--- /dev/null
+++ b/content/contact/index.md
@@ -0,0 +1,21 @@
+---
+title: "Contact"
+draft: false
+---
+
+## Matrix
+
+We have a public [Matrix
+chatroom](https://matrix.to/#/#hostea:matrix.batsense.net) that we use
+for instant messaging.
+
+## Forum
+
+We also have a [forum](https://forum.hostea.org/) that we use for
+long-form discussions.
+
+## Source Code
+
+All Hostea software is 100% [Free
+Software](https://www.gnu.org/philosophy/free-sw.en.html) and is hosted
+on the [Hostea Gitea](https://gitea.hostea.org)
diff --git a/content/privacy-policy/index.md b/content/privacy-policy/index.md
new file mode 100644
index 0000000..1e01dcc
--- /dev/null
+++ b/content/privacy-policy/index.md
@@ -0,0 +1,6 @@
+---
+title: "Privacy"
+draft: false
+---
+
+TODO
diff --git a/sass/blog/main.scss b/sass/blog/main.scss
new file mode 100644
index 0000000..71d0712
--- /dev/null
+++ b/sass/blog/main.scss
@@ -0,0 +1,76 @@
+@import "../components/page";
+@import "../components/_link";
+
+$std-trans: 0.3s;
+
+.blog__content {
+ @include md;
+
+ p {
+ margin: 30px 0;
+ }
+}
+
+.blog__container {
+ margin: auto;
+ max-width: 50%;
+}
+
+.blog__list {
+ list-style: none;
+}
+
+.blog__post-link,
+.blog__post-link:visited {
+ text-decoration: none;
+ color: inherit;
+}
+
+.blog__title {
+ margin: 35px 0;
+}
+
+.blog__post-link {
+ display: block;
+}
+
+.blog__post-item {
+ border-bottom: 1px dashed #333;
+ margin: 10px;
+ padding: 10px;
+}
+
+.blog__post-item:hover {
+ background-color: lightgray;
+}
+
+.blog__post-item:last-child {
+ border-bottom: none;
+}
+
+.blog__post-description {
+ font-size: 0.9rem;
+ margin: 5px 0;
+}
+
+.blog__post-tag {
+ font-size: 0.7rem;
+ font-family: monospace, monospace;
+}
+
+.blog__post-tag:hover {
+ @include a_hover;
+}
+
+.blog__post-meta {
+ font-size: 0.7rem;
+}
+
+.blog__post-title {
+ font-size: 1.4rem;
+ font-weight: 550;
+}
+
+.blog__post-tag-container {
+ margin: 0;
+}
diff --git a/sass/blog/mobile.scss b/sass/blog/mobile.scss
new file mode 100644
index 0000000..3b43409
--- /dev/null
+++ b/sass/blog/mobile.scss
@@ -0,0 +1,9 @@
+@import "../components/page";
+
+.blog__container {
+ max-width: 95%;
+}
+
+.blog__content {
+ @include md_mobile;
+}
diff --git a/sass/components/_link.scss b/sass/components/_link.scss
new file mode 100644
index 0000000..e957dba
--- /dev/null
+++ b/sass/components/_link.scss
@@ -0,0 +1,4 @@
+@mixin a_hover {
+ color: rgb(0, 86, 179);
+ text-decoration: underline;
+}
diff --git a/sass/components/_page.scss b/sass/components/_page.scss
new file mode 100644
index 0000000..60ff1d4
--- /dev/null
+++ b/sass/components/_page.scss
@@ -0,0 +1,95 @@
+@import "./_link.scss";
+
+@mixin md {
+ img {
+ max-width: 100%;
+ display: block;
+ }
+
+ video {
+ max-width: 100%;
+ display: block;
+ }
+
+ li {
+ margin-left: 40px;
+ }
+
+ a:hover {
+ @include a_hover;
+ }
+
+ code {
+ word-wrap: break-word;
+ overflow-wrap: break-word;
+ }
+
+ table {
+ border-collapse: collapse;
+ caption-side: bottom;
+ border-color: #e9ecef;
+ text-align: center;
+ width: 100%;
+ }
+
+ table > thead {
+ vertical-align: bottom;
+ border-bottom: 1px solid #cdc8ca;
+ text-align: center;
+ }
+
+ table {
+ th {
+ text-align: center;
+ }
+ td {
+ margin: auto;
+ padding: 10px;
+ border-bottom: 1px solid #edddd1;
+ }
+ }
+
+ p,
+ h2,
+ h3 {
+ margin: 10px 0;
+ }
+
+ pre {
+ padding: 10px 10px 10px 20px;
+ border-radius: 8px;
+ font-size: 0.95rem;
+ overflow: auto;
+ }
+ pre {
+ font-family: monospace, monospace;
+ font-display: auto;
+ font-size: 1em;
+ }
+}
+
+@mixin md_mobile {
+ table {
+ overflow-x: scroll;
+ }
+
+ table td {
+ padding: 5px;
+ }
+
+ pre {
+ white-space: pre-wrap;
+ word-wrap: break-word;
+ }
+
+ li {
+ margin-left: 25px;
+ }
+
+ p,
+ h1,
+ h2,
+ h3 {
+ margin: 20px 0px;
+ }
+}
diff --git a/sass/footer/main.scss b/sass/footer/main.scss
new file mode 100644
index 0000000..ae94403
--- /dev/null
+++ b/sass/footer/main.scss
@@ -0,0 +1,79 @@
+@import "../components/_link";
+
+footer {
+ display: block;
+ color: #333;
+ font-size: 0.7rem;
+ padding: 0;
+ margin: 0;
+}
+
+.footer__container {
+ width: 100%;
+ padding: 0;
+ justify-content: space-between;
+ margin: auto;
+ display: flex;
+ flex-direction: row;
+ overflow: hidden;
+}
+
+@mixin footer__column-base {
+ list-style: none;
+ display: flex;
+ margin: auto 50px;
+ align-items: center;
+ flex: 2.5;
+}
+
+.footer__column {
+ @include footer__column-base;
+}
+
+.footer__column--center {
+ @include footer__column-base;
+ margin: auto;
+ flex-direction: column;
+ align-items: center;
+ flex: 2;
+}
+
+.footer__column:last-child {
+ justify-content: flex-end;
+ a {
+ margin: 10px;
+ }
+}
+
+.footer__link-container {
+ margin: 5px;
+}
+
+.footer__link {
+ text-decoration: none;
+}
+
+.license__link {
+ display: inline;
+}
+
+.license__link:hover {
+ @include a_hover;
+}
+
+.footer__column-divider,
+.footer__column-divider--mobile-visible,
+.footer__column-divider--mobile-only {
+ font-weight: 500;
+ opacity: 0.7;
+ margin: 0 5px;
+}
+
+.footer__column-divider--mobile-only {
+ display: none;
+}
+
+.footer__icon {
+ margin: auto 5px;
+ height: 20px;
+}
diff --git a/sass/footer/mobile.scss b/sass/footer/mobile.scss
new file mode 100644
index 0000000..f6e0c1f
--- /dev/null
+++ b/sass/footer/mobile.scss
@@ -0,0 +1,52 @@
+$footer-font-size: 0.44rem;
+
+footer {
+ font-size: $footer-font-size;
+}
+
+.footer__container {
+ display: grid;
+ grid-template-rows: repeat(3, 100%);
+ align-items: center;
+ margin: auto;
+ justify-content: center;
+}
+
+.footer__link {
+ font-size: 0.5rem;
+}
+
+.license__conatiner,
+.license__link {
+ text-align: center;
+}
+
+@mixin footer__column-base {
+ margin: 0 auto;
+ display: flex;
+ padding: 0;
+}
+
+.footer__column:first-child {
+ grid-row-start: 3;
+ flex-direction: row;
+}
+
+.footer__column:last-child {
+ grid-row-start: 2;
+}
+
+.footer__column {
+ @include footer__column-base;
+ align-self: flex-end;
+}
+
+.footer__column--center {
+ @include footer__column-base;
+ align-self: flex-start;
+}
+
+.footer__column-divider--mobile-only {
+ margin: 0 3px;
+ font-size: 9.9px;
+}
diff --git a/sass/home/main.scss b/sass/home/main.scss
new file mode 100644
index 0000000..6013205
--- /dev/null
+++ b/sass/home/main.scss
@@ -0,0 +1,41 @@
+$heading-letter-spacing: 20px;
+.index-banner__container {
+ width: 100%;
+ display: flex;
+ flex-direction: column;
+ //background-color: #d1875a;
+ background-color: #3c3c3c;
+ background-color: #58181f;
+ font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
+ min-height: 300px;
+}
+
+.index-banner {
+ margin: auto;
+ display: flex;
+ flex-direction: column;
+}
+
+.index-banner__title {
+ margin: auto;
+ font-style: none;
+ color: #fff;
+ letter-spacing: $heading-letter-spacing;
+ font-size: 3rem;
+ font-weight: 400;
+}
+
+.index-banner__tagline {
+ margin: auto;
+ color: #fff;
+ font-size: 1.4rem;
+}
+
+.index-banner__title-container {
+ display: flex;
+}
+.index-banner__logo {
+ width: 120px;
+ margin: auto;
+ border-radius: 20px;
+}
diff --git a/sass/home/mobile.scss b/sass/home/mobile.scss
new file mode 100644
index 0000000..9351430
--- /dev/null
+++ b/sass/home/mobile.scss
@@ -0,0 +1,8 @@
+.home__container {
+ max-height: 100vh;
+ height: 100vh;
+}
+
+.home__name {
+ font-size: 2rem;
+}
diff --git a/sass/main.scss b/sass/main.scss
new file mode 100644
index 0000000..e4ed350
--- /dev/null
+++ b/sass/main.scss
@@ -0,0 +1,73 @@
+@import "./home/main";
+@import "./nav/main";
+@import "./footer/main";
+@import "./page/main";
+@import "./blog/main";
+@import "./tag/main";
+
+* {
+ padding: 0;
+ margin: 0;
+ //font-family: "Inter UI", -apple-system, BlinkMacSystemFont, "Roboto",
+ // "Segoe UI", Helvetica, Arial, sans-serif;
+ font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
+ font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
+}
+
+a {
+ text-decoration: none;
+}
+
+a,
+a:visited {
+ color: rgb(0, 86, 179);
+}
+
+.base {
+ min-height: 100vh;
+ display: flex;
+ flex-direction: column;
+ width: 100%;
+}
+
+.main__content-container {
+ display: flex;
+ flex-direction: column;
+ min-height: 100%;
+ justify-content: space-between;
+ flex: 2;
+}
+
+p,
+h1,
+h2,
+h3,
+h4,
+li,
+ol,
+ul {
+ color: #333;
+}
+
+main {
+ width: 100%;
+}
+
+blockquote {
+ border-left: 0.3em solid rgba(55, 55, 55, 0.4);
+ margin-bottom: 16px;
+ //padding-left: 20px;
+ padding: 0 1em;
+ color: #707070;
+
+ p,
+ h1,
+ h2,
+ h3,
+ h4,
+ li,
+ ol,
+ ul {
+ color: inherit;
+ }
+}
diff --git a/sass/mobile.scss b/sass/mobile.scss
new file mode 100644
index 0000000..b53d1fb
--- /dev/null
+++ b/sass/mobile.scss
@@ -0,0 +1,9 @@
+@import "./home/mobile";
+@import "./nav/mobile";
+@import "./footer/mobile";
+@import "./page/mobile";
+@import "./blog/mobile";
+
+header {
+ height: auto;
+}
diff --git a/sass/nav/main.scss b/sass/nav/main.scss
new file mode 100644
index 0000000..1d3cabf
--- /dev/null
+++ b/sass/nav/main.scss
@@ -0,0 +1,71 @@
+@import "../components/_link";
+
+.nav__container {
+ display: flex;
+ flex-direction: row;
+
+ box-sizing: border-box;
+ width: 100%;
+ padding-top: 5px;
+}
+
+.nav__home-btn {
+ font-weight: bold;
+// font-family: monospace, monospace;
+ margin: auto;
+ margin-left: -10px;
+}
+
+.nav__hamburger-menu {
+ display: none;
+}
+
+.nav__spacer {
+ flex: 3;
+ margin: auto;
+}
+
+.nav__logo-container {
+ display: inline-flex;
+ text-decoration: none;
+}
+
+.nav__logo-container:hover {
+ @include a_hover;
+}
+
+.nav__toggle {
+ display: none;
+}
+
+.nav__logo {
+ display: inline-flex;
+ margin: auto;
+ padding: 5px;
+ width: 40px;
+}
+
+.nav__link-group {
+ list-style: none;
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+ align-self: center;
+ margin: auto;
+ text-align: center;
+}
+
+.nav__link-container {
+ display: flex;
+ padding: 10px;
+ height: 100%;
+ margin: auto;
+}
+
+.nav__link {
+ text-decoration: none;
+}
+
+.nav__link:hover {
+ @include a_hover;
+}
diff --git a/sass/nav/mobile.scss b/sass/nav/mobile.scss
new file mode 100644
index 0000000..8e1302d
--- /dev/null
+++ b/sass/nav/mobile.scss
@@ -0,0 +1,121 @@
+//@import '../_vars';
+
+$hamburger-menu-animation: 0.4s ease-out;
+$nav__hamburger-inner-height: 1.3px;
+
+.nav__container {
+ flex-direction: column;
+}
+
+.nav__header {
+ display: flex;
+ flex-direction: row;
+ min-width: 100%;
+ justify-content: space-between;
+}
+
+.nav__link-group {
+ position: sticky;
+ flex-direction: column;
+ margin: auto;
+ align-items: center;
+ width: 100%;
+ // background-color: $light-blue;
+}
+
+.nav__link-container {
+ border-bottom: 1px dashed rgba(55, 55, 55, 0.4);
+ width: 70%;
+}
+
+.nav__link-container:last-child {
+ border-bottom: none;
+}
+
+.nav__link {
+ margin: auto;
+}
+
+.nav__hamburger-menu {
+ display: inline-block;
+ width: 50px;
+ height: 50px;
+}
+
+.nav__spacer {
+ display: none;
+}
+
+.nav__toggle:not(:checked) ~ .nav__link-group {
+ max-height: 0;
+ transition: max-height $hamburger-menu-animation;
+ overflow: hidden;
+}
+
+.nav__toggle:checked ~ .nav__link-group {
+ max-height: 500px;
+ transition: max-height $hamburger-menu-animation;
+}
+
+.nav__toggle:checked ~ .nav__header {
+ .nav__hamburger-inner::after {
+ width: 24px;
+ bottom: $nav__hamburger-inner-height;
+ transform: rotate(-90deg);
+ transition: bottom 0.1s ease-out,
+ transform 0.22s cubic-bezier(0.215, 0.61, 0.355, 1) 0.12s,
+ width 0.1s ease-out;
+ }
+
+ .nav__hamburger-inner::before {
+ top: 0;
+ opacity: 0;
+ transition: top 0.1s ease-out, opacity 0.1s ease-out 0.12s;
+ }
+
+ .nav__hamburger-inner {
+ transform: rotate(225deg);
+ transition-delay: 0.12s;
+ transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
+ }
+}
+
+.nav__hamburger-inner::after {
+ bottom: -7px;
+ transition: bottom 0.1s ease-in 0.25s,
+ transform 0.22s cubic-bezier(0.55, 0.055, 0.675, 0.19),
+ width 0.1s ease-in 0.25s;
+}
+
+.nav__hamburger-inner::after,
+.nav__hamburger-inner::before {
+ content: "";
+ display: block;
+}
+
+.nav__hamburger-inner::before {
+ top: -7px;
+ transition: top 0.1s ease-in 0.25s, opacity 0.1s ease-in;
+}
+
+.nav__hamburger-inner {
+ top: 50%;
+ margin: auto;
+ transition-duration: 0.22s;
+ transition-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
+}
+
+.nav__hamburger-inner,
+.nav__hamburger-inner::after,
+.nav__hamburger-inner::before {
+ width: 24px;
+ height: $nav__hamburger-inner-height;
+ position: relative;
+ // background: $dark-black;
+ background: #000;
+}
+
+.nav__hamburger-menu,
+.nav__hamburger-inner {
+ display: block;
+}
diff --git a/sass/page/main.scss b/sass/page/main.scss
new file mode 100644
index 0000000..d570b66
--- /dev/null
+++ b/sass/page/main.scss
@@ -0,0 +1,38 @@
+@import '../components/_page.scss';
+@import '../components/_link.scss';
+
+.page__container {
+ width: 50%;
+ margin: auto;
+ padding: 50px 0;
+}
+
+.page__group {
+ display: flex;
+ flex-direction: column;
+}
+
+.page__group-title {
+ margin: 20px auto;
+}
+
+.page__group-content {
+ display: flex;
+ flex-direction: column;
+}
+
+.page__group-content {
+ @include md;
+}
+
+.page__preview-banner {
+ width: 10%;
+ height: #{'min(250px, 50vh)'};
+ margin: 20px auto;
+}
+
+.page__banner {
+ width: 100%;
+ height: #{'max(450px, 50vh)'};
+ margin: 20px auto;
+}
diff --git a/sass/page/mobile.scss b/sass/page/mobile.scss
new file mode 100644
index 0000000..6e4f982
--- /dev/null
+++ b/sass/page/mobile.scss
@@ -0,0 +1,19 @@
+@import '../components/_page.scss';
+
+.page__container {
+ width: 85%;
+}
+
+.page__group-content {
+ @include md_mobile;
+}
+
+.page__banner {
+ height: auto;
+}
+
+.page__group-title {
+ margin: auto;
+ margin-top: 0px;
+ margin-bottom: 10px;
+}
diff --git a/sass/tag/main.scss b/sass/tag/main.scss
new file mode 100644
index 0000000..157917f
--- /dev/null
+++ b/sass/tag/main.scss
@@ -0,0 +1,25 @@
+@import "../components/page";
+
+$std-trans: 0.3s;
+
+.tag__item-link,
+.tag__item-link:visited {
+ text-decoration: none;
+}
+
+.tag__item-link {
+ display: flex;
+ align-items: center;
+}
+
+
+.tag__item {
+ border-bottom: 1px dashed #333;
+ margin: 10px;
+ padding: 10px;
+}
+.tag__item-title {
+ font-size: 1.4rem;
+ font-weight: 550;
+ flex: 2;
+}
diff --git a/static/android-icon-144x144.png b/static/android-icon-144x144.png
new file mode 100644
index 0000000..5e6c541
Binary files /dev/null and b/static/android-icon-144x144.png differ
diff --git a/static/android-icon-192x192.png b/static/android-icon-192x192.png
new file mode 100644
index 0000000..c189bed
Binary files /dev/null and b/static/android-icon-192x192.png differ
diff --git a/static/android-icon-36x36.png b/static/android-icon-36x36.png
new file mode 100644
index 0000000..a3aee54
Binary files /dev/null and b/static/android-icon-36x36.png differ
diff --git a/static/android-icon-48x48.png b/static/android-icon-48x48.png
new file mode 100644
index 0000000..f33e014
Binary files /dev/null and b/static/android-icon-48x48.png differ
diff --git a/static/android-icon-72x72.png b/static/android-icon-72x72.png
new file mode 100644
index 0000000..5269833
Binary files /dev/null and b/static/android-icon-72x72.png differ
diff --git a/static/android-icon-96x96.png b/static/android-icon-96x96.png
new file mode 100644
index 0000000..1e715bf
Binary files /dev/null and b/static/android-icon-96x96.png differ
diff --git a/static/apple-icon-114x114.png b/static/apple-icon-114x114.png
new file mode 100644
index 0000000..37b04e2
Binary files /dev/null and b/static/apple-icon-114x114.png differ
diff --git a/static/apple-icon-120x120.png b/static/apple-icon-120x120.png
new file mode 100644
index 0000000..772a640
Binary files /dev/null and b/static/apple-icon-120x120.png differ
diff --git a/static/apple-icon-144x144.png b/static/apple-icon-144x144.png
new file mode 100644
index 0000000..5e6c541
Binary files /dev/null and b/static/apple-icon-144x144.png differ
diff --git a/static/apple-icon-152x152.png b/static/apple-icon-152x152.png
new file mode 100644
index 0000000..9849237
Binary files /dev/null and b/static/apple-icon-152x152.png differ
diff --git a/static/apple-icon-180x180.png b/static/apple-icon-180x180.png
new file mode 100644
index 0000000..48e34d7
Binary files /dev/null and b/static/apple-icon-180x180.png differ
diff --git a/static/apple-icon-57x57.png b/static/apple-icon-57x57.png
new file mode 100644
index 0000000..c8fb43b
Binary files /dev/null and b/static/apple-icon-57x57.png differ
diff --git a/static/apple-icon-60x60.png b/static/apple-icon-60x60.png
new file mode 100644
index 0000000..c8e965e
Binary files /dev/null and b/static/apple-icon-60x60.png differ
diff --git a/static/apple-icon-72x72.png b/static/apple-icon-72x72.png
new file mode 100644
index 0000000..5269833
Binary files /dev/null and b/static/apple-icon-72x72.png differ
diff --git a/static/apple-icon-76x76.png b/static/apple-icon-76x76.png
new file mode 100644
index 0000000..8aaa1b7
Binary files /dev/null and b/static/apple-icon-76x76.png differ
diff --git a/static/apple-icon-precomposed.png b/static/apple-icon-precomposed.png
new file mode 100644
index 0000000..7d884ca
Binary files /dev/null and b/static/apple-icon-precomposed.png differ
diff --git a/static/apple-icon.png b/static/apple-icon.png
new file mode 100644
index 0000000..7d884ca
Binary files /dev/null and b/static/apple-icon.png differ
diff --git a/static/browserconfig.xml b/static/browserconfig.xml
new file mode 100644
index 0000000..c554148
--- /dev/null
+++ b/static/browserconfig.xml
@@ -0,0 +1,2 @@
+
+