Skip to content

Releases: dedicatedcode/paikka

v1.1.5

14 Apr 04:36
97e976d

Choose a tag to compare

Hey paikka community! 🎉 I'm excited to announce the release of paikka v1.1.5! This update primarily focuses on enhancing the accuracy and robustness of address imports, especially concerning how building information from OpenStreetMap is processed.

What's Changed

I've made a couple of key improvements in this release:

Enhancements

  • Add y flag by @dgraf-gh in https://github.com/dedicatedcode/paikka/pull/33
    • This change introduces a new flag, -y, for the import scripts. When used, it allows the import process to skip a memory check that would normally require user input. This small but convenient addition simplifies running automated imports, especially in environments where continuous user interaction isn't feasible.

Bug Fixes

  • bugfix: included building ways in import service by @dgraf-gh in https://github.com/dedicatedcode/paikka/pull/34
    • This is an important fix that significantly improves how paikka handles address data from OpenStreetMap. Previously, paikka supported associating addresses to Points of Interest (POIs) where the POI was represented as a node located inside a building way (e.g., a multi-family house with multiple entrances where the building way defines the structure type and the node provides the specific address).
    • With this update, I've added robust support for building ways that contain address data directly, without necessarily having a node explicitly inside them. This means paikka can now correctly import and reverse geocode addresses for a broader range of OpenStreetMap data configurations, leading to more accurate results.

Full Changelog: v1.1.4...v1.1.5

Support & Community

I genuinely value your feedback and continued support! Here are a few ways you can connect with me and the reitti community:

  • ☕ Support My Work: If you find this project useful, you can help fuel future development by buying me a coffee on Ko-fi. Every bit helps!
  • 🐛 Report Issues: Encountered a bug or have a brilliant feature suggestion? Please don't hesitate to open an issue on GitHub Issues.
  • 🗣️ Discuss on Lemmy: Join the conversation or reach out on Lemmy. I love hearing from you there!
  • 💬 Connect on Reddit: Find me and discuss related topics, or just hang out, on Reddit.
  • #️ Join us on IRC: Come chat with us live in my IRC channel #reitti on libera.chat.

Happy geocoding!

v1.1.4

31 Mar 08:42
f81564b

Choose a tag to compare

PAIKKA 1.1.4 Release Notes

Summary

This v1.1.4 release focuses on enhancing transparency and data traceability within PAIKKA's API responses. While previous versions improved geocoding accuracy and data detail, this update introduces important metadata and attribution information, making it easier for you to understand the origin and freshness of your geocoded results.

What's New in PAIKKA 1.1.4

I've added key information to the API response, designed to give you more insight into your data:

  • API Response now Includes Data Attribution Links: To ensure full transparency and compliance, PAIKKA's API responses now include a dataSources field. This provides direct links to the copyright and attribution requirements for the underlying data sources, such as OpenStreetMap. This makes it straightforward to properly credit the data providers.

  • New Metadata for Enhanced Data Traceability: You'll now find a new metadata object within the API response. This object provides crucial details about the data used for geocoding, helping you understand its recency and origin:

    • importTimestamp: When the data was last imported into PAIKKA.
    • file: The name of the source data file used.
    • paikkaVersion: The version of PAIKKA that processed this specific import.
    • dataVersion: A specific identifier for the imported data's version.
    • gridLevel: The grid level at which the data was processed.

    This metadata ensures you have a clear picture of the age and origin of the data powering your geocoding requests.

Here's an example of how these new fields appear in the API response:

{
  "metadata": {
    "importTimestamp": "2026-03-29T11:20:22.943877678Z",
    "file": "germany-filtered.pbf",
    "paikkaVersion": "1.0.0",
    "dataVersion": "20260329-112022",
    "gridLevel": 12
  },
  "query": {
    "lat": 43.728383,
    "lang": "de",
    "limit": 10,
    "lon": 7.417201
  },
  "count": 0,
  "results": [],
  "dataSources": {
    "OpenStreetMap": "https://openstreetmap.org/copyright"
  }
}

