@@ -30,67 +30,88 @@ open-source projects.
3030About the Project
3131-----------------
3232
33- The project focused on improving the OpenWISP general map by adding new
34- features such as indoor floor plan integration, and linkable map URLs and
35- real-time mobile device tracking. These enhancements are aimed at making
36- the platform more accessible and useful for network administrators,
37- helping them navigate complex networks, monitor devices, and troubleshoot
38- issues more efficiently.
39-
40- While the journey presented deep technical challenges and learning
41- opportunities, it also allowed me to collaborate with a vibrant community
42- and contribute to an open-source project that impacts users globally.
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.
4346
4447Building the General Map Enhancements
4548-------------------------------------
4649
47- My work revolved around improving the map UI to make it more usable by
48- enabling features such as searching for devices, adding filters based on
49- device status, opening indoor maps directly from the general map view, and
50- viewing a device’s location within an indoor map. Additionally, the
51- improvements support sharing URLs for specific views and implementing
52- real-time location updates for mobile devices to enhance monitoring and
53- navigation.
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 .
5457
5558.. image :: {static}/images/blog/gsoc25/improve-openwisp-general-map-indoor-mobile-linkable-urls/before-after-ui-view.png
56- :alt: Improve DashBoard Map UI in OpenWISP
59+ :alt: Improved Dashboard Map UI before and after in OpenWISP
5760
5861Features Implemented
5962--------------------
6063
64+ UI improvements on Location Pop-up
65+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
66+
67+ .. image :: {static}/images/blog/gsoc25/improve-openwisp-general-map-indoor-mobile-linkable-urls/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+
6183Indoor Map View
6284~~~~~~~~~~~~~~~
6385
64- .. image :: {static}/images/blog/gsoc25/improve-openwisp-general-map-indoor-mobile-linkable-urls/improved-general -map-view.gif
86+ .. image :: {static}/images/blog/gsoc25/improve-openwisp-general-map-indoor-mobile-linkable-urls/indoor -map-view.gif
6587 :alt: Indoor Map view in OpenWISP
6688
67- For the Indoor map view, I improved the UI of the dashboard map to make it
68- more user-friendly and efficient. The updated interface allows users to
69- search for devices by name and filter devices by their labels. If a device
70- has an associated floor plan, a button is displayed that opens the floor
71- plan overlay, allowing users to switch between floors and toggle
72- fullscreen mode for a better visualization experience. The data for the
73- indoor map is provided through a newly created API endpoint, which loads
74- the least positive floor by default and supports filtering based on the
75- selected floor. To optimize performance, I implemented separate instances
76- of netjsongraph in dedicated div elements, allowing the map to be shown or
77- hidden efficiently without unnecessary reloads.
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.
78100
79101Shareable URLs
80102~~~~~~~~~~~~~~
81103
82- .. image :: {static}/images/blog/gsoc25/improve-openwisp-general-map-indoor-mobile-linkable-urls/share-url .gif
104+ .. image :: {static}/images/blog/gsoc25/improve-openwisp-general-map-indoor-mobile-linkable-urls/shareable-urls .gif
83105 :alt: Shareable URLs Feature in OpenWISP
84106
85- I added a new feature in netjsongraph.js called urlFragments, which is
86- disabled by default and can be enabled when needed. With this feature,
87- every time a user clicks on a node or link in the map, the URL is updated
88- with parameters like graph ID, node ID, and zoom level. This makes it easy
89- to create shareable URLs that anyone can use to open the map directly to
90- the selected node or view. The logic is designed to be standardized and
91- extendable, so it can be applied across multiple maps, such as the
92- geographic and indoor maps. In the future, this could become a default
93- option, but for now, it’s available as an opt-in feature.
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.
94115
95116Real Time Device Location
96117~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -110,57 +131,52 @@ and validated, we can proceed with releasing these along with OpenWISP 26.
110131You can follow the development process and explore the implementation
111132details in the following pull requests:
112133
134+ - `Indoor Coordinates Endpoint
135+ <https://github.com/openwisp/openwisp-controller/pull/976> `_
113136- `Indoor Floor Plan Integration
114137 <https://github.com/openwisp/openwisp-monitoring/pull/688> `_
115- - `Linkable Map URLs
138+ - `Linkable Map URLs in Monitoring
116139 <https://github.com/openwisp/openwisp-monitoring/pull/703> `_
140+ - `Linkable Map URLs in Netjsongraph.js
141+ <https://github.com/openwisp/netjsongraph.js/pull/417> `_
117142- `Real-Time Mobile Device Tracking
118143 <https://github.com/openwisp/openwisp-monitoring/issues/563> `_
119144
120145My Experience
121146-------------
122147
123- My GSoC journey with OpenWISP has been an incredibly rewarding experience.
124- Working under the mentorship of Federico Capoano and Gagan Deep, I had the
125- chance to grow both technically and personally. Their guidance, patience,
126- and insightful feedback helped me navigate the challenges of developing
127- complex features while staying aligned with OpenWISP’s architecture and
128- community standards.
129-
130- Throughout the summer, I focused on improving the map UI by adding new
131- functionalities that enhance usability, navigation, and accessibility.
132- Implementing the indoor map view in particular allowed me to dive deep
133- into front-end optimization, API design, and user experience improvements.
134- I learned how to efficiently manage data flow, create scalable components,
135- and handle dynamic visualization using netjsongraph. The process of
136- creating API endpoints, refining interactions, and integrating feedback
137- helped me better understand best practices in software development.
138-
139- Some of the toughest challenges I faced were managing conflicts between
140- overlapping Coordinate Reference Systems (CRS) and designing the
141- bookmarkable URL feature. These problems pushed me to explore and
142- understand the inner workings of libraries like Leaflet.js and
143- netjsongraph.js more deeply, expanding my knowledge of mapping tools and
144- data handling.
145-
146- Although the shareable URLs feature has been implemented and works well,
147- refining its performance and ensuring smooth integration across multiple
148- views presented new learning opportunities. The real-time mobile device
149- tracking feature, while still under development, has further motivated me
150- to explore advanced data synchronization and event-driven architectures.
151-
152- Beyond coding, I had the opportunity to engage with the OpenWISP
153- community, review code, collaborate on discussions, and contribute to
154- improving documentation and testing workflows. This experience has
155- strengthened my problem-solving skills, communication, and confidence in
156- contributing to open-source projects. I am grateful for the support I
157- received and the chance to grow as a developer.
158-
159- The push we needed towards the end of the program to complete the project
160- was especially helpful. It gave me the motivation and structure to focus
161- my efforts, prioritize tasks, and deliver as much as possible within the
162- timeline. The final weeks taught me the importance of discipline, time
163- management, and perseverance when working on open-source projects.
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.
164180
165181What's Next?
166182------------
0 commit comments