Skip to content

Commit 9a9dd05

Browse files
authored
[gsoc25] Added GSoC 2025: Better Map UX: Indoor, Mobile, Linkable URLs
1 parent 3ccbe14 commit 9a9dd05

File tree

7 files changed

+201
-0
lines changed

7 files changed

+201
-0
lines changed
Lines changed: 201 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,201 @@
1+
GSoC 2025: Better Map UX: Indoor, Mobile, Linkable URLs
2+
=======================================================
3+
4+
:date: 2025-09-14
5+
:author: Deepanshu Sahu
6+
:tags: gsoc, netjsongraph.js, monitoring, new-feature
7+
:category: gsoc
8+
:lang: en
9+
:image_url: https://openwisp.org/images/blog/gsoc25/map-improvements-indoor-mobile/gsoc-25-indoor-maps.png
10+
:image_width: 782
11+
:image_height: 765
12+
13+
.. image:: {static}/images/blog/gsoc25/map-improvements-indoor-mobile/gsoc-25-indoor-maps.png
14+
:alt: Google Summer of Code, Better Map UX: Indoor, Mobile, Linkable URLs
15+
:align: center
16+
17+
Participating in Google Summer of Code has been a transformative
18+
experience. Over the past three months, I worked on my Google Summer of
19+
Code project with OpenWISP, where I had the opportunity to enhance the
20+
platform by improving its general map functionalities. With the constant
21+
guidance, encouragement, and expertise of my mentors `Federico Capoano
22+
(nemesifier) <https://github.com/nemesifier>`_ and `Gagan Deep (pandafy)
23+
<https://github.com/pandafy>`_. I was able to explore new technologies,
24+
tackle complex problems, and deliver features that significantly improve
25+
usability, navigation, and accessibility in network visualization tools.
26+
Their insightful feedback, patience, and supportive mentorship played a
27+
crucial role in helping me grow as a developer and a contributor to
28+
open-source projects.
29+
30+
About the Project
31+
-----------------
32+
33+
The project aimed to enhance the OpenWISP general map with features that
34+
improve accessibility, navigation, and monitoring for network
35+
administrators. Key additions include indoor floor plan integration,
36+
linkable map URLs, and real-time mobile device tracking. These
37+
improvements help users manage complex networks more effectively and
38+
troubleshoot issues with ease.
39+
40+
The experience presented significant technical challenges that deepened my
41+
understanding of mapping libraries like `Leaflet.js
42+
<https://github.com/Leaflet/Leaflet>`_ and `netjsongraph.js
43+
<https://github.com/openwisp/netjsongraph.js>`_, while also offering
44+
opportunities to collaborate with the open-source community and contribute
45+
to a project with global impact.
46+
47+
Building the General Map Enhancements
48+
-------------------------------------
49+
50+
My contributions focused on making the map interface more intuitive and
51+
interactive. I added features like device search, status-based filtering,
52+
and seamless access to indoor maps from the general map view. Users can
53+
now view specific devices within floor plans, switch between floors, and
54+
open maps in fullscreen mode for better visualization. Additionally, users
55+
can share URLs that link directly to specific nodes, graph states, or zoom
56+
levels, making navigation and collaboration much easier.
57+
58+
.. image:: {static}/images/blog/gsoc25/map-improvements-indoor-mobile/before-after-ui-view.png
59+
:alt: Improved Dashboard Map UI before and after in OpenWISP
60+
61+
Features Implemented
62+
--------------------
63+
64+
UI improvements on Location Pop-up
65+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
66+
67+
.. image:: {static}/images/blog/gsoc25/map-improvements-indoor-mobile/improved-popup-ui-feature.gif
68+
:alt: Improved Dashboard Map UI Location Pop-up in OpenWISP
69+
70+
The location pop-up in the dashboard map has been enhanced to improve
71+
usability and navigation. Users can now search for devices by name and
72+
filter them by labels directly within the map interface through a popup
73+
above the map. After filtering, users can quickly navigate to the detailed
74+
page of the selected device. Additionally, devices associated with floor
75+
plans include a button that opens the corresponding floor layout overlay
76+
for better visualization.
77+
78+
To optimize performance, infinite scroll has been implemented in the
79+
device list table to load data efficiently as users scroll. A debounce
80+
mechanism is also applied to the search input, ensuring that unnecessary
81+
queries are minimized and the interface remains responsive.
82+
83+
Indoor Map View
84+
~~~~~~~~~~~~~~~
85+
86+
.. image:: {static}/images/blog/gsoc25/map-improvements-indoor-mobile/indoor-map-view.gif
87+
:alt: Indoor Map view in OpenWISP
88+
89+
If a device has an associated floor plan, a button is displayed that opens
90+
the floor plan overlay, allowing users to switch between floors and toggle
91+
fullscreen mode for a better visualization experience. Additionally, users
92+
can click on a node in the indoor map to open a popup from which they can
93+
navigate directly to the device’s detail page, making it easier to access
94+
relevant information from within the map.
95+
96+
To optimize performance, separate instances of `netjsongraph.js
97+
<https://github.com/openwisp/netjsongraph.js>`_ are used in dedicated
98+
elements, enabling the map to be shown or hidden efficiently without
99+
unnecessary reloads.
100+
101+
Shareable URLs
102+
~~~~~~~~~~~~~~
103+
104+
.. image:: {static}/images/blog/gsoc25/map-improvements-indoor-mobile/shareable-urls.gif
105+
:alt: Shareable URLs Feature in OpenWISP
106+
107+
Support for shareable URLs has been added to the map interface. Whenever
108+
users click on a node or link, the URL is dynamically updated with
109+
parameters such as the graph ID, node ID, and zoom level to reflect the
110+
current view. This allows users to bookmark or share direct links to
111+
specific views within both geographic and indoor maps, simplifying
112+
navigation and collaboration. The implementation is designed to be
113+
standardized and extendable, enabling it to support multiple maps on a
114+
single page when needed.
115+
116+
Real Time Device Location
117+
~~~~~~~~~~~~~~~~~~~~~~~~~
118+
119+
The real-time mobile device tracking feature is still under development
120+
and will be implemented in the future. It aims to provide dynamic updates
121+
to device locations, ensuring that network administrators can monitor
122+
moving devices in real time and respond to changes instantly.
123+
124+
Current state
125+
-------------
126+
127+
We are maintaining the ``gsoc25-map`` branch as parent branch for all the
128+
General map features. Once all the PRs are merged and features are tested
129+
and validated, we can proceed with releasing these along with OpenWISP 26.
130+
131+
You can follow the development process and explore the implementation
132+
details in the following pull requests:
133+
134+
- `Indoor Coordinates Endpoint
135+
<https://github.com/openwisp/openwisp-controller/pull/976>`_
136+
- `Indoor Floor Plan Integration
137+
<https://github.com/openwisp/openwisp-monitoring/pull/688>`_
138+
- `Linkable Map URLs in Monitoring
139+
<https://github.com/openwisp/openwisp-monitoring/pull/703>`_
140+
- `Linkable Map URLs in Netjsongraph.js
141+
<https://github.com/openwisp/netjsongraph.js/pull/417>`_
142+
- `Real-Time Mobile Device Tracking
143+
<https://github.com/openwisp/openwisp-monitoring/issues/563>`_
144+
145+
My Experience
146+
-------------
147+
148+
My GSoC journey with OpenWISP has been a highly rewarding experience. With
149+
the mentorship of `Federico Capoano (nemesifier)
150+
<https://github.com/nemesifier>`_ and `Gagan Deep (pandafy)
151+
<https://github.com/pandafy>`_, I was able to grow both technically and
152+
personally. Their guidance, patience, and feedback helped me navigate
153+
challenges while ensuring my contributions aligned with OpenWISP’s
154+
architecture and community standards.
155+
156+
During the program, I focused on enhancing the map UI by implementing
157+
features such as indoor map views, device search, and improved navigation.
158+
This gave me the opportunity to deepen my understanding of front-end
159+
optimization, API design, scalable components, and efficient data flow
160+
management using tools like `netjsongraph.js
161+
<https://github.com/openwisp/netjsongraph.js>`_.
162+
163+
Some of the toughest challenges I encountered included handling conflicts
164+
between overlapping Coordinate Reference Systems (CRS) and designing the
165+
bookmarkable URL feature. These challenges pushed me to explore libraries
166+
like `Leaflet.js <https://github.com/Leaflet/Leaflet>`_ and
167+
`netjsongraph.js <https://github.com/openwisp/netjsongraph.js>`_ more
168+
thoroughly, broadening my knowledge of mapping tools and data handling
169+
techniques.
170+
171+
Beyond coding, engaging with the OpenWISP community through discussions
172+
and reviews was a valuable learning experience. The push we needed toward
173+
the end of the program was especially helpful—it provided the motivation
174+
and structure to stay focused, prioritize tasks, and deliver as much as
175+
possible within the timeline. These final weeks taught me the importance
176+
of discipline, time management, and perseverance when contributing to
177+
open-source projects. I’m grateful for the support I received, which
178+
strengthened my skills, confidence, and commitment to open-source
179+
development.
180+
181+
What's Next?
182+
------------
183+
184+
As my GSoC journey comes to an end, I am excited to continue contributing
185+
to OpenWISP. In the near term, I will focus on refining the shareable URLs
186+
feature to ensure that it performs reliably across different maps and user
187+
interactions. I also plan to complete the real-time mobile device tracking
188+
functionality by implementing efficient data handling and synchronization
189+
methods.
190+
191+
Looking ahead, I hope to further improve the map UI, explore additional
192+
optimizations, and expand the set of features that make network monitoring
193+
easier and more intuitive. User feedback will be essential in identifying
194+
areas that need enhancement, and I plan to actively engage with the
195+
community to gather insights and iterate on solutions.
196+
197+
I am committed to maintaining and supporting the features I’ve developed,
198+
addressing bugs, and helping other contributors onboard smoothly.
199+
Open-source development has been a transformative experience for me, and I
200+
look forward to being an active member of the OpenWISP community, learning
201+
continuously, and contributing to projects that have real-world impact.
560 KB
Loading
22.9 KB
Loading
117 KB
Loading
1.55 MB
Loading
2.78 MB
Loading
8.54 MB
Loading

0 commit comments

Comments
 (0)