Giter Club home page Giter Club logo

portal-interdata's Introduction

How to start the app

Prerequisites

Make sure you have Docker and Docker Compose installed on your machine.


Getting Started

CKAN Docker

Commands for building and running CKAN Docker images.

Build CKAN Docker Images

To build the CKAN Docker images, run:

make ckan-build

Run CKAN Docker Containers

To run the CKAN Docker containers, run:

make ckan-run

GeoJSON Docker

Commands for managing GeoJSON Docker container.

Build GeoJSON Docker Image

To build the GeoJSON Docker image, run:

make geojson-build

Run GeoJSON Docker Container

To run the GeoJSON Docker container, run:

make geojson-run

WebGIS Vite Docker

Commands for managing WebGIS Vite Docker containers.

Build WebGIS Vite Docker Images

To build the WebGIS Vite Docker images, run:

make webgis-build

Start WebGIS Vite Docker Containers

To start the WebGIS Vite Docker containers, run:

make webgis-up

GeoNetwork Docker

Commands for managing GeoNetwork.

Start GeoNetwork

To start GeoNetwork, run:

make geonetwork-start

Stop GeoNetwork

To stop GeoNetwork, run:

make geonetwork-stop

Additional Commands

The Makefile includes additional commands for development, cleaning up resources, and more. Refer to the Makefile for a comprehensive list of commands available for each component.

Objectives

  • Create a simple plugin or extension for visualizing JSON API data in tabular format on the CKAN platform.
  • Develop an external map viewer integrated with the GeoNetwork platform.

Requirements

  • Hosted GeoNetwork
  • Hosted CKAN with JSON API viewer extension
  • Non-specified external WebGIS connected to GeoNetwork (GeoNetwork API not specified)

Approach

Repository Management (Monorepo)

We are using a containerized, modular, and command-based philosophy to manage our repository. The main repository consists of three main applications:

  • GeoNetwork
  • CKAN
  • WebGIS

For the custom WebGIS, we use a modern and performant technology stack to accommodate large dataset handling and 3D map visualization.

WebGIS Tech Stack:

  • React
  • TypeScript
  • Mapbox

In each application, we use Docker to containerize our applications, making it easier to manage dependencies and scaling. Additionally, we use Makefile everywhere to accommodate our command-based applications.

ckan-build-dev:
	@echo "Building CKAN Docker images for development..."
	$(MAKE) -C ckan-docker build dev

ckan-run-dev:
	@echo "Running CKAN Docker containers for development..."
	$(MAKE) -C ckan-docker run dev

ckan-create-extension:
	@echo "Creating a new CKAN extension..."
	$(MAKE) -C ckan-docker create extension

Room for Improvement

  • We can more deeply integrate GeoNetwork and the WebGIS to use other APIs, or even to manage the layer visualization. For example, we can leverage data from GeoNetwork to toggle layers shown on the map and display the searched data.
  • We can further improve the architecture of the apps by using an OGC-friendly map service like GeoServer to host our data (currently, I use NGINX and GeoJSON to host mock data).
  • The CKAN API Table viewer could have more features, such as a geospatial data viewer, graphs, etc.

Tech Debts

  • SSL protection (HTTPS)
  • Load balancing using Kubernetes, or even Infrastructure as Code (IaC) tools like Terraform to better handle our infrastructure

Demo Purposes Only

  • 3D map data are only a mock data that are shown in 3D using MapBox
  • All applications run without SSL
  • All applications run in dev mode
  • Only integrate the Search API in our WebGIS

Link to all resource

CKAN: http://103.6.53.254:20250/dataset/interdata-data/resource/043b6ee2-0fa8-4c10-b6fd-956b944ef627

WebGIS: http://103.6.53.254:20288/

GeoNetwork: http://103.6.53.254:20280/geonetwork/srv/eng/catalog.search#/home

Repository (GitHub): https://github.com/samdyra/portal-interdata

portal-interdata's People

Contributors

samdyra avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.