30DayMapChallenge: a month of daily mapping prompts, and the site that serves them
Official repo for the #30DayMapChallenge data visualization project. Open to everyone!
At a glance
- What is it?
- The 30DayMapChallenge repository holds the thirty daily themes for a mapping challenge that runs every November, the site that publishes them, and the archive of past years. The rules are deliberately loose, no sign-up is needed, and the repository is a mkdocs project with a Python generator rather than a library anyone imports.
- Who is it for?
- 30DayMapChallenge suits a cartographer or data visualiser who wants a month of prompts that force them outside their default tool, and it suits anyone who wants a worked example of a small static site assembled from a data file rather than hand-written pages. It does not suit a project that needs a mapping library or a dataset, because the repository contains neither, and the themes alone do not make maps.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 6 days ago.
- What is it written in?
- Mainly Python, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on November 7, 2026, and from our analysis. They are not legal advice.
Star history
- tjukanovt/30DayMapChallenge901 ★ · +14
| Repository | 2026-10-21 | 2026-11-07 |
|---|---|---|
| tjukanovt/30DayMapChallenge | 887 | 901 |
14 Stars in the last 17 days, measured from the daily GitHub snapshot. Compare with other projects
Editorial analysis
A publishing rhythm rather than a software project
The project is a daily social mapping project that happens every November, and the official repository is for the #30DayMapChallenge, a daily mapping challenge open to everyone. The mechanics are simple. Every November, participants make one map a day for thirty days, each based on a different theme, and share them on social media using the hashtag. There are no restrictions on the tools, data or technologies you use, and doing fewer than thirty is also fine, and no sign-up is needed. Those three concessions do most of the work. The unstated purpose of a daily challenge is to force a person past the thing they always make, and a rule that says any tool and any data keeps the barrier low enough that the people who benefit from the constraint are the ones who take it up. The project also describes a spirit: you can prepare maps in advance, but the intent is to publish one on each themed day. The main site, 30daymapchallenge.com, holds the themes, community map collections and mapping resources in one place, and announcements also go out on the official LinkedIn page.
The 2026 themes move from geometry to senses
The thirty themes are published as a table in the repository and on the site, and reading them in order shows the shape of the month. It opens with three geometry days that are described as map challenge classics: points on the first, lines on the second, polygons on the third, and then clusters on the fourth, with the prompt being hotspots, groups and things that gather together. The fifth is Senses: Sight, asking how you see something, with a viewshed offered as a suggestion, and the sixth is Vintage, which asks you to spin up your time machine and make a map that looks historical. Day seven is a constraint rather than a subject, the 10 minute map, where you have no more than ten minutes to complete it. Day eight is Utopia, a map of something which could be, and day nine is Urban-rural, cities and countryside. The middle of the month turns to senses and to tools, with Senses: Sound on the eleventh asking how to map a soundscape, Power on the twelfth left deliberately open, Interactions on the thirteenth, and on the fourteenth a Borgesian map, so detailed it becomes the territory, inspired by Borges.
Two days that are really about process rather than geography
Two of the 2026 prompts stand out because they constrain how you work rather than what you map. The tenth is Prompting only, which asks you to make AI work for its money and produce something from start to finish in a chat window or on the command line. The sixteenth is Collaborative map, which asks for a map made with a friend, colleague or stranger, and adds the parenthesis that AI does not count as a friend. Put together, the two days are a statement about what the organisers think a personal mapping practice is for, and they set the two extremes of the range the challenge covers: the first is a day where the tool is the constraint, the second is a day where the tool is explicitly excluded. The rest of the month runs the other way, with the seventeenth playing with light and shadows, the eighteenth carrying the name NULL and no description at all, the nineteenth mapping what your nose can sense, the twentieth on hexagons and the good old bestagons, and the twenty-first on OpenStreetMap, which is also offered as a day to edit OSM rather than only to map from it.
The repository is a site generator, not a mapping library
What is actually in the repository is worth knowing before you clone it, because the name suggests something it is not. There is no mapping code and no dataset. The top level holds a README, a CNAME file for the custom domain, a mkdocs.yml, a requirements-mkdocs.txt, a main.py, a galleries.yml, a themes.ical, and directories for the docs, the includes, the scripts, the images, the archive and the .github workflows. The primary language of the repository is Python, and the presence of main.py alongside a mkdocs configuration is the tell: the themes are data that a script turns into pages, and mkdocs assembles those pages into the site. The includes directory is the part that makes this a template rather than a pile of pages, since the theme list, the header and the footers are pulled in as fragments, and the scripts directory holds the generation code. The archive directory holds themes from past challenges, which is what lets the site answer a question the current year cannot, namely what was the brief on a given day three years ago.
A calendar file and a gallery index, both hand-editable
Two small files carry a surprising amount of the logistics. themes.ical is an iCalendar file of the thirty themes that you can add to your own calendar, which turns the challenge from something you have to check every day into something that appears in your agenda, and it is the reason the README says to add the themes to your calendar. galleries.yml is the index of community map collections, and because it is a YAML file rather than a database, adding your own collection is a pull request rather than a form submission. The 30daymapchallenge.com/2026 page carries the same thirty themes, so the repository and the site are two views of one dataset. The split between them is the practical division: the repository is where the themes are versioned and where changes are proposed, and the site is where anyone can read them without a git clone. Themes from past challenges live in the archive directory, and the announcement channel for the current year is the LinkedIn page rather than anything in the repository, which tells you the repository is the durable record and the social channels are the running commentary.
The AI themes create a small contradiction in the rules
There is a tension in the 2026 theme list worth naming, because a participant will hit it. The tenth day asks for a map produced entirely in a chat window or on the command line, which is an AI day by another name, while the sixteenth explicitly excludes AI as a collaborator, with the smiley in the parenthesis making the exclusion look friendly. The rules also say there are no restrictions on the tools you use, which on a literal reading permits an AI-assisted map on the collaborative day. The honest reading is that the collaboration theme is about the social act of making a map with another person, and the parenthetical is the organiser's way of saying that an AI is not a person, so a day built around a conversation between two humans is not satisfied by prompting a model. Neither reading is stated as a rule, and the project does not publish a FAQ that settles it, so this is one of those things where a participant has to make a judgement call and, if the map is published, an implicit statement about how they read it. That is a good example of the format working as intended, since a prompt that provokes a discussion is doing its job.
What the project is for, and what it is not
It is easy to assume a repository called 30DayMapChallenge contains a mapping tool, and it does not. There is no library to install, no function to call and no data to download, and the MIT licence covers the site and the theme content rather than any mapping capability. The value is in the prompts and in the community output, and the second of those lives in the galleries the site collects, not in the code. What the repository offers to a developer is a small, readable example of how a themed content site is put together, with a Python script generating pages from structured data, mkdocs doing the assembly, a fragments directory for shared markup and an archive directory for versioning the content across years. The topics recorded for the project are geospatial visualization, gis, gis data and visualization, which is an accurate description of what the output is, and the last push was on 2026-10-16, which is in the middle of the run-up to the November challenge rather than after it.
Editorial conclusion
30DayMapChallenge suits a cartographer or data visualiser who wants a month of prompts that force them outside their default tool, and it suits anyone who wants a worked example of a small static site assembled from a data file rather than hand-written pages. It does not suit a project that needs a mapping library or a dataset, because the repository contains neither, and the themes alone do not make maps. Before you start, read the rules rather than the theme list, because the freedom to use any tool, to prepare in advance and to do fewer than thirty is what makes the challenge work, and check the archive directory for how previous years were run.
Frequently asked questions
What are the rules of the 30DayMapChallenge?
Make one map a day for thirty days, each based on a different theme, and share them on social media with the hashtag. There are no restrictions on the tools, data or technologies you use, doing fewer than thirty is fine, and no sign-up is needed. You can prepare maps in advance, but the spirit of the challenge is to publish one on each themed day.
When does the 30DayMapChallenge run?
It happens every November, one theme per day for thirty days. The 2026 themes are dated from 01-11-2026 onward and are published in the repository and on the site, and you can add them to your calendar with the themes.ical file in the repository.
What is in the 30DayMapChallenge repository?
Not a mapping library but the site that publishes the challenge: a mkdocs.yml, a requirements-mkdocs.txt, a main.py generator, a galleries.yml index of community map collections, a themes.ical calendar, and directories for the docs, the includes, the scripts, the images and the archive of past years. The CNAME file maps the custom domain.
Are AI tools allowed in the 30DayMapChallenge?
The general rules say there are no restrictions on the tools you use, and one 2026 theme is Prompting only, which asks for a map produced in a chat window or on the command line. The collaborative theme states that AI does not count as a friend, so a day built around making a map with another person is not satisfied by prompting a model.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/tjukanovt-30daymapchallenge)Star history chart for your README
[](https://hysenlabs.com/projects/tjukanovt-30daymapchallenge)Was this useful?