Hajk
Hajk is an open source web GIS solution based on the latest technologies such as React, Material UI and OpenLayers. It is developed in Sweden and used by various municipalities and government agencies, as well as by public and private enterprises.
For developer info, see CONTRIBUTING.md.
New to Hajk and not a developer?
If you are a new user of Hajk, please visit our welcome page (Swedish only) for more information about Hajk.
Looking for support?
You can easily reach out to our community using the Discussions on GitHub.
Live examples
The official automatic build of the latest version can be found here: https://hajk-demo.netlify.app/.
For some real-life examples, see the following solutions:
- Halmstad municipality's map
- Kungsbacka municipality's map
- Göteborg stad
- The Gothenburg Region's map
- Varberg municipality's map
- Uddevalla municipality's map
Quick start (for admins)
Please refer to Hajk's official installation guide.
Quick start (for developers)
Note that Hajk consists of 3 applications: the main 'client' (which is the web map front end), 'admin' (which basically is a frontend for client's configuration files) and 'mapservice' (the backend server application which has a REST API).
Clone the repo
Clone the repository: git clone https://github.com/hajkmap/Hajk.git
.
Get the Backend up and running
Note: There are currently two available backends for Hajk - you need to pick only one:
- NodeJS backend - a new, recently release backend. Rewritten from scratch in JS. Can be deployed on any platform supported by NodeJS.
- NET-backend - the original backend, requires Windows and IIS.
If unsure on which backend to pick, it is recommended to choose the NodeJS solution. It is easier to setup because it only requires NodeJS (which you already have if you want to run Hajk anyway).
Alternative 1: NodeJS backend
- In
hajk
repo dir, go tonew-backend
and install dependencies:
cd new-backend
npm install
- Review the settings in
.env
. It's fine to leave the defaults. Note whichPORT
is specified, by default it is3002
. - Start the backend in development mode:
npm run dev
- Verify that the server is up and running by navigating to
http://localhost:3002
. There's also a nice API explorer available onhttp://localhost:3002/api-explorer/
.
Alternative 2: .NET backend
- Make sure that you have Visual Studio and IIS installed.
- Open the SLN-files in
backend/
- Build and publish.
- Deploy to IIS. Make sure that everything is running (choose "Browse" from IIS to see the mapservice page that lists available commands - if you see that, you're good to go).
Alternative 3: NodeJS backend using Docker
See Docker README for more information.
Launch the Client app
Now when Backend is up and running, it's time to start the Client (and optionally Admin) applications.
- You must tell the Client app the location of a running Backend. The configuration is made by editing
new-client/public/appConfig.json
. Make sure thatmapserviceBase
is a valid URL to a running instance of the Backend (if you're using the NodeJS application and your Backend is running on port 3002, you should setmapserviceBase
to"http://localhost:3002/api/v1"
. - The client application resides inside
new-client
. Go there (cd new-client
) and install the dependencies and start by typing:npm i && npm start
. - Verify that Client is running on
http://localhost:3000
.
Launch the (optional) Admin app
This process is similar to the Client app.
- Set the correct URL to Backend by editing
new-admin/public/config.json
.
Map operations have moved to mapconfig so"url_map", "url_map_list", "url_map_create", "url_map_delete"
needs to point toward"http://localhost:3002/api/v1/mapconfig..."
, the rest is the same as fornew-client
- The admin application is located in
new-admin
. To get it running docd new-admin && npm i && npm start
. - Verify that Admin is running on
http://localhost:3001
.
Deploying
You can use the NodeJS backend to deploy the Client and Admin applications as well. For details, see this section in Backend's README.
Contributing
If you plan to develop for Hajk, make sure to read the next section on code standard for the project.