Back to Projects

Gis Application

A gis application built using React.js, Leaflet.js, and Golang to display geographic data interactively on a web map. This project also has automation CI pipeline using GitHub Actions for testing, building, and push container image to GitHub Container Registry.

Gis Application
0 views
3 min read

Project Overview

GIS Application is a web-based Geographic Information System (GIS) application built using React.js (TypeScript) on the frontend and Golang on the backend. The application displays geographic data interactively through a web map, integrating OpenStreetMap with Leaflet.js.

This project was developed as a full-stack web application exercise, covering the entire flow from building a RESTful API, consuming the API on the frontend, to implementing an automation CI/CD pipeline as a result of independent improvement and exploration beyond the course material.


Background & Motivation

This project started from my intention to learn how to build RESTful APIs using Golang and how to consume them in a modern frontend built with React + TypeScript.

As a learning foundation, I followed a course from santrikoding.com that covers GIS application development. However, I did not stop at the provided material. I continued developing this project by:

  • Exploring implementations that are closer to real-world industry needs
  • Making independent improvements to the architecture and development workflow
  • Implementing automation that was not covered in the course, such as CI/CD

Project Architecture

This project is separated into two distinct repositories to apply the principle of separation of concerns and to better resemble a real-world application architecture.

Backend (Golang – RESTful API)

The backend is built using Golang and acts as a provider of geographic data through a RESTful API.

The main responsibilities of the backend include:

  • Providing API endpoints for GIS data
  • Managing and processing geographic coordinate data
  • Serving as hands-on practice for building APIs with Golang

Backend repository: github.com/armandwipangestu/gis-api

Frontend (React + TypeScript)

The frontend is built using React.js with TypeScript and serves as the primary user interface.

The main responsibilities of the frontend include:

  • Displaying an interactive web-based map
  • Integrating OpenStreetMap using Leaflet.js
  • Consuming backend APIs in a structured and reusable manner

Frontend repository: github.com/armandwipangestu/gis-ui


Problem Statement

Through this project, I aimed to understand:

  • How to build RESTful APIs using Golang
  • How to consume APIs in React using TypeScript
  • How to create reusable data-fetching logic on the frontend
  • How to integrate geographic data into a web-based map
  • How to implement CI/CD automation as part of development improvements

Solution Approach

To address these goals, I applied the following approaches:

1. Backend API Development

  • Building RESTful APIs using Golang
  • Structuring the backend project for better maintainability
  • Providing endpoints that are ready to be consumed by the frontend

2. Frontend Data Fetching & State Management

  • Using TanStack Query (React Query) for:

    • Data fetching
    • Caching
    • Asynchronous state management
  • Creating custom reusable hooks so data-fetching logic can be reused

3. GIS & Web Mapping

  • Integrating OpenStreetMap
  • Visualizing location data on a web-based map
  • Handling map interactions using Leaflet.js (markers, zoom, and navigation)

4. Automation & CI/CD Pipeline (Improvement)

  • Implementing a CI/CD pipeline using GitHub Actions

  • Automating processes such as:

    • Application build
    • Container image creation
    • Pushing images to GitHub Container Registry
  • This improvement was implemented independently and was not part of the course material


What I Learned

From this project, I gained practical learning experiences, including:

  • Fundamentals of RESTful API development with Golang
  • Consuming APIs in React using TypeScript in a structured way
  • Implementing reusable hooks with TanStack Query
  • Basic understanding of GIS and web-based mapping
  • Implementing a CI/CD pipeline as an independent improvement
  • The importance of taking initiative beyond provided learning materials

Why This Project Matters

Although this project originated from a course, I used it as a technical exploration platform, not merely as a tutorial follow-along.

This project matters because it:

  • Demonstrates independent development initiative
  • Combines backend, frontend, and automation workflows
  • Provides hands-on experience building a full-stack application end-to-end

Conclusion

GIS Application is a learning-focused project that helped me understand the end-to-end process of building a web-based GIS application, from creating RESTful APIs in Golang, consuming them in React + TypeScript, to implementing CI/CD automation as a personal improvement.

This project strengthened my skills in Software Engineering, particularly in building modern full-stack web applications.

More or Related Projects

Beasiswa
June 14, 2023

Beasiswa

A web-based scholarship management system for handling applications, selection, and reporting.

0000
Tools:
+5
BuildWithAngga Backend
November 30, 2024

BuildWithAngga Backend

A Laravel-based backend system for an educational platform, featuring saved articles, clean architecture, and comprehensive testing practices.

00
Tools:
+5
E-Perpus Solo
November 29, 2023

E-Perpus Solo

An open source Library Management System application with framework CodeIgniter version 3.1.13

0000
Tools:
+10