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.
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.
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
- 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…
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.