Improve SEO?

This commit is contained in:
Hakan Ensari 2018-09-25 14:52:33 +01:00
parent 4df1d794c2
commit 1da5f39405
5 changed files with 85 additions and 87 deletions

View File

@ -2,13 +2,10 @@
[![Travis](https://travis-ci.org/hakanensari/frankfurter.svg)](https://travis-ci.org/hakanensari/frankfurter) [![Travis](https://travis-ci.org/hakanensari/frankfurter.svg)](https://travis-ci.org/hakanensari/frankfurter)
Foreign exchange (forex) rates and currency conversion API Frankfurter is a free and open source API for current and historical foreign exchange rates. It tracks data published by the European Central Bank. Rates are updated around 4PM CET every working day.
## Getting Started A public instance of the API is hosted on `https://frankfurter.app`. Alternatively, you can self-host a private instance using the provided Docker image.
Frankfurter is a free and open source API for current and historical foreign exchange rates. It tracks data published by the European Central Bank.
Rates are updated around 4PM CET every working day.
## Examples ## Examples
@ -91,7 +88,6 @@ To update to a newer image, run
```bash ```bash
docker-compose -f docker-compose.yml -f docker-compose.prod.yml pull docker-compose -f docker-compose.yml -f docker-compose.prod.yml pull
docker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d
``` ```
Within a few minutes, you will access the API at `https://yourdomain.com`. Within a few minutes, you will access the API at `https://yourdomain.com/`.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

View File

@ -21,9 +21,12 @@ body {
} }
} }
.content { .container {
margin-bottom: 2em;
max-width: 720px; max-width: 720px;
}
.header {
margin-bottom: 2em;
.logo { .logo {
img { img {
@ -34,33 +37,31 @@ body {
.logo, .logo,
h1, h1,
h1+p+p { h2 {
color: #FFF;
text-align: center; text-align: center;
} }
h1 { h1 {
font-size: 56px; font-size: 56px;
}
h2 {
font-size: 20px;
margin-bottom: 2em;
}
}
.content {
h1 {
&,
&+p { &+p {
display: none; display: none;
} }
&+p+p {
margin-bottom: 2em;
} }
&,
&+p+p {
color: #FFF;
}
}
h1+p+p,
h2 { h2 {
font-size: 20px; font-size: 20px;
}
h2 {
font-weight: bold; font-weight: bold;
} }
} }
@ -89,6 +90,6 @@ code:not(.hljs) {
.footer { .footer {
color: #FFF; color: #FFF;
margin: 2em 0; margin: 2em auto;
text-align: center; text-align: center;
} }

View File

@ -33,6 +33,8 @@ configure :test do
set :raise_errors, false set :raise_errors, false
end end
set :static_cache_control, [:public, max_age: 300]
helpers do helpers do
def end_of_day_quote def end_of_day_quote
@end_of_day_quote ||= begin @end_of_day_quote ||= begin

View File

@ -1,20 +1,79 @@
<!doctype html> <!doctype html>
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="description" content="Frankfurter is an open source API for current and historical foreign exchange rates. It tracks rates published daily by the European Central Bank."> <meta name="description" content="Frankfurter is an open source API for current and historical foreign exchange rates. It tracks rates published daily by the European Central Bank.">
<title>Foreign exchange rates and currency conversion API | Frankfurter</title> <title>Foreign exchange rates and currency conversion API | Frankfurter</title>
<link rel="canonical" href="https://frankfurter.app/">
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/solarized-dark.min.css"> <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/solarized-dark.min.css">
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.1/css/bootstrap.min.css"> <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.1/css/bootstrap.min.css">
<link rel="stylesheet" href="//use.fontawesome.com/releases/v5.3.1/css/all.css"> <link rel="stylesheet" href="//use.fontawesome.com/releases/v5.3.1/css/all.css">
<link rel="stylesheet" href="//fonts.googleapis.com/css?family=Open+Sans"> <link rel="stylesheet" href="//fonts.googleapis.com/css?family=Open+Sans">
<link rel="stylesheet" href="/stylesheets/application.css"> <link rel="stylesheet" href="/stylesheets/application.css">
<link rel="shortcut icon" href="/images/frankfurter.png"> <link rel="shortcut icon" href="/images/frankfurter.png">
<link rel="apple-touch-icon" href="/images/frankfurter-solid.png">
<% if ENV['GA_TRACKING_ID'] %> <% if ENV['GA_TRACKING_ID'] %>
<link rel="stylesheet" type="text/css" href="//cdnjs.cloudflare.com/ajax/libs/cookieconsent2/3.1.0/cookieconsent.min.css" /> <link rel="stylesheet" type="text/css" href="//cdnjs.cloudflare.com/ajax/libs/cookieconsent2/3.1.0/cookieconsent.min.css" />
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-36475354-1"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', '<%= ENV['GA_TRACKING_ID'] %>');
</script>
<% end %>
</head>
<body>
<nav class="navbar navbar-expand">
<div class="container">
<ul class="navbar-nav mx-auto">
<li class="nav-item">
<a class="nav-link" href="https://github.com/hakanensari/frankfurter">
<i class="fab fa-github fa-fw fa-lg"></i><span class="d-none d-sm-inline">Source</span>
</a>
</li>
<li class="nav-item">
<a class="nav-link" href="https://hub.docker.com/r/hakanensari/frankfurter/">
<i class="fab fa-docker fa-fw fa-lg"></i><span class="d-none d-sm-inline">Image</span>
</a>
</li>
<li class="nav-item">
<a class="nav-link" href="https://www.ecb.europa.eu/stats/exchange/eurofxref/html/index.en.html">
<i class="fas fa-file-alt fa-fw fa-lg"></i><span class="d-none d-sm-inline">Data sets</span>
</a>
</li>
<li class="nav-item">
<a class="nav-link" href="https://status.frankfurter.app/">
<i class="fas fa-signature fa-fw fa-lg"></i><span class="d-none d-sm-inline">Status</span>
</a>
</li>
</ul>
</div>
</nav>
<header class="header container">
<div class="logo">
<image src="/images/frankfurter.png" alt="">
</div>
<h1>Frankfurter</h1>
<h2>Foreign exchange (forex) rates and currency conversion API</h2>
</header>
<div class="content container">
<%= content %>
</div>
<footer class="footer container">
<p class="small">
<i class="far fa-heart"></i> Frankfurter 2012-<%= Date.today.year %>
</p>
</footer>
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/highlight.min.js"></script>
<script type="text/javascript" src="/javascripts/application.js"></script>
<% if ENV['GA_TRACKING_ID'] %>
<script src="//cdnjs.cloudflare.com/ajax/libs/cookieconsent2/3.1.0/cookieconsent.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/cookieconsent2/3.1.0/cookieconsent.min.js"></script>
<script> <script>
window.addEventListener("load", function(){ window.addEventListener("load", function(){
@ -32,67 +91,7 @@
} }
})}); })});
</script> </script>
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-36475354-1"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', '<%= ENV['GA_TRACKING_ID'] %>');
</script>
<% end %> <% end %>
</head>
<body>
<nav class="navbar navbar-expand">
<div class="container">
<ul class="navbar-nav mx-auto">
<li class="nav-item">
<a class="nav-link" href="https://github.com/hakanensari/frankfurter">
<i class="fab fa-github fa-fw fa-lg"></i><span class="d-none d-sm-inline">Source</span>
</a>
</li>
<li class="nav-item">
<a class="nav-link" href="https://hub.docker.com/r/hakanensari/frankfurter/">
<i class="fab fa-docker fa-fw fa-lg"></i><span class="d-none d-sm-inline">Image</span>
</a>
</li>
<li class="nav-item">
<a class="nav-link" href="https://www.ecb.europa.eu/stats/exchange/eurofxref/html/index.en.html">
<i class="fas fa-file-alt fa-fw fa-lg"></i><span class="d-none d-sm-inline">Data sets</span>
</a>
</li>
<li class="nav-item">
<a class="nav-link" href="https://status.frankfurter.app/">
<i class="fas fa-signature fa-fw fa-lg"></i><span class="d-none d-sm-inline">Status</span>
</a>
</li>
</ul>
</div>
</nav>
<div class="content container">
<div class="logo">
<image src="/images/frankfurter.png" alt="">
</div>
<%= content %>
</div>
<div class="footer">
<div class="container">
<p class="small">
<i class="far fa-heart"></i> Frankfurter 2012-<%= Date.today.year %>
</p>
</div>
</div>
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/highlight.min.js"></script>
<script type="text/javascript" src="/javascripts/application.js"></script>
</body> </body>
</html> </html>