Web Analytics

Upcoming features: user accounts & projects

In this post, I'm opening the doors to the construction site of MapStyler. Giving you a sneak peek at the new features that are on their way.

Upcoming features: user accounts & projects

It's been a while since my last update on MapStyler, but the figure below shows just how much has been happening behind the scenes. March, May and June were especially productive months, with around 90% of my GitHub commits going into the MapStyler repositories.

In this post, I'm opening the doors to the construction site of MapStyler. Giving you a sneak peek at the new features that are on their way.

But first, epic adventures

You might have noticed the lack of recent commit activity. In July and August. What happened there? Well, the summer, the outdoors, adventure and even a wedding of a friend were calling. We packed our car with the bikepacking gear and travelled North. To Denmark. To the start of our 4 week cycling tour through the Southern lands of Sweden.

Over 1,700 km, we followed the coastline, navigated dirt tracks into endless forests, and rode gravel roads leading to romantic villages. We moved from wild camp to wild camp, from one nature reserve to the next. Most of the journey was on our bikes, but at times we crossed vast lakes and seas by canoe and kayak. We watched so many sunsets, it seemed as if the world has more than one sun.

How cool would it have been if I could show you a map of our route using MapStyler?

It was a trip full of memories to treasure. And now, back behind the computer, it’s time to carry that energy into the next phase of MapStyler development.

Back to the construction site.


The tour on the construction site will cover the following sections:

Projects

Up to now, MapStyler only allows creating styles from scratch, which works well. However, I often find myself wanting to edit a style I’ve already created. Currently, the only way to do that is to rebuild the style from the beginning. That's fine for simple styles and small datasets, but will inevitably become tedious whenenver styles become more complex.

What I really need is a way to save my styles. I want to reopen a style, tweak and edit it to my likings. With that in mind, I decided to introduce the concept of projects.

  • Each style is saved as a project
  • A project has a name and a short description
  • A project can consist of multipe styles
  • Once logged in, you immediately see your projects list
  • Clicking on a project will open the editor
0:00
/0:11

Demo of the projects concept.

User accounts

Introducing projects also means introducing user accounts. To support this, I had to build a backend that handles authentication, authorization, and the management of both users and projects.

You may have noticed that this feature is already live, but without a registration option. That’s because I’m still testing the user experience, technology, and server load. I’ll be rolling it out gradually to people who are interested in trying it early. If you’d like early access, just send me a message.

The user accounts will also play an important role for some future ideas I have. One of them is offering styles (and even maps) as a service. Instead of just downloading your styles, you'll be able to access them through an API - making it much easier to integrate them in your own apps. More on that later.

Support for multiple datasources

In the upcoming version, you’ll be able to add multiple data sources to a project. This makes it possible to style several datasets at once—very useful when you want to visualize different datasets together on a single map.

Good styling is essential for map readability. When styling datasets one by one, it’s hard to judge whether their styles match or complement each other. I often found myself exporting a style countless times just to check if it worked alongside another dataset—super frustrating. With the new version, you’ll be able to style all relevant datasets directly within one map view.

Once you’re done styling, you can hit the download button. This will generate separate style JSONs for each data source. Technically - but not yet implemented - it is also possible to merge them into a single style JSON, since the specification supports that. This would be especially useful if you want to build a style for a complete standalone map rather than just for a single dataset. This is a feature for the future.

0:00
/0:15

Demo of adding additional datasets to your project.

Backend, hosting and technical debt

Until now, MapStyler was purely a frontend web application, with all processing and logic happening client-side. With the introduction of user accounts and projects, however, the app needed a proper backend service, a database, and more. Something as simple as adding a save button brought a significant increase in complexity.

Up to this point, I deployed updates manually. But as the number of components to manage kept growing, it became clear that I needed to level up my deployment process. That’s where much of my development time has gone over the past months.

In the spirit of supporting European IT companies, I decided to move the entire stack to Coolify. This is an open-source, self-hosted platform-as-a-service. The setup works really well: whenever I push to the deployment branch on GitHub, a new version is live on the server within minutes. That is, if things don't crash.

Crashes do happen, unfortunately. My server is lacking some power, just like my budget for servers is lacking some currency. Nevertheless, this is a big step forward in making deployments smoother and more reliable. The currency vs power equation needs to be researched.

I have also spend some hours on technical debt. The frontend has been upgraded from Vue2 to Vue3. Which is nice, but not directly relevant for the users.

What's next?

Good question! I do try to plan ahead, but often I decide on the next step as I go. Since I mainly use MapStyler for my own projects, new requirements and ideas tend to pop up along the way.

Once the features mentioned above are wrapped up, I want to explore adding support for more data sources. PMTiles is high on that list. I also plan to improve the VectorTile importer, which is currently quite buggy and unreliable. The challenge here is that, while VectorTiles are based on a standard, the implementations vary widely. This makes it tricky to build a generic component without forcing users to deal with too many technical details.

Another feature high on my list is the integration with MapTiler. Mainly for their beautiful vectortile basemaps. The integration should allow you to bring your own basemaps and enhanze your visualizations.

I’m also rethinking how data styling works. Right now, it involves a lot of clicking and manually choosing colors. I’m exploring a more intuitive approach, and I have some ideas—though they haven’t fully materialized yet.

And there are plenty more ideas. Too many to list here. Let's first finish the features mentioned above.

If you have any ideas, wishes, comments or requests, I'd love to hear from you! I've noticed a lot of weekly activity, and even returning visitors. I'm really curious what brought you here, and what your thoughts are.

Drop me a comment under this post, add an issue on Github or connect with me on Mastodon