A Heartfelt Thank You!

Please try out PAIKKA 1.1.4 and let me know your thoughts. If you find any new issues or have ideas for future features, the GitHub repository is always the best place to reach me.

Happy geocoding!

Best,

Daniel

v1.1.3

30 Mar 02:16
60fb7a3

Choose a tag to compare

PAIKKA 1.1.3 Release Notes

Summary

This v1.1.3 release significantly enhances PAIKKA's ability to precisely identify and detail addresses, particularly concerning buildings and their associated information. While previous versions focused on stability and data cleanliness (and those improvements are, of course, retained!), this update introduces a key improvement in how building geometries and address nodes are processed, leading to more comprehensive and accurate geocoding results.

What's New in PAIKKA 1.1.3

I'm excited to share a major enhancement in how PAIKKA handles addresses, especially in relation to physical buildings:

  • Enriched Building and Address Node Support: Previously, address information might primarily come from individual nodes, which are often distinct from the actual geometric boundaries of a building. This could sometimes lead to gaps in understanding the full context of an address (e.g., what type of building it is).
    • How it Works Now: To provide a richer dataset, PAIKKA now comprehensively stores all building geometries (building ways) as separate entities. At query time, these building geometries are intelligently combined with data from their associated address nodes. This dynamic linking allows for a much more detailed and accurate representation.
    • What This Means For You: You'll now receive geocoding results that include:
      • More comprehensive address coverage: Expect to find addresses for more locations, as the system can effectively link address nodes to their structural contexts.
      • Accurate building types and subtypes: For any given address, PAIKKA can now confidently return the correct building type (e.g., residential, commercial) and subtype (e.g., detached, apartment, shop), providing invaluable context that was previously harder to derive precisely. This makes your geocoded data much more informative and granular, enabling richer applications and analyses.

A Heartfelt Thank You!

Please try out PAIKKA 1.1.3 and let me know your thoughts. If you find any new issues or have ideas for future features, the GitHub repository is always the best place to reach me.

Happy geocoding!

Best,

Daniel

v1.1.2

15 Mar 10:56

Choose a tag to compare

bugfix: added support for all boundaries to fix adress resolution and assiociation to administrative boundaries

Full Changelog: v1.1.1...v1.1.2

v1.1.1

14 Mar 07:20
433feea

Choose a tag to compare

PAIKKA 1.1.1 Release Notes

Summary

This v1.1.1 release is a fine-tuning update, focusing on stability and data cleanliness. While it doesn't introduce major new features, it addresses a couple of small but important issues that enhance the reliability and clarity of your geocoding results.

What's Improved in PAIKKA 1.1.1

