Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/jonathanlinat/simple-nominatim

✨ Monorepo of tools crafted to seamlessly integrate with the Nominatim API (pnpm and Node environments).
https://github.com/jonathanlinat/simple-nominatim

api geocoding javascript monorepo node nominatim openstreetmap pnpm reverse search status workspace

Last synced: 21 days ago
JSON representation

✨ Monorepo of tools crafted to seamlessly integrate with the Nominatim API (pnpm and Node environments).

Awesome Lists containing this project

README

        


Simple Nominatim Logo

Simple Nominatim

This is a monorepo packed with bespoke tools crafted to seamlessly integrate with the [Nominatim API](https://nominatim.org/release-docs/develop/api/Overview/).

> **Disclaimers**
>
> The utilization of this project is governed by the [Nominatim Usage Policy (aka Geocoding Policy)](https://operations.osmfoundation.org/policies/nominatim/). Please adhere to fair usage practices as outlined by the [OSMF Operations Working Group](https://operations.osmfoundation.org/).
>
> The owner and contributors of the **Simple Nominatim** project, including its libraries, assume no responsibility for any misuse.

## Usage

> **Simple Nominatim** currently only supports the [Search](https://nominatim.org/release-docs/develop/api/Search/), [Reverse](https://nominatim.org/release-docs/develop/api/Reverse/) and [Status](https://nominatim.org/release-docs/develop/api/Status/) endpoints.

For detailed instructions on how to use the tools, navigate to the `./packages` directory and consult the corresponding **README.md** file associated with each package.

- **Simple Nominatim Core**
* GitHub: [README](https://github.com/jonathanlinat/simple-nominatim/tree/main/packages/core#readme)
* npm: [@simple-nominatim/core](https://www.npmjs.com/package/@simple-nominatim/core)
- **Simple Nominatim CLI**
* GitHub: [README](https://github.com/jonathanlinat/simple-nominatim/tree/main/packages/cli#readme)
* npm: [@simple-nominatim/cli](https://www.npmjs.com/package/@simple-nominatim/cli)

## How to Contribute

### Pre-requisites

Before you can modify the source code and test the application locally, ensure you have the following tools/packages installed:

- **Git**: [Download Git](https://git-scm.com/)
- **Node.js (v20.x)**: [Download Node.js](https://nodejs.org/dist/latest-v20.x/) or use [NVM](https://github.com/nvm-sh/nvm) for version management
- **pnpm (v8.15.8)**: [Install pnpm](https://pnpm.io/installation#installing-a-specific-version)

### Coding Standards & Tools

To maintain code quality and consistency, this project adopts various linting, formatting and automated tools.

- **Changesets**: A tool that manages versioning and changelog generation with a focus on multi-package repositories.
- **Commitlint**: Enforces a consistent commit convention, which helps in generating changelogs and navigating the history.
- **ESLint**: Analyzes the JavaScript code for potential errors and deviations from coding standards.
- **Lint Staged**: Runs linters on pre-committed code in git. Ensures you're only committing files that meet your linting criteria.
- **Markdownlint**: Lints the Markdown files to ensure consistent and correct Markdown syntax.
- **Prettier**: An opinionated code formatter that enforces a consistent style by parsing code and reprinting it.
- **Simple Git Hooks**: Provides tools to set up Git hooks to automate tasks like running linters before commits.
- **Turborepo**: A high-performance build system for JavaScript and TypeScript monorepos, optimizing task execution across workspaces.
- **Unbuild**: An unified and simplified JavaScript build system.

It's recommended to familiarize yourself with these tools, their configurations, and the associated NPM scripts to ensure smooth contribution and integration within the project.

### Setting up the Project

1. Clone the repository to your local machine:

```bash
$ git clone [email protected]:jonathanlinat/simple-nominatim.git
```

```bash
$ cd simple-nominatim/
```

2. Once inside the project directory, install the required dependencies:

```bash
$ pnpm install
```

## License

**Simple Nominatim** is [MIT licensed](LICENSE).