Mint - A refreshing programming language for the front-end web
Tags: mintlang, webdev
Published: 2018-07-11 14:46:55

---
title: Mint - A refreshing programming language for the front-end web
published: true
description: 
tags: mintlang, webdev
---

_TL;DR: Mint is a typed programming language which compiles to JavaScript for building single page applications. https://www.mint-lang.com_

## Why?

The first obvious question is: **why build another programming language that compiles to JavaScript?** To answer that question we should look at how front-end development could be done in an ideal world.

------

Imagine that you sit down before your computer in the morning and start working on the project that has gone on for a while. It’s not a big project so to speak, it’s just the front-end of some business that sells stuff, it connects to an API to get the data and display it for the user.

You `cd` into the project directory and start it up with a single command. After a second or two, you open up your editor and your browser and are ready to implement a new feature.

You start working on it, and make some mistakes, which is not a big deal because the compiler shows you these awesome error messages that enables you to fix them quickly.

Changes you make are compiled quickly, so you are making good progress, but as it happens you need a third party package to complete the feature, you look it up on-line, add it to your projects dependencies and install it with a single command and are ready to go.

After that you need to look up the documentation for a function that is needed for the feature, you start the documentation server of the locally installed packages and open it up in the browser, after a minute or so you have successfully found what you need.

After business logic is finished, you add some styling to the components you have created, easily and without hassle because it’s part of the language.

At the end of the day, you write some tests for it and run in different browsers to make sure that is all good. Then you document your code with some comments, format it with the build in formatter and the feature is ready to go.

As you commit and push your changes, you look back on the day, pleased that no big issues came up and you were able to finish the feature quickly, but it does not surprises you because most days are like that.

-----

Sadly the current development process is not really like that, but it could be. In short, the goal of Mint is to give you that experience.

# What is Mint?

Mint is programming language and a framework which offers a complete package for writing single page applications.

It has the following language features:

* Everything is **typed** using a simple type system
* **200+ unique error messages** to help you on the way
* Everything is an **expression**
* **Components** are the building blocks of the language
* **HTML** can be written with minimal differences
* Scoped **CSS** can be written for elements in components
* **Modules** for organizing functions
* **Stores** to handle data which can be connected to components
* **Routes** can be defined inside the application
* Easy JavaScript interoperability
* Constructs for **synchronous and asynchronous** computations
* and much more…

The language has the given tools built in:

* A command to initialize your application/package
* A **decentralized package manager**
* A **development server** which reloads when files are changing
* A **formatter** that formats your code in a unified style
* A **testing system** which runs in headless browsers
* A server to browse the documentation of the used packages
* A **build system** to produce production ready files
* and many more…

## Mint vs X?

At this point you might wonder how Mint compares to other languages / frameworks such as TypeScript or Elm or Vue, this post is not about that. There will be a series of articles comparing them with Mint.

-------

This post aims to give you a sense of what Mint is. Keep an eye on this space for more posts about the features of Mint which will describe them in detail.

Website: https://www.mint-lang.com
Github: https://github.com/mint-lang/mint
Source code of the website Mint: https://github.com/mint-lang/mint-website