For us - the ingello / systems team - this is an unusual project, because in addition to the complex development of the application's interfaces, database and server operation setup, we also worked on product activities - data collection, obtaining government permits, information normalization, surveys, thinking through the systematics of adding information and even creating the product's business model. In other words, we were creating not just a custom project, but rather a startup, a business from scratch. And our client was not an entrepreneur or an organization, but an entire city! Read more about how it happened below.
Оглавление

In essence - the project is a web application with a lightweight interface, available to everyone without registration, with dynamic maps and a database of various objects of a specific city. Each object has its own mini-site, available to every organization or entrepreneur for free. The project started in the spring of 2022 against the backdrop of
The main idea
For a separate fee, an entrepreneur can order improvements to their site and add an online store, a CRM system for the sales department, a warehouse management system, a system for managing employees and hiring, and a system for creating a systematic company with precise regulations. Data can be stored both on Internet City servers and on an individual server of an Internet City resident.

Using the example of Rakhiv - one of the three administrative centers of Zakarpattia, the highest-altitude city in Ukraine - we built a city model in the form of a web application.
Data collection and permits
First of all, we needed to collect initial data, because if our city map were empty, the first users would leave because it would not be interesting to them. But if users saw at least a thousand objects, then it would be interesting for them to look at them and, possibly, add new ones.

The most important aspect of the project was cooperation with local authorities. Since the project was created during wartime, we were significantly limited in collecting practically any information about the city.
At the time the project started, we were already acquainted with the mayor (міський голова, якщо точнiше), the deputy mayor and the head of the governing committee, and we were also known in narrow circles thanks to our volunteer activities helping internally displaced people and providing free volunteer-based services for software and accounting systems. This allowed us to obtain the necessary permissions and stamps, which allowed us to collect any information that does not concern military facilities and military infrastructure. It also made the project, to some extent, competition-free, because there was nothing like it in Rakhiv, and thousands of internally displaced people (including many IT specialists) would first have had to obtain the necessary permits in order to compete with us.
Design
The visual interface was designed relatively economically. We did not use Figma and did not plan a complex and beautiful design for the first versions of the project. So we schematically depicted the design using simple draw.io prototyping tools. Tasks were managed almost as always in the "Asana" task tracker. But unlike most projects, we did not plan a process model for the project; tasks were controlled through simple checklists.
By the way, a video is planned to be released soon, showing the development of the project over the course of weeks, with the developer's screen constantly recorded as a screencast. Subscribe to our YouTube channel so you don't miss it.




The city's core functionality
Of course, first and foremost, any city is choice. Choice - where to go, what to see, what to buy or order, what to offer or sell, whom to help, and so on. And in any city, such data is present in some form on public maps. However, due to the very superficial updating of such maps (almost entirely placed on local volunteer experts), in almost any city, even a large one, the data does not correspond to reality. In small cities, there is not even half of the current data even about public commercial places. And with information, for example, about real estate rentals, everything is so bad that housing in the city can be rented exclusively through acquaintances, and there will be practically no choice. Local entrepreneurs are not used to using digital products to promote their services within the region and beyond it. Thus, we put together an interesting two-sided offer. Residents and visitors of the city receive absolutely free and up-to-date information, and businesses receive free tools for self-promotion with the opportunity to purchase more complex and more useful solutions in the future.
So, our application begins with choosing what interests us in the city - by categories. When you enter the application, against the background of a dynamic city landscape, you will see a list of opportunities available in the city.

After choosing what interests you (for example, car repair, grocery shopping or housing rental), a map will be displayed for you, showing small circles with photos of the places of interest. Keyword search is also available in the project.
Map selection
This is one of the key decisions in this project, because the wrong map choice can put the investor in a very difficult financial position. We chose an open-data map - Open Street Maps. It is a huge worldwide open project for collecting GPS data, the project is supported by many people, and they began collecting the first information from satellites long before Google Maps appeared. We also used a popular library https://leafletjs.com/ from a Ukrainian developer - for the convenience of managing standard map operations. Since the basic OSM tools are not convenient for development, although they definitely provide the most flexible capabilities for processing information.

This map and library are free. Even if you have huge daily traffic and many requests to maps, you can fully download all map data. It must be said, they weigh tens of gigabytes (almost up to a hundred), and they will need to be updated periodically. However, for our purposes, even free servers are enough for now, that is, we did not need to download the maps, which saved us a lot of time.

We did not choose the more popular map (and, it must be said, the considerably more functional one) from the Google vendor. Yes, its services were the most powerful on the market as of 2022, absolutely all maps are inferior to Google in functionality, however, since 2018 it has changed its pricing policy. To an ordinary person, it might have seemed that the price change was insignificant and generally not the most expensive and noticeable part of the project budget, but in practice the mathematics of any business model based on Google Maps changed significantly, which makes these maps not very affordable even for projects that do not economize on quality. And only the need to implement special and complex services (such as, for example, route drawing) may require working specifically with Google Maps.
In addition to the existing data within OSM, we collected and normalized data for the map, of which there is much more than in the project. Data in the Internet City project is also supplemented by project participants, undergoes verification and after that appears for general use.
Geolocation detection
We built geolocation detection capability into the application. This is necessary both for the convenience of users - guests and residents of the city - for convenient navigation on the map based on their location. It is also useful for users who help fill the map with data and update the data - you can approach a certain place and the smartphone will determine on its own where you are. All that remains is to click the camera button to upload a picture of the object being added. A couple of seconds - and the object is registered. You can also photograph price lists, business cards or flyers of the organization (if any are present). Later, without haste, individual people - operators - analyze and digitize the data - adding or updating information about the object on the personal page of that object.

Business or institution website
Speaking of an object's personal page - this is a separate page on which any formatting within HTML and CSS is available. Scripts are available only in the extended and paid version of the page. But the basic free capabilities are enough to create a unique page with your own lists, pictures, headings and subheadings, links and much more.
Portal with articles and categories
The application also includes a portal section where articles and images for them can be added, and they can be published by specific categories and at a specific time.
Administrative area

Of course, in the application you can manage absolutely all data - object categories, article categories, the formatting of articles directly and information about businesses\attractions and other objects. Any data can be changed and is subject to convenient search by any parameters - from coordinates, types, classes, names to deeper and more technical information about each object.

The administrative area is built on a standard template that displays conveniently on a smartphone, tablet, and wide screen alike. The administrative area is available exclusively to authorized users and contains a detailed menu divided into categories.

Within the administrative area, we have a fairly flexible mechanism for system settings, cache management, role system management, and language and translation settings management (the system initially supports Ukrainian and Russian versions, but languages can be added to the system without the need to involve a programmer - directly from the admin panel).

The administration area includes the ability to monitor server status in real time - the state of RAM, the central processor and its cores, the operating system and distribution version, and much more. However, this is not unique functionality; we install these modules in many of our custom projects, often for free, as a bonus.


API
Since we assumed that the data we collected and update would be valuable both for business and, for example, for the city administration, we immediately added a relatively simple API to the system - that is, the ability to connect to the database programmatically and receive from it any data it contains in a convenient JSON format. Special functions are available for working with data - such as selecting data by user, merging data, any ways to sort and filter data, as well as configuring pagination to optimize requests. Of course, documentation is attached to the program interface.
If after reading this article you became eager to start your own project - then it will be important for you to know that before taking an advance payment from you and signing a contract, we always conduct detailed and professional consultations, where you will learn more about your project and will be able to evaluate our approach without unnecessary costs. Contact us with complex and non-trivial projects that cannot be implemented using ready-made solutions and templates.
