Nimiq Map Directory Backend - Bounty

Dear Nimiq Community. We are looking for a developer who meets the following criteria and has time to develop this project according to the following requirements:

A Backend for the Nimiq Shop Directory to find shops and online shops that accept NIM.
Following base features are required:

Requirements

  1. CRUD restful API for accessing shops, supporting both online and brick and mortar
  2. Bulk Imports, e.g. via CSV
  3. Basic UI for adding and updating shops manually
    The goal of the backend is make it possible to build following frontends on top of it:
  4. A map that displays locations of physical stores that accept NIM.
  5. A directory of online shops / merchants that accept NIM.
  6. Search function to easily find shops.
  7. Merchants can easily add their shops themselves.
  8. Merchants can, temporarily display additional info such as promos

Architecture and DB

As a rough architecture, we suggest building a back-end service that offers REST web services for platforms and services that want to show data from the shop directory. The service itself should then store that information in a standard SQL back-end (SQL is optional, it could also be a document based DB as long as it supports all search features), support the basic CRUD functions with minimal UIs to get started and in a later version also bulk imports.

Milestones

1. Database scheme

Should be in “vanilla SQL” so that the service can run with any SQL database
The scheme should be created in collaboration with Team Nimiq, we will define a point of
contact, could be Sven and/or also Maestro; the schema needs to acknowledge physical
shops (latitude/longitude) as well as online shops and for the latter, the reach is
important, i.e. the countries they ship to; general metadata is needed as well as what
range of goods are offered; linking shops to listings on Google Maps is just an idea here
but would be great because it would allow to automatically get metadata such as
opening hours.

2. CRUD web services

A first version can be read-only, but on the long-run, it should be possible for external
providers to add shops to the system; we think standard REST services using JSON
would be great as they are basically industry standard; we don’t have restrictions on
what technology to be used per se, as long as it’s open source and industry standard
(we want to make sure other developers can extend and modify the code).

3. Minimalistic UIs to use CRUD services

Some minimalistic UIs so that we can feed and update the system with data manually in
the beginning. Ideally, these UIs can be generated automatically from the DB schema

4. Search function

The APIs need to provide an endpoint to search for shops based on their metadata such
as location/area and range of goods offered. Could also be done later, when we have
several shops in the system.

5. Bulk import

A bulk import will be needed later this year, but there’s no rush, we would first need to
define the exact format. But in general, we expect it to be based on CSV, JSON could be
an option, too. Let’s sync on that before starting implementing anything.

The entire proposal including milestones is flexible and we would love to hear your feedback —
but we would expect the resulting code to be open source and shared in a public git repository.

Maybe on GitHub, but that’s not set in stone. If you know how, then having the entire service
ready to be deployed with Docker would be a plus.

Budget

$3000 in NIM or BTC

Timeline

2 months

2 Likes

Interesting bounty! I have a couple of questions:

  • What authentication / authorization should be in place?
  • How many shops are estimated? Could determine if DB search is enough or if a more advanced search solution is required.
  • Would it be ok to use a DB abstraction layer that supports multiple SQL variants?

What’s the process for the bounty? First to build wins?