mirror of
https://github.com/hakanensari/frankfurter.git
synced 2024-11-25 12:32:30 +01:00
Improve SEO?
This commit is contained in:
parent
4df1d794c2
commit
1da5f39405
10
README.md
10
README.md
@ -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 |
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
|
@ -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>
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user