18 blog posts

Posted on Dec 27, 2018 by Alexej Bondarenko

Gitlab is a very flexible and fantastic alternative to classic CI servers. Nevertheless it is sometimes a bit tricky to set up. Hence, in this blog post we will cover a basic set up to build, test and deploy a Yesod application.

Posted on May 7, 2018 by Alexej Bondarenko

Visual Studio Code is a great customizable IDE. There are even good tools for Haskell support. Unfortunately there is no Yesod extension yet which could support the hamlet file extension. In this blog post we will see how to enable *.hamlet file extension support in VS Code.

Posted on Apr 10, 2018 by Alexej Bondarenko

To display the version of your Yesod application is pretty simple. In this blog post you will learn the trick how to achieve this.

Posted on Nov 12, 2017 by Alexej Bondarenko

Yesod has a nice feature to define database models. It uses the persistent library to migrate your database to a state which fits your defined application models. This is true for very new project setups. With time, your project will evolve and change. For this case, there is no nice solution in Yesod. For instance, if you add a column which is mandatory, Yesod is not able to migrate since it does not know what to do with existing data. In this blog post, we will present one possible migration path at the application start.

Posted on Nov 1, 2017 by Alexej Bondarenko

In this blog post we will have a look at Googles reCaptcha v2 integration in Yesod. With this you can secure your (classic) forms from bots.

Posted on Feb 22, 2017 by Alexej Bondarenko

Yesod is a great Framework, especially in terms of RESTful designed applications. In this blog post, we will cover a more specific topic on how to create a simple CSV file and return it to the client.

Posted on Feb 18, 2017 by Alexej Bondarenko

Any reasonable web project also contains an area to upload (media) files. It can be an administration area or just for users who can upload their profile picture. In this blog post, you will learn how to upload a file and save it on the server so your application can use it and serve the file to the user.

Posted on Jan 3, 2017 by Alexej Bondarenko

The Yesod devel library already improved a lot during the last years. But still, type safety comes with a drawback sometimes. Since Yesod also secures the static files and how they are included your project, the process can slow down in compile time. We will look at this in this blog post.

Posted on Dec 3, 2016 by Alexej Bondarenko

In this blog post, you will learn how to create simple seed data for your Yesod application. Such seed data can be useful during development or if you plan to run your tests against test data.

Posted on Nov 28, 2016 by Alexej Bondarenko

In this blog post you will learn how to add a simple twitter summary card meta tags to your pages. We will discuss different content types and optional description values as well.

Posted on Nov 22, 2016 by Alexej Bondarenko

Adding, modifying and removing records in a database (like Postgres) is a very common use case. Usually we perform single actions to a single record. In this tutorial we would like to show how to perform a set of actions in one transaction, so all of them are applied or none in a case of failure.

Posted on Nov 2, 2016 by Alexej Bondarenko

In this post, you will learn how to tell Yesod to prefix static content with a CDN location instead of the usual /static path.

Posted on Oct 26, 2016 by Alexej Bondarenko

A common task in SEO optimization is adding/configure meta tags. Some of them can improve page ranking. In Yesod, this task is not supported from scratch (like setTitle is). In this post, we will talk about how to add meta tags to your Yesod web project.

Posted on Oct 21, 2016 by Alexej Bondarenko

To help search engine bots to crawl the content of your web page you can provide a sitemap.xml. In this tutorial you will learn how to create a dynamic sitemap.xml for small (or mid size) pages in Yesod.

Posted on Oct 15, 2016 by Alexej Bondarenko

The default scaffolded Yesod project already comes with built-in Google Analytics integration. But what if you would like to use the open source product Piwik? In this blog post you will learn how to add Piwik tracking to your application.

Posted on Oct 10, 2016 by Alexej Bondarenko

As I work more and more with Yesod (which is written in Haskell) I encounter one major problem: documentation. It costs a ton of time to figure out how to do things properly. One good example is pagination. In this post I'll describe my way from a naive approach to a final monadic solution.

Posted on Sep 29, 2016 by Alexej Bondarenko

The Yesod book contains only sparse information on how to handle relations. In many cases only 1:n relations are used, which are easy to understand and to load. In this blog post we will have a look at m:n relations and how to load related content with the Esqueleto library.

Posted on Sep 25, 2016 by Alexej Bondarenko

Most bigger web projects require different Layouts. This can be special Login-, Landing- or Administration-Pages. In this tutorial you will learn how to organize the Layouts and use them in the Yesod web framework.