Building a File Hosting Service in Yesod

As of March 2020, School of Haskell has been switched to read-only mode.

These tutorials, written by Michael Steele, walk through the process of building a file sharing/hosting service using the Yesod framework. The example application from this tutorial stores file information in memory, so it will lose information on restart, and will fail on large files.

  • School of Haskell

    Part 1 25 Feb 2015School of Haskell

    This tutorial is the first in a series of 4 tutorials on how to build a file hosting service using Yesod. Site visitors will be able to upload collections of files, and later download those same files to a different computer. We'll touch on issues you will likely encounter when writing any web app such as HTML generation, styling, maintaining application state, and managing form data. Author: Michael Steele
  • School of Haskell

    Part 2 19 Aug 2013School of Haskell

    This is part 2 of a series where we develop a file hosting web application. In the previous entry everything was contained within a single source file, but the final application will be too large for this. We will also want the flexibility of separating the web content from the service itself. Author: Michael Steele
  • School of Haskell

    Part 3 15 Dec 2014School of Haskell

    This is part 3 of a series where we develop a file hosting web application. We ended the previous entry with the ability to upload files, but only their names were stored. Today we are going to store file contents as well. A summary page for each file will display the contents if possible. The ability to download files from the server will be added next time. Author: Michael Steele
  • School of Haskell

    Part 4 15 Dec 2014School of Haskell

    This is the fourth and final entry in a series where we write a file serving web application from start to finish. Today we're going to add two user-facing features. One of these will be an addition to the preview page so that images can be viewed. The other will be to place a download link on the preview page. Author: Michael Steele