I've focused on two key areas for this micro-release:

  • Fixed Missing Hierarchy Elements: You might have noticed some gaps occasionally in the hierarchy data returned for a geocoded point – sometimes a specific administrative boundary (like a district or a town's sub-region) might have been missing even when it should have been there. I've tracked down and fixed a bug that was causing some of these elements to disappear. Now, your hierarchy results should be more complete and accurate, giving you a fuller geographical context!
  • Removed Redundant query Element from POI Results: For a bit there, each individual POI item within the geocoding response included a redundant query field. This wasn't strictly necessary and just added extra data to the response that wasn't unique to that specific POI. I've cleaned this up, making your API responses slightly leaner and easier to parse. It's a small change, but it makes the data structure cleaner.

A Heartfelt Thank You!

Please try out PAIKKA 1.1.1 and let me know your thoughts. If you find any new issues or have ideas for future features, the GitHub repository is always the best place to reach me.

Happy geocoding!

Best,

Daniel

v1.1.0

06 Mar 14:04
86141c8

Choose a tag to compare

Hello everyone,

Hope you're all doing great! I'm back so soon because I've just published PAIKKA v1.1.0! I know it feels like just yesterday we celebrated the 1.0 release, but I've managed to squeeze in a small, yet impactful, feature that I think many of you will appreciate.


PAIKKA 1.1.0 Release Notes

Summary

PAIKKA continues its journey as my specialized reverse geocoding service, built with efficiency and meaningful results in mind, especially for anyone interested in personal location data like with Reitti. This v1.1.0 release brings a focused improvement, enhancing the data provided for your geocoded locations.

What's New in PAIKKA 1.1.0

The main focus of this release is a small but really useful addition to the geocoding results:

  • country_code in Hierarchy Items: Now, when you perform a reverse geocoding request, the hierarchy items in the response will include a country_code field if that information is available in the OpenStreetMap data for that specific administrative boundary.
    This means you'll get a standardized, two-letter ISO 3166-1 alpha-2 country code directly alongside other administrative details (like state, county, city). This should make it much easier to filter, sort, or process results based on country, directly from the structured hierarchy.

    Example Snippet (Illustrative):

{
 "query": {
   "lon": 7.426712,
   "limit": 1,
   "lang": "en",
   "lat": 43.740382
 },
 "count": 1,
 "results": [
   {
     "id": 157719659,
     "lat": 43.740383,
     "lon": 7.4266815,
     "type": "leisure",
     "subtype": "park",
     "distance_km": 0.0,
     "names": {
       "default": "Jardins de la Petite Afrique",
       "ko": "작은 아프리카 정원"
     },
     "display_name": "Jardins de la Petite Afrique",
     "address": {
       "country": "MC",
       "city": "Monte-Carlo"
     },
     "hierarchy": [
       {
         "level": 2,
         "type": "administrative",
         "name": "Monaco",
         "osm_id": 1124039,
         "country_code": "MC",
         "geometry_url": "http://localhost:8080/api/v1/geometry/latest/1124039"
       },
       {
         "level": 8,
         "type": "administrative",
         "name": "Monaco",
         "osm_id": 2220322,
         "country_code": "",
         "geometry_url": "http://localhost:8080/api/v1/geometry/latest/2220322"
       },
       {
         "level": 10,
         "type": "administrative",
         "name": "Monte-Carlo",
         "osm_id": 5986438,
         "country_code": "",
         "geometry_url": "http://localhost:8080/api/v1/geometry/latest/5986438"
       }
     ],
     "boundary": {
       "type": "Polygon",
       "coordinates": [
         [
           [
             7.425781700000001,
             43.7405601
           ],
           [
             7.4260567,
             43.7409672
           ],
           [
             7.4263418,
             43.7408452
           ],
           [
             7.426474700000001,
             43.7409486
           ],
           [
             7.426830900000001,
             43.7407003
           ],
           [
             7.4273037,
             43.7404771
           ],
           [
             7.427460900000001,
             43.740402800000005
           ],
           [
             7.427551200000001,
             43.7403107
           ],
           [
             7.4275814,
             43.7402207
           ],
           [
             7.427515100000001,
             43.7400643
           ],
           [
             7.4272815,
             43.739834
           ],
           [
             7.4272339,
             43.739795900000004
           ],
           [
             7.427164,
             43.7398085
           ],
           [
             7.426375500000001,
             43.740245200000004
           ],
           [
             7.425781700000001,
             43.7405601
           ]
         ]
       ]
     },
     "query": {
       "lat": 43.740382,
       "lon": 7.426712,
       "lang": "en"
     }
   }
 ]
}

Core PAIKKA Philosophy (Still Strong!)

The underlying principles of PAIKKA remain as strong as ever: tailored reverse geocoding, intelligent boundary awareness, planet-scale efficiency on modest hardware, and an opinionated approach to POI selection, all delivered via a fast REST API and robust data preparation tools.

Getting Started with Your Own Instance

For anyone wanting to run their own, the process is the same as with 1.0, and I still highly recommend it for heavy usage:

  1. Make sure you pull the latest image:
    docker compose pull
  2. Then, simply update your running service:
    docker compose up -d
    (Or follow the initial setup steps from the previous release if you're new!)

What's Next?

With v1.1.0 out the door, I'll be dedicating some more time to Reitti again. PAIKKA's development will continue, of course, but probably at a slightly slower pace for a bit. There's always more to do, and I'm always thinking about future improvements!

A Heartfelt Thank You!

Please try out PAIKKA 1.1.0, give the new country_code field a spin, and integrate it into your projects. If you find any issues or have ideas for future features, the GitHub repository is the best place to reach me.

Happy geocoding!

Best,

Daniel

v1.0.0

03 Mar 11:19
90ffb7d

Choose a tag to compare

PAIKKA 1.0.0 Stable Release

Hello everyone,

A month ago, I grabbed my laptop at 2 a.m. to start throwing together a quick reverse geocoder for my personal location tracking app Reitti. I was fed up: every off-the-shelf geocoding tool I tried was either too slow for real-time GPS pings, ate up far too much server disk and RAM for my small home setup, or was missing the critical hierarchical neighborhood/city/country data I needed to turn raw latitude/longitude pairs into actual, useful place names. Today, I’m over the moon to officially announce the first stable 1.0 release of that project: PAIKKA.


Summary

PAIKKA—named for the Finnish word for "place", pronounced [ˈpɑi̯kːɑ] is a specialized reverse geocoding service built entirely to solve exactly those pain points. I designed it to transform raw GPS coordinates into human-readable, contextual location data, with a laser focus on performance, resource efficiency, and clean, minimal deployments. This 1.0 release is a polished, production-ready foundation that’s ready to power your own hobby projects, self-hosted tracking apps, or even small-scale commercial tools.


Key Highlights of PAIKKA 1.0

Core Functionality & Opinionated Design
  • Tailored Reverse Geocoding: Built from the ground up for personal tracking use cases, PAIKKA skips the bloat of generic geocoders to deliver fast, relevant results for real-time location data.
  • Boundary Intelligence: One of my favorite features of PAIKKA is that it includes hierarchical administrative location data—so you’ll get not just a street name, but the neighborhood, city, region, and country tied to any coordinate, when that data is available in your source OpenStreetMap file. Unlike many lightweight geocoders, we don’t strip out this critical context.
  • Planet-Scale Efficiency: PAIKKA is engineered to handle even the full global OSM planet dataset, with optimized imports and compact stored data that works on surprisingly modest hardware.
  • Curated POI Selection: To keep datasets lean and queries fast, PAIKKA intentionally filters Points of Interest during import, only pulling in significant tags like amenity, shop, tourism, public_transport, and healthcare—we explicitly skip minor features like street trees, trash cans, and residential buildings. If you need full, unfiltered OSM coverage, Nominatim is the perfect tool for your project; this was never PAIKKA’s intended purpose, and I don’t plan to expand it to cover every single OSM feature.
  • Full API & Admin Dashboard: PAIKKA ships with a straightforward REST API for geocoding queries and OSM geometry lookups, plus a password-protected admin dashboard at /admin/stats to monitor service health and query performance.
Blazing-Fast Performance & Scalability
  • Low-Latency Lookups: Powered by $S2$ Geometry spatial indexing, RocksDB embedded storage, and FlatBuffers serialization, most reverse geocoding queries finish in under 10ms—perfect for real-time location tracking on mobile devices.
  • Flexible Dataset Sizing: Whether you’re running a regional extract for a single country or the full global planet dataset, PAIKKA is built to scale to your needs. My own benchmarking on a Ryzen 7 5825U desktop shows the full Germany dataset imports in ~18 minutes, while the full planet file takes ~85 hours with proper hardware tuning.
  • Resource Efficient: PAIKKA was built to avoid the massive infrastructure overhead of other geocoding tools. You can run a production instance on a $5/month cloud VM with 2GB of RAM and a fast SSD.
Easy Deployment & Tooling
  • Streamlined Data Prep: Official helper scripts like ./scripts/filter_osm.sh and ./scripts/import.sh handle all the heavy lifting of filtering OSM PBF files and importing them into PAIKKA’s optimized storage format.
  • Docker-First Support: Every part of PAIKKA’s workflow is fully containerized, with official Docker Hub images for data prep, import, and production service runs. Detailed instructions for both docker run commands and Docker Compose make deployment a breeze.
  • Full Configurability: Tweak every part of PAIKKA’s behavior via environment variables or application properties, from import thread counts and $S2$ indexing levels to API result limits and logging levels.
  • Built-In Monitoring: Official health check endpoints at /api/v1/health make it easy to integrate PAIKKA with your existing monitoring stack.

Try PAIKKA For Free (My Public Instance)

If you want to kick the tires without spinning up your own server, I’ve launched a free public PAIKKA deployment at https://geo.dedicatedcode.com/!

This instance runs on the full global OSM planet dataset, so you can query valid location data for coordinates anywhere across the world. It’s completely free to use for hobby projects, testing, and tinkering, but a few important notes:

  • This is a personal instance I run out of my own pocket, so there is no official Service Level Agreement (SLA) for uptime or performance. I’ll do my best to keep it online, but please use it responsibly.
  • I’ve also planing to open up the public admin stats dashboard so you can see query volumes, usage trends, and all that fun data, and I absolutely want to make that happen down the line. But right now, my top priority is wrapping up long-overdue new features for Reitti, so that public stats page will have to sit on the backburner for a few months. Please bear with me!

First you’ll need to import some OSM data. Check the official project README for detailed steps to download, filter, and import OSM PBF files, either directly or via Docker. For a quick regional example, you can run:

# Download Germany's latest OSM extract
wget https://download.geofabrik.de/europe/germany-latest.osm.pbf

# Filter and import the dataset
docker run -v ./:/data dedicatedcode/paikka prepare germany-latest.osm.pbf germany-filtered.osm.pbf
docker run -ti -v ./:/data dedicatedcode/paikka import germany-filtered.osm.pbf

Get Your Own PAIKKA Instance Running

For heavy usage or full control, I highly recommend running your own PAIKKA instance. The easiest way to get started is with Docker Compose:

  1. Download the official docker-compose.yml file:
    curl -O https://raw.githubusercontent.com/dedicatedcode/paikka/main/docker-compose.yml
  2. Create a .env file to set your admin password and other configs:
    ini ADMIN_PASSWORD=your-secure-admin-password-here BASE_URL=https://your-paikka-domain.com
  3. Create persistent data directories:
    mkdir -p paikka-data paikka-stats
  4. Start the service:
    docker compose up -d

What’s Next for PAIKKA?

This 1.0 release is a solid, stable foundation for PAIKKA, but I’ve already got a long list of features planned for future releases:

  1. Speedier Imports: The full planet dataset still takes a lot of time. Over the next weeks/months I will try to improve that.
  2. Distributed Deployment Support: Run PAIKKA across multiple servers for even higher scale.

Over the next few months, my focus will shift back to wrapping up major new features for Reitti, so PAIKKA development will slow down a bit—but I’ll still review pull requests and fix critical bugs as quickly as I can.


Get Help & Contribute

PAIKKA is licensed under the GNU Affero General Public License v3.0 (AGPLv3), so you’re free to use, modify, and redistribute it as long as you share any modified versions under the same license.

If you run into bugs, have feature requests, or want to show off what you’ve built with PAIKKA:

  • Open a GitHub Issue for bug reports and feature requests
  • Chat with me and other community members in #reitti on irc.dedicatedcode.com
  • Follow me on Lemmy for updates about PAIKKA and Reitti

Pull requests are always welcome! If you’ve got a bug fix or small feature you’d like to contribute, please open a PR—I’d love your help making PAIKKA better.


A Final Thank You

I can’t wait to see what you build with PAIKKA—whether it’s a personal fitness tracker, a hobby mapping project, or something totally new and creative. Happy geocoding!

Best,
Daniel
dedicatedcode