diff --git a/Gemfile b/Gemfile index 50b96461..42b23af3 100644 --- a/Gemfile +++ b/Gemfile @@ -91,3 +91,5 @@ gem "rack", "~> 2.2" gem "tailwindcss-rails", "~> 2.7" gem "httparty", "~> 0.22.0" + +gem "redcarpet", "~> 3.6" diff --git a/Gemfile.lock b/Gemfile.lock index efe1a188..5161e416 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -385,6 +385,7 @@ GEM rdoc (6.7.0) psych (>= 4.0.0) recursive-open-struct (1.1.3) + redcarpet (3.6.0) redis (4.8.1) regexp_parser (2.9.2) reline (0.5.10) @@ -547,6 +548,7 @@ DEPENDENCIES pundit (~> 2.1) rack (~> 2.2) rails (~> 7.2.1) + redcarpet (~> 3.6) redis (~> 4.8) responders! rqrcode (~> 2.2) diff --git a/README.md b/README.md index cd3e4d63..da9cb9c3 100644 --- a/README.md +++ b/README.md @@ -3,9 +3,7 @@ - [ ] Onboarding flow - [ ] we should have a feature to continuously poll stuff and figure out if they are still alive - [ ] Healthchecks and whatnot -- [ ] Finish the landing page - [ ] Write the manifesto -- [ ] show last healthcheck - [ ] allow public network access flag is not currently doing anything * Make it show which git SHA is currently deployed on the homepage * Or if there is currently a deploy happening diff --git a/app/assets/stylesheets/custom.css b/app/assets/stylesheets/custom.css index 08999009..9cfa9f73 100644 --- a/app/assets/stylesheets/custom.css +++ b/app/assets/stylesheets/custom.css @@ -16,4 +16,8 @@ .animate-click { animation: click-animation 300ms ease-in-out; +} + +.prose-lg th { + @apply text-left; } \ No newline at end of file diff --git a/app/controllers/static_controller.rb b/app/controllers/static_controller.rb index 1d6b7e56..4e66978c 100644 --- a/app/controllers/static_controller.rb +++ b/app/controllers/static_controller.rb @@ -1,6 +1,13 @@ class StaticController < ApplicationController + MANIFESTO_FILE = Rails.root.join("public", "manifesto.md") skip_before_action :authenticate_user! def index end + + def manifesto + @content = File.read(MANIFESTO_FILE) + renderer = Redcarpet::Render::HTML.new + @markdown = Redcarpet::Markdown.new(renderer, tables: true) + end end diff --git a/app/views/static/about.html.erb b/app/views/static/about.html.erb deleted file mode 100644 index 2dea23f8..00000000 --- a/app/views/static/about.html.erb +++ /dev/null @@ -1,11 +0,0 @@ -
-
-

Why do we exist?

- In a previous start up, I saw first hand how the cost of hosting a web app could explode over time. -
- What was weird was that costs grew with organizational complexity, not compute complexity, and often in area's I never expected. -
- As it turns out, the cost you pay to host your app is only a fraction of the total IT spend. -
-
-
diff --git a/app/views/static/landing_page/_hero.html.erb b/app/views/static/landing_page/_hero.html.erb index 9013f57a..b3787b56 100644 --- a/app/views/static/landing_page/_hero.html.erb +++ b/app/views/static/landing_page/_hero.html.erb @@ -20,6 +20,9 @@

Canine is a Kubernetes platform that makes it easy to deploy and manage your applications.

<%= link_to "Get started", new_user_registration_path, class: "rounded-md bg-indigo-500 px-3.5 py-2.5 text-sm font-semibold text-white shadow-sm hover:bg-indigo-400 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-400" %> + <%= link_to manifesto_path, class: "text-sm font-semibold leading-6 text-white" do %> + Our manifesto + <% end %>
diff --git a/app/views/static/manifesto.html.erb b/app/views/static/manifesto.html.erb new file mode 100644 index 00000000..d5de846c --- /dev/null +++ b/app/views/static/manifesto.html.erb @@ -0,0 +1,5 @@ +
+
+ <%= @markdown.render(@content).html_safe %> +
+
diff --git a/config/routes.rb b/config/routes.rb index a8d62157..349576c3 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -7,6 +7,7 @@ Rails.application.routes.draw do end get "/privacy", to: "static#privacy" get "/terms", to: "static#terms" + get "/manifesto", to: "static#manifesto" authenticated :user do root to: "projects#index", as: :user_root diff --git a/public/manifesto.md b/public/manifesto.md new file mode 100644 index 00000000..da21218d --- /dev/null +++ b/public/manifesto.md @@ -0,0 +1,38 @@ +# Why does Canine exist? + +As a cofounder of a previous start up, I saw first hand how the cost of hosting a web app could explode over time. + +What I found weird was that costs grew with organizational complexity, not compute complexity, and often in area's I never expected. + +As it turns out, the cost you pay to host your app is only a fraction of the total IT spend. + +I'll walk through the history of our IT spend and see how it grew over time. + +### At Launch +| Service | Spend (monthly) | +| -------- | ------- | +| Heroku | $100 | +| Google Maps | $50 | +| Sentry | FREE | +| Looker | $1000 | +| Redshift | $800 | +| FiveTran | $600 | +| **TOTAL** | **$2950** | + +Interesting to note, the cost of hosting our app (Heroku) was a tiny portion of our IT spend. + +By year 1, we had grown our team (40+), and added a few more tools to our tech stack. + +### Year 1 +| Service | Spend (monthly) | +| -------- | ------- | +| Heroku | $1000 | +| AWS | $1000 | +| Google Maps | $500 | +| Sentry | $300 | +| Looker | $5000 | +| DBT Cloud | $1000 | +| Databricks | $5000 | +| Redshift | $1500 | +| FiveTran | $2000 | +| **TOTAL** | **$16800** | \ No newline at end of file