All Projects → zhangchiqing → beginner-friendly-haskell-for-web-development

zhangchiqing / beginner-friendly-haskell-for-web-development

Licence: other
A book about real world web development in beginner friendly Haskell

Programming Languages

haskell
3896 projects
Makefile
30231 projects
Dockerfile
14818 projects
shell
77523 projects

Projects that are alternatives of or similar to beginner-friendly-haskell-for-web-development

Heel2Toe
A beginner-friendly repository to get started with HTML, CSS, and JS.
Stars: ✭ 22 (-71.05%)
Mutual labels:  web-development, beginner-friendly
React-Messenger-App
A React powered Messenger App
Stars: ✭ 26 (-65.79%)
Mutual labels:  web-development, beginner-friendly
esri-leaflet-vector
Display ArcGIS Online vector basemaps w/ Esri Leaflet
Stars: ✭ 39 (-48.68%)
Mutual labels:  web-development
Deep-Learning-With-TensorFlow
All the resources and hands-on exercises for you to get started with Deep Learning in TensorFlow
Stars: ✭ 38 (-50%)
Mutual labels:  beginner-friendly
QuickLearn
A collection of resources categorised by tech domains, languages, expertise and much more. QuickLearn gives you a quick access to all the resources that you could need at a single place, within a click!
Stars: ✭ 89 (+17.11%)
Mutual labels:  beginner-friendly
software-systems-architecture
A collection of descriptions of the architecture that various systems use.
Stars: ✭ 24 (-68.42%)
Mutual labels:  web-development
Hacktoberfest2021
A community-led mentorship initiative to help beginners kickstarting their open-source journey by completing Hacktoberfest'21 challenge | Curated list of beginner-friendly issues for Hacktoberfest 2021 | Raise PR to add your issues
Stars: ✭ 830 (+992.11%)
Mutual labels:  beginner-friendly
learning-code-through-github-repos
This is a collection of GitHub repositories that you can use in your coding journey.
Stars: ✭ 82 (+7.89%)
Mutual labels:  beginner-friendly
password-keeper
A simple and secure Password Management System made completely in Python.
Stars: ✭ 26 (-65.79%)
Mutual labels:  beginner-friendly
Learning-Resources
This repository contains curated, useful resources drafted by DSC Domain Leads.
Stars: ✭ 21 (-72.37%)
Mutual labels:  web-development
p5js-snippets
p5js snippets for atom.io
Stars: ✭ 22 (-71.05%)
Mutual labels:  beginner-friendly
ninglex
Easy to learn, quick and dirty, bare-bones web framework for Common Lisp
Stars: ✭ 31 (-59.21%)
Mutual labels:  web-development
The-CP-Companion
Your ultimate destination for Competitive Coding this Hacktoberfest21
Stars: ✭ 21 (-72.37%)
Mutual labels:  beginner-friendly
Front-End-Checklist
🗂 Modern sitelerin titiz geliştiricileri için Front-End Checklist
Stars: ✭ 251 (+230.26%)
Mutual labels:  web-development
Awesome-Android-Open-Source-Projects
👓 A curated list of awesome android projects by open-source contributors.
Stars: ✭ 401 (+427.63%)
Mutual labels:  beginner-friendly
PySimpleGUI
Launched in 2018. It's 2022 and PySimpleGUI is actively developed & supported. Create complex windows simply. Supports tkinter, Qt, WxPython, Remi (in browser). Create GUI applications trivially with a full set of widgets. Multi-Window applications are also simple. 3.4 to 3.11 supported. 325+ Demo programs & Cookbook for rapid start. Extensive d…
Stars: ✭ 10,846 (+14171.05%)
Mutual labels:  beginner-friendly
learn-ngrok
☁️ Learn how to use ngrok to share access to a Web App/Site running on your "localhost" with the world!
Stars: ✭ 50 (-34.21%)
Mutual labels:  beginner-friendly
Hactoberfest-accepted
Raise Genuine PRs only. Your PRs will be accepted, keep patience.
Stars: ✭ 116 (+52.63%)
Mutual labels:  beginner-friendly
DevHelpBox
we are creating this community so that other developers can get benefits of it.
Stars: ✭ 35 (-53.95%)
Mutual labels:  web-development
Hacktoberfest
Hacktoberfest 2020 Beginner's Friendly Repository
Stars: ✭ 46 (-39.47%)
Mutual labels:  beginner-friendly

