SharkGIS is a lightweight, fully client-side web application for basic GIS operations in the browser. Built with React, Mapbox GL JS, Zustand and Turf.js, it enables quick and intuitive spatial analysis without the need for installation or backend infrastructure.
This project was developed as part of the course TBA4251 – Programming in Geomatics at NTNU.
🔗 App: sharkgis.com
💾 Fallback: mortened.github.io/SharkGIS
🧑💻 Source code: github.com/mortened/SharkGIS
⚠️ Note: sharkgis.com is a temporary domain and may expire after one year. The fallback link will remain available via GitHub Pages.
- Upload GeoJSON files and visualize vector layers
- Perform classic GIS operations (buffer, clip, dissolve, intersect)
- Draw new geometries (points, lines, polygons) directly on the map
- Use a built-in, step-by-step tutorial to learn by doing
- Export results to GeoJSON, GPX or PNG
- All operations happen client-side – no backend needed
The goal was to create an intuitive, browser-based GIS tool tailored for beginners, with a clean interface and just enough functionality to support core vector operations. It’s designed to be used both as a standalone learning environment and as a hands-on teaching tool in GIS education.
| Tool / Library | Purpose |
|---|---|
| React + Vite | Component architecture and fast dev server |
| TypeScript | Static typing and better DX |
| Mapbox GL JS | Fast, interactive map rendering |
| @mapbox/mapbox-gl-draw | Custom polygon/line/point drawing |
| Zustand | Simple and scalable state management |
| Turf.js | Fast geospatial processing in the browser |
| shadcn/ui + Radix UI | Flexible UI components |
| react-joyride | Contextual onboarding & tutorials |
| Tailwind CSS | Utility-first styling framework |
A built-in tutorial guides students through a real-world spatial analysis task: identifying safe kayak routes in Trondheim.
- Clipping datasets to the Trondheim municipality boundary
- Buffering around ship traffic points (AIS data)
- Merging shallow water areas
- Subtracting restricted zones
- Drawing a route between known swimming spots
All steps are performed interactively in the browser, supported by tooltips and visual guidance.
git clone https://github.com/mortened/SharkGIS.git
cd SharkGISnpm installCreate a .env file in the root directory with your Mapbox token:
VITE_MAPBOX_TOKEN=your_mapbox_token_hereYou can get a free token from https://account.mapbox.com
npm run devMorten Sandbæk Edvardsen
NTNU – Engineering and ICT (Geomatics)
📎 https://github.com/mortened
- Built as part of TBA4251 – Programming in Geomatics (NTNU)
- Thanks to NTNU and the open source GIS community