Beginner-friendly Real World Haskell Web Development

Why Haskell

Learning Haskell changed the way I think about programming. Objective-oriented programming taught me to think in terms of "object" with its mutable fields, and "methods" for their interactions between each other. In Haskell, I learned to think in terms of "data" and "functions" for data transformation. I found it's more straightforward and allows me to write less code.

Haskell is a static typed, pure functional language. While the functional programming allows you to reuse a lot of code for data transformation, the Haskell compiler also checks the types you defined for the data and the data transformation functions to catch mistakes before they get run.

Why this book

I think the best way to learn something is to use it in practice. There are many books about Haskell, but none that I found explained how to use it for real-world web development. Even after learning the language basics, it took a lot of effort to figure out how to solve the unique challenges that arise in web development.

For this book, I’ve designed a comprehensive real-world scenario to teach Haskell and how to build a web app with it. Haskell provides many paths to solve different challenges, but for this book, I’ve chosen the most beginner-friendly methods.

Choosing to go beginner-friendly is a tradeoff. Sometimes, the most efficient solution (the one that involves the least code) is not the easiest one. But a beginner-friendly approach is important for building things in a collaborative team setting.

Most Haskell books teach sophisticated features like monad transformer and advanced typeclasses, which are both great abstractions that allow you to reuse lots of code. However, they’re intimidating for beginners to understand and master in practice, and aren’t required to build a real-world web app.

So I decided to build a web app without using these advanced abstractions, only basic language building blocks, to keep the code accessible to beginners. I think beginners will better understand the point of those advanced abstractions by first building something without them, and then refactoring with them later on.

About you

This book is for people with basic knowledge of web programming. You should know how HTTP works and how SQL query works.

You don't need any knowledge of Haskell. This book teaches the language basics and uses that foundation to build a real-world web app.

Book structure

My goal is to show how to build a RESTful API for getting, creating, updating and deleting users from a PostgreSQL database.

Chapter 1. Getting Started

The first chapter shows how to set up the development environment and start a Haskell project.

Chapter 2. Functions

Chapters 2 through 4 cover the language basics and provide data structures with examples for modeling the user data.

Chapter 3. Recursion, Pattern Matching, Higher Order Functions

Chapter 4. Typeclass

Chapter 5. Configure

Chapter 5 introduces IO and how to parse an app's configuration.

Chapter 6. JSON

Chapter 6 introduces how to encode data type into JSON and how to decode JSON into our type.

Chapter 7. Strings

Chapter 7 introduces the difference between the various string types and their use cases.

Chapter 8. HTTP Client

Chapter 8 demonstrates how to build an HTTP client for sending HTTP calls and parsing the response.

Chapter 9. Database

Chapter 9 explains how to connect to a PostgreSQL database, how to migrate a database, how to make queries to create, retrieve, and delete a user.

Chapter 10. Error Handling

Chapter 10 introduces exceptions, how to handle exceptions from the database queries, and how to turn them into specific errors.

Chapter 11. HTTP Service

Chapter 11 shows how to set up an HTTP service and how to parse and validate the inputs. We will build endpoints for making database queries.

Chapter 12. Logging

Chapter 12 introduces loggings, how to log HTTP requests and responses, and how to log exceptions.

Chapter 13. Middlware

Chapter 13 explains how to create a middleware for adding a unique id to each request, and tie all the logs about a request and its response with that id.

Chapter 14. Testing

Chapter 14 introduces how to write tests for the functions for database queries and how to write integration tests for HTTP endpoints.

Chapter 15. Deployment

Chapter 15 shows how to build a docker container for the web app and deploy it to Heroku.

How to get this book?

Feel free to contact me if you are interested in this book: [email protected]

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].