<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>NGS |</title>
	<atom:link href="https://newmoyergeospatial.com/tag/ngs/feed/" rel="self" type="application/rss+xml" />
	<link>https://newmoyergeospatial.com</link>
	<description>Solutions Delivered</description>
	<lastBuildDate>Wed, 01 Apr 2026 01:21:09 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://newmoyergeospatial.com/wp-content/uploads/2024/04/NGS-Logo-Icon-Trans-XSm.png</url>
	<title>NGS |</title>
	<link>https://newmoyergeospatial.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>CoreSpatial 2026-Q1 Release Announcement</title>
		<link>https://newmoyergeospatial.com/2026/03/corespatial-2026-q1-release-announcement/</link>
		
		<dc:creator><![CDATA[Jason Newmoyer]]></dc:creator>
		<pubDate>Wed, 01 Apr 2026 01:16:10 +0000</pubDate>
				<category><![CDATA[CoreSpatial]]></category>
		<category><![CDATA[Product Announcements]]></category>
		<category><![CDATA[GeoServer]]></category>
		<category><![CDATA[MapStore2]]></category>
		<category><![CDATA[NGS]]></category>
		<guid isPermaLink="false">https://newmoyergeospatial.com/?p=3808</guid>

					<description><![CDATA[<p>NGS is pleased to announce the 2026.1 release of CoreSpatial Server, Map Manager and Portal The highlight of this release is our CoreSpatial Portal release based on MapStore2 v2025.02.02. This is a large rollup that advances through multiple upstream MapStore2 releases. See full details below. We also look forward to continued development in the following [&#8230;]</p>
<p>The post <a href="https://newmoyergeospatial.com/2026/03/corespatial-2026-q1-release-announcement/">CoreSpatial 2026-Q1 Release Announcement</a> first appeared on <a href="https://newmoyergeospatial.com"></a>.</p>]]></description>
										<content:encoded><![CDATA[<p class="wp-block-paragraph">NGS is pleased to announce the 2026.1 release of CoreSpatial <strong>Server, Map Manager</strong> and <strong>Portal</strong></p>



<p class="wp-block-paragraph">The highlight of this release is our CoreSpatial <a href="https://newmoyergeospatial.com/corespatial-portal/"><strong>Portal</strong></a> release based on <a href="https://github.com/geosolutions-it/MapStore2/releases/tag/v2025.02.00">MapStore2 v2025.02.02</a>. This is a large rollup that advances through multiple upstream MapStore2 releases. See full details below.</p>



<p class="wp-block-paragraph">We also look forward to continued development in the following areas:</p>



<ul class="wp-block-list">
<li>Bulk tile collection projects via Map Manager UI</li>



<li>Expanded image handling capabilities in Map Manager – georectification of commercial drone imagery using JPEG EXIF</li>



<li>Desktop GIS integration via QGIS</li>
</ul>



<h1 class="wp-block-heading" id="corespatial-server-and-basemaps-release-notes">CoreSpatial Server and Basemaps Release Notes</h1>



<h2 class="wp-block-heading" id="202617-03312026">2026.1.7 (03/31/2026)</h2>



<ul class="wp-block-list">
<li>Update GeoServer to <a href="https://geoserver.org/announcements/2026/03/20/geoserver-2-28-3-released.html">2.28.3</a></li>



<li>Update PostgreSQL JDBC jar to <a href="https://jdbc.postgresql.org/changelogs/2026-02-11-42/">42.7.10</a></li>



<li>Update C3P0 Connection Pooling lib <a href="https://github.com/swaldman/c3p0/blob/0.12.x/CHANGELOG">0.12.0</a></li>



<li>Improve SBOM/CVE diff automation (new scripts, live image scans, and previous-release SBOM comparisons)</li>
</ul>



<h2 class="wp-block-heading" id="202616-03032026">2026.1.6 (03/03/2026)</h2>



<ul class="wp-block-list">
<li>Patch five High/Medium CVEs in bundled JARs</li>



<li>Add support for multiple SBOM formats: SPDX, CycloneDX, and Syft</li>
</ul>



<h2 class="wp-block-heading" id="202615-01212026">2026.1.5 (01/21/2026)</h2>



<ul class="wp-block-list">
<li>Patch vulnerabilities discovered in UBI 9 base image</li>
</ul>



<h2 class="wp-block-heading" id="202614-01302026">2026.1.4 (01/30/2026)</h2>



<ul class="wp-block-list">
<li>Patch vulnerabilities discovered in UBI 9 base image</li>
</ul>



<h2 class="wp-block-heading" id="202613-01262026">2026.1.3 (01/26/2026)</h2>



<ul class="wp-block-list">
<li>Patch vulnerabilities discovered in UBI 9 base image</li>
</ul>



<h2 class="wp-block-heading" id="202612-01212026">2026.1.2 (01/21/2026)</h2>



<ul class="wp-block-list">
<li>Patch gnupg2 High severity vulnerability affecting the Docker container base image</li>
</ul>



<h2 class="wp-block-heading" id="202611-01142026">2026.1.1 (01/14/2026)</h2>



<ul class="wp-block-list">
<li>Patch libpng to remediate High severity vulnerability affecting the Docker container base image</li>
</ul>



<h1 class="wp-block-heading" id="corespatial-map-manager-release-notes">CoreSpatial Map Manager Release Notes</h1>



<h2 class="wp-block-heading" id="202619-03302026">2026.1.9 (03/30/2026)</h2>



<ul class="wp-block-list">
<li>Refresh runtime container packages in the final Docker image to clear fixed vulnerabilities in the release container</li>
</ul>



<h2 class="wp-block-heading" id="202618-03252026">2026.1.8 (03/25/2026)</h2>



<ul class="wp-block-list">
<li>Bump Spring Boot to 3.5.12 to remediate JAR vulnerabilities affecting Tomcat and Spring Web MVC</li>



<li>Update PostgreSQL JDBC to 42.7.10, Logback to 1.5.32, commons-io to 2.18.0, commons-lang3 to 3.19.0, and commons-compress to 1.27.1</li>



<li>Separate WMS Scraper into its own versioned release flow</li>
</ul>



<h2 class="wp-block-heading" id="202617-03062026">2026.1.7 (03/06/2026)</h2>



<ul class="wp-block-list">
<li>Bump Jackson to 2.18.6 to remediate a JAR vulnerability</li>
</ul>



<h2 class="wp-block-heading" id="202616-03032026">2026.1.6 (03/03/2026)</h2>



<ul class="wp-block-list">
<li>This release was cut to patch vulnerabilities discovered in the base container image</li>
</ul>



<h2 class="wp-block-heading" id="202615-02022026">2026.1.5 (02/02/2026)</h2>



<ul class="wp-block-list">
<li>Bump react-router and react-router-dom to 6.30.3 and <a href="https://github.com/remix-run">@remix-run</a>/router to 1.23.2</li>



<li>Bump lodash to 4.17.23</li>
</ul>



<h2 class="wp-block-heading" id="202614-01302026">2026.1.4 (01/30/2026)</h2>



<ul class="wp-block-list">
<li>Remove Python from the runtime image so it remains build-time only for GDAL</li>



<li>Pin Logback to 1.5.25 for vulnerability remediation</li>



<li>Set Flyway baselineVersion to 0 in application and test configuration</li>
</ul>



<h2 class="wp-block-heading" id="202613-01262026">2026.1.3 (01/26/2026)</h2>



<ul class="wp-block-list">
<li>This release was cut to patch vulnerabilities discovered in the base container image</li>
</ul>



<h2 class="wp-block-heading" id="202612-01212026">2026.1.2 (01/21/2026)</h2>



<ul class="wp-block-list">
<li>Patch gnupg2 and jaraco-context High severity vulnerabilities affecting the Docker container base image</li>
</ul>



<h2 class="wp-block-heading" id="202611-01142026">2026.1.1 (01/14/2026)</h2>



<ul class="wp-block-list">
<li>Patch libpng to remediate High severity vulnerability affecting the Docker container base image</li>
</ul>



<h1 class="wp-block-heading" id="corespatial-portal-release-notes">CoreSpatial Portal Release Notes</h1>



<h2 class="wp-block-heading" id="202611-3302026">2026.1.1 (3/30/2026)</h2>



<p class="wp-block-paragraph">This release is a large rollup that advances the MapStore2 submodule through multiple upstream releases. The full details of upstream changes can be found in the MapStore2 release notes on GitHub:</p>



<ul class="wp-block-list">
<li><a href="https://github.com/geosolutions-it/MapStore2/releases/tag/v2025.01.00">MapStore2 v2025.01.00</a></li>



<li><a href="https://github.com/geosolutions-it/MapStore2/releases/tag/v2025.02.00">MapStore2 v2025.02.00</a></li>



<li><a href="https://github.com/geosolutions-it/MapStore2/releases/tag/v2025.02.01">MapStore2 v2025.02.01</a></li>



<li><a href="https://github.com/geosolutions-it/MapStore2/releases/tag/v2025.02.02">MapStore2 v2025.02.02</a></li>
</ul>



<h3 class="wp-block-heading" id="new-features--enhancements">New Features &amp; Enhancements</h3>



<ul class="wp-block-list">
<li><strong>Cesium Ion World Terrain</strong> — Added Cesium Ion World Terrain support for 3D map view; reads <code>ionAccessToken</code> and <code>terrainProvider</code> from <code>localConfig.json</code> with graceful fallback to default ellipsoid when no token is configured</li>



<li><strong>Manager Page Plugins</strong> — Fixed blank manager page by adding UserManager, GroupManager, TagsManager, IPManager, and Footer plugins to the manager configuration; added missing translation keys throughout</li>
</ul>



<h3 class="wp-block-heading" id="bug-fixes">Bug Fixes</h3>



<ul class="wp-block-list">
<li>Fixed duplicate file upload attempt that could trigger two concurrent upload requests</li>



<li>Fixed OSM background layer CORS errors by using explicit HTTPS tile URLs in base configuration</li>
</ul>



<h3 class="wp-block-heading" id="security--infrastructure">Security &amp; Infrastructure</h3>



<ul class="wp-block-list">
<li>Switch to Iron Bank ubi9 base image for the container</li>



<li>Bump Tomcat to 9.0.108 (from 9.0.90) in RPM and container builds, addressing multiple CVEs across the 9.0.x series</li>



<li>Bump <code>org.apache.commons:commons-lang3</code> from 3.17.0 to 3.18.0</li>



<li>Bump <code>org.apache.cxf:cxf-core</code> from 3.5.10 to 3.5.11</li>



<li>Multi-format SBOM generation (syft-json, cyclonedx-json, spdx-json, table) now included with all releases</li>



<li>CVE diff reporting added to release pipeline for tracking vulnerability changes between releases</li>
</ul>



<h3 class="wp-block-heading" id="database-migrations">Database Migrations</h3>



<ul class="wp-block-list">
<li><strong>Migration 005</strong> — Adds <code>gs_ip_range</code> and <code>gs_security_ip_range</code> tables required by GeoStore 2.4.0 for IP-based access control. Deployments upgrading from older GeoStore versions will have schema validation errors fixed by this migration.</li>
</ul>



<h3 class="wp-block-heading" id="testing">Testing</h3>



<ul class="wp-block-list">
<li>Added Playwright end-to-end regression test suite</li>
</ul>



<p class="wp-block-paragraph"></p><p>The post <a href="https://newmoyergeospatial.com/2026/03/corespatial-2026-q1-release-announcement/">CoreSpatial 2026-Q1 Release Announcement</a> first appeared on <a href="https://newmoyergeospatial.com"></a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>CoreSpatial 2025-Q3 Release Announcement</title>
		<link>https://newmoyergeospatial.com/2025/09/corespatial-2025-q3-release-announcement/</link>
		
		<dc:creator><![CDATA[Jason Newmoyer]]></dc:creator>
		<pubDate>Tue, 30 Sep 2025 21:56:49 +0000</pubDate>
				<category><![CDATA[CoreSpatial]]></category>
		<category><![CDATA[Product Announcements]]></category>
		<category><![CDATA[FIPS]]></category>
		<category><![CDATA[FIPS 140]]></category>
		<category><![CDATA[FIPS 140-2]]></category>
		<category><![CDATA[GeoServer]]></category>
		<category><![CDATA[Iron Bank]]></category>
		<category><![CDATA[MapStore2]]></category>
		<category><![CDATA[NGS]]></category>
		<guid isPermaLink="false">https://newmoyergeospatial.com/?p=2876</guid>

					<description><![CDATA[<p>NGS is pleased to announce the 2025.3 release of CoreSpatial Server, Basemaps and Map Manager. We anticipate the release of Portal in the upcoming weeks based on MapStore2 v2025.01.01, as well as promoting FIPS compliance for GeoServer to a generally available release. Other exciting features on our roadmap include: CoreSpatial [&#8230;]</p>
<p>The post <a href="https://newmoyergeospatial.com/2025/09/corespatial-2025-q3-release-announcement/">CoreSpatial 2025-Q3 Release Announcement</a> first appeared on <a href="https://newmoyergeospatial.com"></a>.</p>]]></description>
										<content:encoded><![CDATA[<p class="wp-block-paragraph">NGS is pleased to announce the 2025.3 release of CoreSpatial <strong>Server, Basemaps</strong> and <strong>Map Manager</strong>. </p>



<p class="wp-block-paragraph">We anticipate the release of <a href="https://newmoyergeospatial.com/corespatial-portal/" title="CoreSpatial Portal"><strong>Portal</strong></a> in the upcoming weeks based on <a href="https://github.com/geosolutions-it/MapStore2/releases/tag/v2025.01.01" title="">MapStore2 v2025.01.01</a>, as well as promoting <a href="https://newmoyergeospatial.com/2025/08/corespatial-server-fips-compliance-geoserver/" title="">FIPS compliance for GeoServer</a> to a generally available release.</p>



<p class="wp-block-paragraph">Other exciting features on our roadmap include: </p>



<ul class="wp-block-list">
<li>Expanded deployment options with Docker Compose </li>



<li>AI Enablement via MCP API</li>



<li>Expanded FIPS 140 compliance across all CoreSpatial modules</li>
</ul>



<h1 class="wp-block-heading">CoreSpatial Server and Basemaps Release Notes</h1>



<h2 class="wp-block-heading">2025.3.5 (9/24/2025)</h2>



<ul class="wp-block-list">
<li>Docker setup scripts hardened and simplified:
<ul class="wp-block-list">
<li>Unified permission / ownership helpers (<code>fix_dir</code>, <code>fix_file</code>) across data load steps</li>



<li>More robust curl version / SigV4 capability detection and consolidated S3 / MinIO download logic</li>



<li>Non‑root friendly: scripts no longer require running as root</li>
</ul>
</li>



<li>Default basemap data storage now points to Cloudflare R2 (via <code>BUCKET_HOST</code>)</li>
</ul>



<h2 class="wp-block-heading">2025.3.4 (8/29/2025)</h2>



<ul class="wp-block-list">
<li>Update GeoServer to <a href="https://geoserver.org/announcements/2025/07/18/geoserver-2-27-2-released.html">2.27.2</a></li>



<li>Docker build now uses Iron Bank ubi9 base image</li>



<li>Minor improvements to docker setup script</li>
</ul>



<h2 class="wp-block-heading">2025.3.3 (8/14/2025)</h2>



<ul class="wp-block-list">
<li>Patch vulnerabilities in OpenJDK 17</li>
</ul>



<h2 class="wp-block-heading">2025.3.1 (7/2/2024)</h2>



<ul class="wp-block-list">
<li>Update PostgreSQL JDBC jar to <a href="https://jdbc.postgresql.org/changelogs/2025-06-11-42/">42.7.7</a> &#8211; patches <a href="https://nvd.nist.gov/vuln/detail/CVE-2025-49146">CVE-2025-49146</a></li>



<li>Update commons-beanutils to 1.11.0 &#8211; patches <a href="https://nvd.nist.gov/vuln/detail/CVE-2025-48734">CVE-2025-48734</a></li>
</ul>



<h2 class="wp-block-heading">2025.2.4 (7/1/2025)</h2>



<ul class="wp-block-list">
<li>Add logic for catalog manifest to allow for updates to catalog</li>
</ul>



<h1 class="wp-block-heading">CoreSpatial Map Manager Release Notes</h1>



<h2 class="wp-block-heading">2025.3.3 (9/22/2025)</h2>



<ul class="wp-block-list">
<li>Bump Spring Boot to <a href="https://github.com/spring-projects/spring-boot/releases/tag/v3.5.6">3.5.6</a> to clear 1 High severity CVE</li>
</ul>



<h2 class="wp-block-heading">2025.3.2 (8/27/2025)</h2>



<ul class="wp-block-list">
<li>Bump Spring Boot to <a href="https://github.com/spring-projects/spring-boot/releases/tag/v3.5.5">3.5.5</a> to clear 1 High and 1 Medium severity CVEs</li>
</ul>



<h2 class="wp-block-heading">2025.3.1 (7/7/2025)</h2>



<ul class="wp-block-list">
<li>Bump Postgres JDBC Jar to <a href="https://jdbc.postgresql.org/changelogs/2025-06-11-42/">42.7.7</a></li>



<li>Bump Spring Boot to <a href="https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.5-Release-Notes">3.5.3</a> to clear 1 High and 2 Medium severity CVEs</li>
</ul>



<p class="wp-block-paragraph"></p><p>The post <a href="https://newmoyergeospatial.com/2025/09/corespatial-2025-q3-release-announcement/">CoreSpatial 2025-Q3 Release Announcement</a> first appeared on <a href="https://newmoyergeospatial.com"></a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>CoreSpatial Server Adds  FIPS 140-2 Compliance to GeoServer</title>
		<link>https://newmoyergeospatial.com/2025/08/corespatial-server-fips-compliance-geoserver/</link>
		
		<dc:creator><![CDATA[Jason Newmoyer]]></dc:creator>
		<pubDate>Fri, 08 Aug 2025 00:42:18 +0000</pubDate>
				<category><![CDATA[CoreSpatial]]></category>
		<category><![CDATA[GeoServer]]></category>
		<category><![CDATA[Product Announcements]]></category>
		<category><![CDATA[Publications]]></category>
		<category><![CDATA[Compliance]]></category>
		<category><![CDATA[Container Security]]></category>
		<category><![CDATA[DoD]]></category>
		<category><![CDATA[FIPS]]></category>
		<category><![CDATA[FIPS 140]]></category>
		<category><![CDATA[FIPS 140-2]]></category>
		<category><![CDATA[Government IT]]></category>
		<category><![CDATA[NGS]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[RHEL]]></category>
		<category><![CDATA[Secure GIS]]></category>
		<guid isPermaLink="false">https://newmoyergeospatial.com/?p=2735</guid>

					<description><![CDATA[<p>We’re excited to announce a major enhancement to CoreSpatial Server: support for running GeoServer in FIPS 140 compliant mode on both Red Hat Enterprise Linux (RHEL) and containerized environments. This capability represents a key milestone for CoreSpatial as we continue to expand its use in high-security environments across government and [&#8230;]</p>
<p>The post <a href="https://newmoyergeospatial.com/2025/08/corespatial-server-fips-compliance-geoserver/">CoreSpatial Server Adds  FIPS 140-2 Compliance to GeoServer</a> first appeared on <a href="https://newmoyergeospatial.com"></a>.</p>]]></description>
										<content:encoded><![CDATA[<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:70%">
<p class="wp-block-paragraph">We’re excited to announce a major enhancement to <strong>CoreSpatial Server</strong>: support for running <a href="https://geoserver.org/"><strong>GeoServer</strong></a><strong> in FIPS 140 compliant mode</strong> on both <strong>Red Hat Enterprise Linux (RHEL)</strong> and containerized environments. This capability represents a key milestone for CoreSpatial as we continue to expand its use in high-security environments across government and enterprise sectors.</p>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:50%"><div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img fetchpriority="high" decoding="async" width="1024" height="1536" src="https://newmoyergeospatial.com/wp-content/uploads/2025/08/FIPS-140-GeoServer-Compliance.png" alt="CoreSpatial Server FIPS Mode GeoServer" class="wp-image-2734" style="width:237px;height:auto" srcset="https://newmoyergeospatial.com/wp-content/uploads/2025/08/FIPS-140-GeoServer-Compliance.png 1024w, https://newmoyergeospatial.com/wp-content/uploads/2025/08/FIPS-140-GeoServer-Compliance-200x300.png 200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div></div>
</div>



<h2 class="wp-block-heading"><strong>What Is FIPS Compliance and Why Does It Matter?</strong></h2>



<p class="wp-block-paragraph">FIPS stands for <strong>Federal Information Processing Standards</strong>, a set of publicly announced standards developed by the <a href="https://www.nist.gov/"><strong>National Institute of Standards and Technology (NIST)</strong></a> for use in computer systems by non-military government agencies and contractors. Specifically, <strong>FIPS 140-2 and 140-3</strong> relate to cryptographic module validation. They define the security requirements for cryptographic operations like encryption, hashing, and signing.</p>



<ul style="font-style:normal;font-weight:400" class="wp-block-list .line-height-fix">
<li class="has-medium-font-size">Learn more about<a href="https://csrc.nist.gov/publications/detail/fips/140/2/final"> FIPS 140-2<br></a></li>



<li class="has-medium-font-size">Explore the latest<a href="https://csrc.nist.gov/publications/detail/fips/140/3/final"> FIPS 140-3</a> standard<br></li>



<li class="has-medium-font-size">NIST’s full FIPS series can be found at<a href="https://csrc.nist.gov/publications/fips"> csrc.nist.gov<br></a></li>
</ul>



<p class="wp-block-paragraph">Many U.S. federal systems (and an increasing number of enterprise platforms handling sensitive or regulated data) are required to run only <strong>FIPS-validated cryptographic modules</strong>. Without this validation, software components like web services, authentication providers, or spatial data servers will be deemed unsuitable for use in secure environments, particularly those that handle Controlled Unclassified Information (<a href="https://www.dodcui.mil/">CUI</a>), Protected Health Information (<a href="https://www.hhs.gov/answers/hipaa/what-is-phi/index.html">PHI</a>), or mission-critical defense data.</p>



<h2 class="wp-block-heading"><strong>Why This Is a Big Deal for CoreSpatial and GeoServer Users</strong></h2>



<p class="wp-block-paragraph">GeoServer, a cornerstone of open-source geospatial services, is widely adopted across both public and private sectors. However, until now, deploying GeoServer in a FIPS-validated environment was not possible due to compatibility issues related to the use of older style JCEKS keystores for secret management, among other password handling issues.&nbsp;</p>



<p class="wp-block-paragraph">With this new release of <strong>CoreSpatial Server</strong>, we’ve resolved those limitations by:</p>



<ul class="wp-block-list">
<li><strong>Configuring the Java runtime environment</strong> to use <a href="https://www.bouncycastle.org/documentation/documentation-java/#bouncy-castle-java-fips-documentation">Bouncy Castle</a> <strong>FIPS 140-2 validated cryptographic providers </strong><strong><br></strong></li>



<li><strong>Hardening container images and RPM-based installations</strong> to ensure strict FIPS mode enforcement<br></li>



<li>Providing <strong>turnkey compatibility with RHEL FIPS-enabled operating systems</strong><strong><br></strong></li>



<li>Validating compatibility with secure ingress and <strong>TLS </strong>termination using <strong>approved ciphers and key lengths</strong><br></li>



<li>Ensuring <strong>continued compatibility with key plugins and extensions</strong>, such as WMS/WFS/WCS services, PostGIS integration, and security modules<br></li>
</ul>



<p class="wp-block-paragraph">This means CoreSpatial Server customers can now deploy GeoServer in environments where <strong>FIPS 140-2 compliance is not optional</strong> &#8211; including DoD, DHS, and state-level emergency management systems.</p>



<h2 class="wp-block-heading"><strong>Deployment Scenarios Supported</strong></h2>



<p class="wp-block-paragraph">The FIPS-compliant CoreSpatial Server supports:</p>



<ul class="wp-block-list">
<li>Bare metal or VM installations on <strong>RHEL 8 and 9 with FIPS mode enabled</strong><strong><br></strong></li>



<li>Containerized deployments using <strong>Podman, Docker, or Kubernetes</strong> where the underlying host supports FIPS 140-2 compliant cryptography<strong><br></strong></li>
</ul>



<p class="wp-block-paragraph">Whether you&#8217;re deploying in a SCIF, in a hybrid cloud with strict compliance policies, or inside an accredited container security boundary, CoreSpatial Server now enables you to take full advantage of GeoServer&#8217;s spatial publishing power without compromising on compliance.</p>



<h2 class="wp-block-heading"><strong>Get Started Today</strong></h2>



<p class="wp-block-paragraph">To explore FIPS-ready deployment options or see a demo, contact us at <a href="mailto:sales@newmoyergeospatial.com"><strong>sales@newmoyergeospatial.com</strong></a> or visit our<a href="https://newmoyergeospatial.com/corespatial"> <strong>CoreSpatial overview</strong></a>.</p>



<p class="wp-block-paragraph">For federal agencies and contractors already navigating <strong>FedRAMP, CMMC, or NIST 800-171</strong> compliance landscapes, this enhancement brings CoreSpatial one step closer to being your go-to open-source alternative for secure geospatial systems.</p><p>The post <a href="https://newmoyergeospatial.com/2025/08/corespatial-server-fips-compliance-geoserver/">CoreSpatial Server Adds  FIPS 140-2 Compliance to GeoServer</a> first appeared on <a href="https://newmoyergeospatial.com"></a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>CoreSpatial 2025-Q2 Release Announcement</title>
		<link>https://newmoyergeospatial.com/2025/06/corespatial-2025-q2-release-announcement/</link>
		
		<dc:creator><![CDATA[Jason Newmoyer]]></dc:creator>
		<pubDate>Thu, 12 Jun 2025 21:54:29 +0000</pubDate>
				<category><![CDATA[CoreSpatial]]></category>
		<category><![CDATA[Product Announcements]]></category>
		<category><![CDATA[FIPS]]></category>
		<category><![CDATA[GeoServer]]></category>
		<category><![CDATA[MapStore2]]></category>
		<category><![CDATA[NGS]]></category>
		<category><![CDATA[Portal]]></category>
		<guid isPermaLink="false">https://newmoyergeospatial.com/?p=2502</guid>

					<description><![CDATA[<p>This release includes major security and performance updates across the stack. We are hard at work to bring a new release of Portal based on the recently dropped MapStore2 v2025.01.00, as well as FIPS compliance for GeoServer (CS Server).</p>
<p>The post <a href="https://newmoyergeospatial.com/2025/06/corespatial-2025-q2-release-announcement/">CoreSpatial 2025-Q2 Release Announcement</a> first appeared on <a href="https://newmoyergeospatial.com"></a>.</p>]]></description>
										<content:encoded><![CDATA[<p class="wp-block-paragraph">Today, NGS has published the 2025.2 release of CoreSpatial <strong>Server, Basemaps</strong> and <strong>Map Manager</strong>. </p>



<p class="wp-block-paragraph">This release includes major security and performance updates across the stack. We are hard at work to bring a new release of <a href="https://newmoyergeospatial.com/corespatial-portal/" title="CoreSpatial Portal"><strong>Portal</strong></a> based on the recently dropped <a href="https://github.com/geosolutions-it/MapStore2/releases/tag/v2025.01.00" title="">MapStore2 v2025.01.00</a>, as well as FIPS compliance for <a href="https://geoserver.org/" title="">GeoServer</a> (CS Server). </p>



<h1 class="wp-block-heading">CoreSpatial Server and Basemaps Release Notes</h1>



<h2 class="wp-block-heading">2025.2.3 (6/10/2025)</h2>



<ul style="font-style:normal;font-weight:400" class="wp-block-list">
<li>Update GeoServer to <a href="https://geoserver.org/announcements/vulnerability/2025/05/13/geoserver-2-27-1-released.html">2.27.1</a></li>



<li>Update Jetty to <a href="https://github.com/jetty/jetty.project/releases/tag/jetty-9.4.57.v20241219">9.4.57.v20241219</a></li>



<li>Update PostgreSQL JDBC jar to <a href="https://jdbc.postgresql.org/changelogs/2025-05-28-42/">42.7.6</a></li>



<li>Update C3P0 Connection Pooling lib <a href="https://github.com/swaldman/c3p0/blob/v0.11.1/CHANGELOG">0.11.1</a></li>



<li>Update Marlin Jar to <a href="https://github.com/bourgesl/marlin-renderer/releases/tag/v0_9_4_8_jdk17">v0_9_4_8_jdk17</a></li>
</ul>



<h2 class="wp-block-heading">2025.2.2 (5/12/2025)</h2>



<ul class="wp-block-list">
<li>Add ability to map data from mounted volume in Kubernetes environment</li>
</ul>



<h2 class="wp-block-heading">2025.2.1 (5/2/2025)</h2>



<ul class="wp-block-list">
<li>Improvements to container initialization scripts</li>



<li>Multiple High and Medium severity security patches in OpenJDK, libexpat, c-ares, and giflib</li>



<li>Update OSM database to 3/31/2025 build</li>
</ul>



<h1 class="wp-block-heading">CoreSpatial Map Manager Release Notes</h1>



<h2 class="wp-block-heading">2025.2.2 (6/10/2025)</h2>



<ul class="wp-block-list">
<li>Bump Spring Boot to <a href="https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.5-Release-Notes">3.5.0</a> to clear 2 Low severity CVEs</li>



<li>Bump Python to <a href="https://docs.python.org/release/3.12.11/whatsnew/changelog.html#python-3-12-11">3.12.11</a> to clear multiple CVEs (Medium, High, and Critical severity)</li>



<li>Bump Postgres JDBC Jar to <a href="https://jdbc.postgresql.org/changelogs/2025-05-28-42/">42.7.6</a></li>
</ul>



<h2 class="wp-block-heading">2025.2.1 (5/2/2025)</h2>



<ul class="wp-block-list">
<li>Bump Spring Boot to 3.4.5 to clear multiple CVEs</li>
</ul><p>The post <a href="https://newmoyergeospatial.com/2025/06/corespatial-2025-q2-release-announcement/">CoreSpatial 2025-Q2 Release Announcement</a> first appeared on <a href="https://newmoyergeospatial.com"></a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Why Open Source GIS Is Ready for Mission-Critical Government Use</title>
		<link>https://newmoyergeospatial.com/2025/06/open-source-gis-government-use/</link>
		
		<dc:creator><![CDATA[Jason Newmoyer]]></dc:creator>
		<pubDate>Wed, 04 Jun 2025 19:49:33 +0000</pubDate>
				<category><![CDATA[Publications]]></category>
		<category><![CDATA[CesiumJS]]></category>
		<category><![CDATA[CoreSpatial]]></category>
		<category><![CDATA[Emergency Management]]></category>
		<category><![CDATA[GDAL]]></category>
		<category><![CDATA[GeoServer]]></category>
		<category><![CDATA[NGS]]></category>
		<category><![CDATA[OpenLayers]]></category>
		<category><![CDATA[PostGIS]]></category>
		<guid isPermaLink="false">https://newmoyergeospatial.com/?p=2490</guid>

					<description><![CDATA[<p>Discover how open-source GIS solutions like GeoServer, PostGIS, and CesiumJS are revolutionizing government operations, offering secure, flexible, and cost-effective alternatives for mission-critical applications.</p>
<p>The post <a href="https://newmoyergeospatial.com/2025/06/open-source-gis-government-use/">Why Open Source GIS Is Ready for Mission-Critical Government Use</a> first appeared on <a href="https://newmoyergeospatial.com"></a>.</p>]]></description>
										<content:encoded><![CDATA[<p class="wp-block-paragraph" style="font-size:16px">For years, open-source GIS was often seen as the underdog &#8211; powerful, flexible, but not always ready for the demanding requirements of national security, defense, and public sector operations. That perception is rapidly changing. Today, open-source geospatial platforms are powering mission-critical systems in federal agencies, the Department of Defense (DoD), and homeland security.</p>



<p class="wp-block-paragraph" style="font-size:16px">At NGS, we’ve seen this shift firsthand through CoreSpatial &#8211; our secure, customizable, open-source GIS stack designed specifically for federal use cases. Here&#8217;s why open-source GIS is now a viable, and often superior, option for government agencies.</p>



<h3 class="wp-block-heading"><strong>Reason #1: Security and Compliance Have Caught Up</strong></h3>



<p class="wp-block-paragraph" style="font-size:16px">Modern open-source GIS tools like <a href="https://geoserver.org/"><strong>GeoServer</strong></a>, <a href="https://postgis.net/"><strong>PostGIS</strong></a>, <a href="https://openlayers.org/"><strong>OpenLayers</strong></a><strong>, </strong>and <a href="https://cesium.com/platform/cesiumjs/"><strong>CesiumJS</strong></a><strong> </strong>now meet many of the same cybersecurity standards as commercial platforms. They benefit from active community and vendor-backed development cycles that rapidly address CVEs and harden default configurations.</p>



<p class="wp-block-paragraph" style="font-size:16px">With platforms like <a href="https://newmoyergeospatial.com/corespatial-solution-delivered/"><strong>CoreSpatial</strong></a>, NGS overlays strict DoD and FedRAMP-informed security architectures on top of these tools. Role-based access control, encrypted transport and storage, centralized logging, and auditing can all be configured from the start &#8211; without black-box components.</p>



<h2 class="wp-block-heading"><strong>Reason #2: Deployment Flexibility for Tactical and Enterprise Environments</strong></h2>



<p class="wp-block-paragraph" style="font-size:16px">One of the most powerful advantages of open-source GIS is deployment flexibility. CoreSpatial can run:</p>



<ul class="wp-block-list">
<li style="font-size:16px">On fully air-gapped networks</li>



<li style="font-size:16px">Inside cloud-native environments (<a href="https://aws.amazon.com/govcloud-us/">AWS GovCloud</a>, <a href="https://learn.microsoft.com/en-us/azure/compliance/offerings/offering-dod-il5">Azure IL5</a>)</li>



<li style="font-size:16px">On portable edge devices for field operations</li>
</ul>



<p class="wp-block-paragraph" style="font-size:16px">This is possible because you&#8217;re not locked into a vendor-controlled SaaS model or restrictive license agreement. Government teams have full control over how and where they operate their systems.</p>



<h3 class="wp-block-heading"><strong>Reason #3 Avoiding Lock-In While Enabling Innovation</strong></h3>



<p class="wp-block-paragraph" style="font-size:16px">Many federal agencies are trapped in decades-old licensing cycles with proprietary vendors. This creates two problems:</p>



<ul class="wp-block-list">
<li style="font-size:16px">High costs for marginal capability improvements</li>



<li style="font-size:16px">Little ability to customize or extend platforms to meet modern mission needs</li>
</ul>



<p class="wp-block-paragraph" style="font-size:16px">Open-source GIS flips this model. You own the code. You can customize it. And you can collaborate with an ecosystem of innovators &#8211; whether they’re internal developers, contractors, or commercial integrators.</p>



<h3 class="wp-block-heading"><strong>Reason #4 Interoperability and Open Standards</strong></h3>



<p class="wp-block-paragraph" style="font-size:16px">Interoperability is essential in environments where multiple agencies, systems, and coalitions must work together. CoreSpatial adheres to OGC standards out of the box, ensuring smooth data sharing across platforms, whether you&#8217;re integrating with NATO allies, municipal systems, or intelligence feeds.</p>



<p class="wp-block-paragraph" style="font-size:16px">Rather than relying on translation layers or costly middleware, open standards are native to the architecture.</p>



<h3 class="wp-block-heading"><strong>Reason #5 Real-World Use Cases Are Already Here</strong></h3>



<p class="wp-block-paragraph" style="font-size:16px">Open-source GIS isn’t theoretical &#8211; it’s operational. CoreSpatial and its component parts are already supporting use cases including:</p>



<ul class="wp-block-list">
<li style="font-size:16px"><strong>Command and control and situational awareness</strong> platforms using OpenLayers, Cesium, and GeoServer</li>



<li style="font-size:16px"><strong>Imagery processing and dissemination</strong> using GDAL, PostGIS, and GeoServer</li>



<li style="font-size:16px"><strong>Multi-domain targeting and air mission planning</strong> using PostGIS, GeoServer, OpenLayers,&nbsp; and CesiumJS<br></li>
</ul>



<p class="wp-block-paragraph" style="font-size:16px">These systems deliver real value today &#8211; and do so at a fraction of the traditional cost.</p>



<p class="wp-block-paragraph" style="font-size:16px">By the way, we are <strong>compiling a list of government programs and agencies</strong> that use open source GIS solutions today. We look forward to sharing those in the upcoming weeks ahead.&nbsp;</p>



<p class="wp-block-paragraph" style="font-size:16px">Feel free to drop us a line if you’d like to contribute! <a href="mailto:info@newmoyergeospatial.com">info@newmoyergeospatial.com</a></p>



<h3 class="wp-block-heading"><strong>Conclusion: Time to Rethink the Stack</strong></h3>



<p class="wp-block-paragraph">Open-source GIS is no longer a fringe solution. It’s a strategic asset for agencies looking to modernize geospatial capabilities, reduce risk, and stretch every budget dollar further.</p>



<p class="wp-block-paragraph">If you’re evaluating your next geospatial procurement or modernization effort, it may be time to rethink what’s possible &#8211; with open source.</p>



<p class="wp-block-paragraph"><strong>Want to see how CoreSpatial could fit your mission?</strong> <a href="mailto: info@newmoyergeospatial.com"><strong>Contact us</strong></a> for a live demo.</p><p>The post <a href="https://newmoyergeospatial.com/2025/06/open-source-gis-government-use/">Why Open Source GIS Is Ready for Mission-Critical Government Use</a> first appeared on <a href="https://newmoyergeospatial.com"></a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>The Importance of a Good Folder Structure in React &#038; Redux Toolkit Projects</title>
		<link>https://newmoyergeospatial.com/2025/03/the-importance-of-a-good-folder-structure-in-react-redux-toolkit-projects/</link>
		
		<dc:creator><![CDATA[Gary Rosenberry]]></dc:creator>
		<pubDate>Fri, 14 Mar 2025 18:22:35 +0000</pubDate>
				<category><![CDATA[Publications]]></category>
		<category><![CDATA[NGS]]></category>
		<category><![CDATA[React]]></category>
		<category><![CDATA[Redux]]></category>
		<category><![CDATA[Software Development]]></category>
		<guid isPermaLink="false">https://newmoyergeospatial.com/?p=1779</guid>

					<description><![CDATA[<p>Gary Rosenberry, Senior Software Developer, NGS Gary is an experienced Software Engineer with a demonstrated history of working in the computer software industry. Skilled in GO, Java, JavaScript, Spring, React/Redux, SQL, Government, Management. Strong engineering professional with a Bachelor&#8217;s degree focused in Computer Science and Programming from Shippensburg University of [&#8230;]</p>
<p>The post <a href="https://newmoyergeospatial.com/2025/03/the-importance-of-a-good-folder-structure-in-react-redux-toolkit-projects/">The Importance of a Good Folder Structure in React & Redux Toolkit Projects</a> first appeared on <a href="https://newmoyergeospatial.com"></a>.</p>]]></description>
										<content:encoded><![CDATA[<div style="height:44px" aria-hidden="true" class="wp-block-spacer"></div>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:83%">
<p class="wp-block-paragraph"><a href="https://newmoyergeospatial.com/meet-the-team-at-ngs/" title="">Gary Rosenberry</a>, Senior Software Developer, <a href="http://www.newmoyergeospatial.com" title="">NGS</a></p>



<p class="wp-block-paragraph" style="font-size:16px">Gary is an experienced Software Engineer with a demonstrated history of working in the computer software industry. Skilled in GO, Java, JavaScript, Spring, React/Redux, SQL, Government, Management. Strong engineering professional with a Bachelor&#8217;s degree focused in Computer Science and Programming from Shippensburg University of Pennsylvania.</p>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:17%">
<figure class="wp-block-image"><img decoding="async" width="800" height="800" src="https://newmoyergeospatial.com/wp-content/uploads/2024/05/Gary.jpg" alt="" class="wp-image-1333" srcset="https://newmoyergeospatial.com/wp-content/uploads/2024/05/Gary.jpg 800w, https://newmoyergeospatial.com/wp-content/uploads/2024/05/Gary-300x300.jpg 300w, https://newmoyergeospatial.com/wp-content/uploads/2024/05/Gary-150x150.jpg 150w, https://newmoyergeospatial.com/wp-content/uploads/2024/05/Gary-768x768.jpg 768w" sizes="(max-width: 800px) 100vw, 800px" /></figure>



<ul class="wp-block-social-links aligncenter is-content-justification-center is-layout-flex wp-container-core-social-links-is-layout-fe48e5de wp-block-social-links-is-layout-flex"><li class="wp-social-link wp-social-link-linkedin wp-block-social-link"><a href="https://www.linkedin.com/in/garyrosenberry/" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M19.7,3H4.3C3.582,3,3,3.582,3,4.3v15.4C3,20.418,3.582,21,4.3,21h15.4c0.718,0,1.3-0.582,1.3-1.3V4.3 C21,3.582,20.418,3,19.7,3z M8.339,18.338H5.667v-8.59h2.672V18.338z M7.004,8.574c-0.857,0-1.549-0.694-1.549-1.548 c0-0.855,0.691-1.548,1.549-1.548c0.854,0,1.547,0.694,1.547,1.548C8.551,7.881,7.858,8.574,7.004,8.574z M18.339,18.338h-2.669 v-4.177c0-0.996-0.017-2.278-1.387-2.278c-1.389,0-1.601,1.086-1.601,2.206v4.249h-2.667v-8.59h2.559v1.174h0.037 c0.356-0.675,1.227-1.387,2.526-1.387c2.703,0,3.203,1.779,3.203,4.092V18.338z"></path></svg><span class="wp-block-social-link-label screen-reader-text">LinkedIn</span></a></li></ul>
</div>
</div>



<h2 class="wp-block-heading alignwide">Introduction</h2>



<p class="wp-block-paragraph" style="font-size:16px">As a full-stack developer since November 2016, I’ve had the opportunity to work on a variety of custom web application solutions across different tech stacks. In recent years, I’ve shifted my focus toward leading front-end development efforts, primarily working with React. My experience spans Java, Go, and JavaScript, but my main expertise lies in building and maintaining React-based projects.<br></p>



<p class="wp-block-paragraph" style="font-size:16px">For the past four years, Redux has been my go-to tool for managing and organizing application state, and more recently, Redux Toolkit has become an essential part of my workflow. One of the most overlooked yet crucial aspects of working with these technologies is establishing a scalable and maintainable folder structure. A well-organized project can make a significant difference in code maintainability, collaboration, and long-term scalability.<br></p>



<p class="wp-block-paragraph" style="font-size:16px">In this article, I’ll share an example of structuring a React application using Redux Toolkit effectively. While this is not the only way to organize a project, it provides a solid foundation that can be adapted to different needs. Whether you’re starting a new project or refactoring an existing one, having a structured approach will save you and your team countless hours down the line.</p>



<div style="height:49px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading alignwide has-text-align-center">Why Folder Structure Matters</h2>



<div class="wp-block-media-text alignwide is-stacked-on-mobile" style="grid-template-columns:29% auto"><figure class="wp-block-media-text__media"><img decoding="async" width="772" height="771" src="https://newmoyergeospatial.com/wp-content/uploads/2025/03/folders.png" alt="" class="wp-image-1781 size-full" srcset="https://newmoyergeospatial.com/wp-content/uploads/2025/03/folders.png 772w, https://newmoyergeospatial.com/wp-content/uploads/2025/03/folders-300x300.png 300w, https://newmoyergeospatial.com/wp-content/uploads/2025/03/folders-150x150.png 150w, https://newmoyergeospatial.com/wp-content/uploads/2025/03/folders-768x767.png 768w" sizes="(max-width: 772px) 100vw, 772px" /></figure><div class="wp-block-media-text__content">
<h2 class="wp-block-heading has-text-align-center has-medium-font-size">The Downside of Poor Organization</h2>



<p class="wp-block-paragraph" style="font-size:16px">A poorly designed or inconsistent folder structure leads to wasted time and unnecessary confusion. Without clear guidelines, developers might struggle to find files, leading to delays and inefficiencies. More importantly, a lack of organization can make it difficult to understand how different parts of the application interact, increasing the risk of introducing bugs and technical debt.</p>
</div></div>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading alignwide has-text-align-left has-medium-font-size">The Benefits of a Well-Organized Project</h2>



<div class="wp-block-uagb-icon-list uagb-block-ba375bcf"><div class="uagb-icon-list__wrap">
<div class="wp-block-uagb-icon-list-child uagb-block-e5dd5bc1"><span class="uagb-icon-list__source-wrap"><svg xmlns="https://www.w3.org/2000/svg" viewBox="0 0 512 512"><path d="M156.6 384.9L125.7 353.1C117.2 345.5 114.2 333.1 117.1 321.8C120.1 312.9 124.1 301.3 129.8 288H24C15.38 288 7.414 283.4 3.146 275.9C-1.123 268.4-1.042 259.2 3.357 251.8L55.83 163.3C68.79 141.4 92.33 127.1 117.8 127.1H200C202.4 124 204.8 120.3 207.2 116.7C289.1-4.07 411.1-8.142 483.9 5.275C495.6 7.414 504.6 16.43 506.7 28.06C520.1 100.9 516.1 222.9 395.3 304.8C391.8 307.2 387.1 309.6 384 311.1V394.2C384 419.7 370.6 443.2 348.7 456.2L260.2 508.6C252.8 513 243.6 513.1 236.1 508.9C228.6 504.6 224 496.6 224 488V380.8C209.9 385.6 197.6 389.7 188.3 392.7C177.1 396.3 164.9 393.2 156.6 384.9V384.9zM384 167.1C406.1 167.1 424 150.1 424 127.1C424 105.9 406.1 87.1 384 87.1C361.9 87.1 344 105.9 344 127.1C344 150.1 361.9 167.1 384 167.1z"></path></svg></span><span class="uagb-icon-list__label">Faster Development: Developers can quickly locate files and follow predictable patterns, making it easier to add new features or modify existing ones.</span></div>



<div class="wp-block-uagb-icon-list-child uagb-block-11a0e592"><span class="uagb-icon-list__source-wrap"><svg xmlns="https://www.w3.org/2000/svg" viewBox="0 0 448 512"><path d="M160 80C160 53.49 181.5 32 208 32H240C266.5 32 288 53.49 288 80V432C288 458.5 266.5 480 240 480H208C181.5 480 160 458.5 160 432V80zM0 272C0 245.5 21.49 224 48 224H80C106.5 224 128 245.5 128 272V432C128 458.5 106.5 480 80 480H48C21.49 480 0 458.5 0 432V272zM400 96C426.5 96 448 117.5 448 144V432C448 458.5 426.5 480 400 480H368C341.5 480 320 458.5 320 432V144C320 117.5 341.5 96 368 96H400z"></path></svg></span><span class="uagb-icon-list__label">Reduced Complexity: Keeping related files together minimizes cross-file dependencies, reducing unexpected side effects.</span></div>



<div class="wp-block-uagb-icon-list-child uagb-block-e8ab11f0"><span class="uagb-icon-list__source-wrap"><svg xmlns="https://www.w3.org/2000/svg" viewBox="0 0 640 512"><path d="M0 383.9l64 .0404c17.75 0 32-14.29 32-32.03V128.3L0 128.3V383.9zM48 320.1c8.75 0 16 7.118 16 15.99c0 8.742-7.25 15.99-16 15.99S32 344.8 32 336.1C32 327.2 39.25 320.1 48 320.1zM348.8 64c-7.941 0-15.66 2.969-21.52 8.328L228.9 162.3C228.8 162.5 228.8 162.7 228.6 162.7C212 178.3 212.3 203.2 226.5 218.7c12.75 13.1 39.38 17.62 56.13 2.75C282.8 221.3 282.9 221.3 283 221.2l79.88-73.1c6.5-5.871 16.75-5.496 22.62 1c6 6.496 5.5 16.62-1 22.62l-26.12 23.87L504 313.7c2.875 2.496 5.5 4.996 7.875 7.742V127.1c-40.98-40.96-96.48-63.88-154.4-63.88L348.8 64zM334.6 217.4l-30 27.49c-29.75 27.11-75.25 24.49-101.8-4.371C176 211.2 178.1 165.7 207.3 138.9L289.1 64H282.5C224.7 64 169.1 87.08 128.2 127.9L128 351.8l18.25 .0369l90.5 81.82c27.5 22.37 67.75 18.12 90-9.246l18.12 15.24c15.88 12.1 39.38 10.5 52.38-5.371l31.38-38.6l5.374 4.498c13.75 11 33.88 9.002 45-4.748l9.538-11.78c11.12-13.75 9.036-33.78-4.694-44.93L334.6 217.4zM544 128.4v223.6c0 17.62 14.25 32.05 31.1 32.05L640 384V128.1L544 128.4zM592 352c-8.75 0-16-7.246-16-15.99c0-8.875 7.25-15.99 16-15.99S608 327.2 608 336.1C608 344.8 600.8 352 592 352z"></path></svg></span><span class="uagb-icon-list__label">Easier Collaboration: A clear structure ensures that new team members can onboard quickly without needing excessive guidance.</span></div>
</div></div>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading alignwide has-text-align-center">Core Principles of a Good Folder Structure</h2>



<blockquote class="wp-block-quote alignwide is-layout-flow wp-block-quote-is-layout-flow">
<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="has-text-align-center wp-block-paragraph" style="font-size:16px">A well-structured project should be <strong>logical</strong>, <strong>scalable</strong>, and <strong>easy to navigate</strong>. Here are the key principles to follow:</p>



<pre class="wp-block-code"><code>src/
  app/
    App.tsx
    store.ts
  features/
    auth/
      components/
        AuthForm.tsx
      authSlice.ts
    dashboard/
      components/
        Dashboard.tsx
      dashboardSlice.ts
</code></pre>



<h2 class="wp-block-heading has-text-align-center">Feature-Based Organization</h2>



<p class="wp-block-paragraph" style="font-size:16px">Instead of organizing files solely by type (e.g., a global components/ or redux/ folder), structure them around distinct features.</p>



<p class="wp-block-paragraph" style="font-size:16px">This method ensures that each feature is self-contained, making it easier to update or remove functionality without affecting unrelated parts of the application.</p>
</blockquote>
</blockquote>



<div class="wp-block-columns alignwide is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:30%"></div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:70%"></div>
</div>



<h2 class="wp-block-heading alignwide has-text-align-center">API Folder with RTK Query</h2>



<p class="wp-block-paragraph" style="font-size:16px">To manage API interactions efficiently, we separate API logic into its own folder. This is a personal choice, but I prefer abstracting my API into its own folder. This allows me to code-split the API and re-use these pieces across features.</p>



<pre class="wp-block-code alignwide"><code>src/
  api/
    api.ts
    authApi.ts
    dashboardApi.ts</code></pre>



<div class="wp-block-columns alignwide is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<h3 class="wp-block-heading has-text-align-center">Base API Setup (api. ts)</h3>



<pre class="wp-block-code alignwide"><code>import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react';

export const api = createApi({
  reducerPath: 'api',
  baseQuery: fetchBaseQuery({ baseUrl: '/api' }),
  endpoints: () =&gt; ({}), // Additional endpoints are injected separately
});
</code></pre>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<h3 class="wp-block-heading has-text-align-center">Injecting Feature-Specific Endpoints (authApi. ts)</h3>



<pre class="wp-block-code"><code>
import { api } from './api';

export const authApi = api.injectEndpoints({
  endpoints: (builder) =&gt; ({
    login: builder.mutation({
      query: (credentials) =&gt; ({
        url: '/auth/login',
        method: 'POST',
        body: credentials,
      }),
    }),
  }),
});

export const { useLoginMutation } = authApi;

</code></pre>
</div>
</div>



<p class="has-text-align-center wp-block-paragraph" style="font-size:16px">This approach allows us to add API endpoints dynamically, keeping the code modular and easier to manage.</p>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading alignwide has-text-align-center">Common Folder for Shared Logic</h2>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow">
<p class="has-text-align-left wp-block-paragraph" style="font-size:16px">To avoid redundant code, we place reusable logic inside a common/ directory.</p>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<pre class="wp-block-code"><code>src/
  common/
    hooks/
      useAuth.ts
      useDebounce.ts
    utils/
      dateFormatter.ts
      apiHelper.ts
    components/
      Button.tsx
      Modal.tsx</code></pre>
</div>
</div>



<div class="wp-block-columns alignwide is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<h3 class="wp-block-heading has-text-align-center has-medium-font-size">Hooks (hooks/)</h3>



<pre class="wp-block-code"><code>import { useGetUserQuery } from '../api/authApi';

export const useAuth = () =&gt; {
  const { data: user, isLoading } = useGetUserQuery();
  return { user, isLoading, isAuthenticated: !!user };
};
</code></pre>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<h3 class="wp-block-heading has-text-align-center has-medium-font-size">Utility Functions (utils/)</h3>



<pre class="wp-block-code"><code>export const formatDate = (date: string) =&gt; {
  return new Date(date).toLocaleDateString();
};
</code></pre>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<h3 class="wp-block-heading has-text-align-center has-medium-font-size">Reusable Components (components/)</h3>



<pre class="wp-block-code"><code>export const Button: React.FC&lt;{ text: string; onClick: () =&gt; void }&gt; = ({ text, onClick }) =&gt; {
  return &lt;button className="px-4 py-2 bg-blue-500 text-white rounded" onClick={onClick}&gt;{text}&lt;/button&gt;;
};
</code></pre>
</div>
</div>



<h3 class="wp-block-heading alignwide has-text-align-center">Caution When Editing common/</h3>


      
			<div class="uagb-icon-wrapper uagb-block-d920b0a6      "
			style="" >
									<span class="uagb-svg-wrapper" 
					 aria-label="triangle-exclamation"					tabindex="0">		
										<svg xmlns="https://www.w3.org/2000/svg" viewBox= "0 0 512 512" role="graphics-symbol" aria-hidden="false" aria-label=""><path d="M506.3 417l-213.3-364c-16.33-28-57.54-28-73.98 0l-213.2 364C-10.59 444.9 9.849 480 42.74 480h426.6C502.1 480 522.6 445 506.3 417zM232 168c0-13.25 10.75-24 24-24S280 154.8 280 168v128c0 13.25-10.75 24-23.1 24S232 309.3 232 296V168zM256 416c-17.36 0-31.44-14.08-31.44-31.44c0-17.36 14.07-31.44 31.44-31.44s31.44 14.08 31.44 31.44C287.4 401.9 273.4 416 256 416z"></path></svg>
									</span>
							</div>
			


<p class="has-text-align-center wp-block-paragraph" style="font-size:16px"><strong>Since shared logic affects multiple parts of the application, updates should be handled carefully:</strong></p>



<div class="wp-block-uagb-icon-list uagb-block-6e2dcc37"><div class="uagb-icon-list__wrap">
<div class="wp-block-uagb-icon-list-child uagb-block-80a905d9"><span class="uagb-icon-list__source-wrap"><svg xmlns="https://www.w3.org/2000/svg" viewBox="0 0 448 512"><path d="M438.6 105.4C451.1 117.9 451.1 138.1 438.6 150.6L182.6 406.6C170.1 419.1 149.9 419.1 137.4 406.6L9.372 278.6C-3.124 266.1-3.124 245.9 9.372 233.4C21.87 220.9 42.13 220.9 54.63 233.4L159.1 338.7L393.4 105.4C405.9 92.88 426.1 92.88 438.6 105.4H438.6z"></path></svg></span><span class="uagb-icon-list__label">Test thoroughly before modifying shared hooks, utilities, or components.</span></div>



<div class="wp-block-uagb-icon-list-child uagb-block-9584734e"><span class="uagb-icon-list__source-wrap"><svg xmlns="https://www.w3.org/2000/svg" viewBox="0 0 448 512"><path d="M438.6 105.4C451.1 117.9 451.1 138.1 438.6 150.6L182.6 406.6C170.1 419.1 149.9 419.1 137.4 406.6L9.372 278.6C-3.124 266.1-3.124 245.9 9.372 233.4C21.87 220.9 42.13 220.9 54.63 233.4L159.1 338.7L393.4 105.4C405.9 92.88 426.1 92.88 438.6 105.4H438.6z"></path></svg></span><span class="uagb-icon-list__label">Communicate changes to ensure all developers are aware of updates.</span></div>



<div class="wp-block-uagb-icon-list-child uagb-block-a2546cc7"><span class="uagb-icon-list__source-wrap"><svg xmlns="https://www.w3.org/2000/svg" viewBox="0 0 448 512"><path d="M438.6 105.4C451.1 117.9 451.1 138.1 438.6 150.6L182.6 406.6C170.1 419.1 149.9 419.1 137.4 406.6L9.372 278.6C-3.124 266.1-3.124 245.9 9.372 233.4C21.87 220.9 42.13 220.9 54.63 233.4L159.1 338.7L393.4 105.4C405.9 92.88 426.1 92.88 438.6 105.4H438.6z"></path></svg></span><span class="uagb-icon-list__label">Maintain backward compatibility whenever possible.</span></div>
</div></div>



<div style="height:73px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading has-text-align-center">Final Thoughts</h2>



<div class="wp-block-media-text alignwide is-stacked-on-mobile" style="grid-template-columns:38% auto"><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="770" height="770" src="https://newmoyergeospatial.com/wp-content/uploads/2025/03/organized.png" alt="" class="wp-image-1795 size-full" srcset="https://newmoyergeospatial.com/wp-content/uploads/2025/03/organized.png 770w, https://newmoyergeospatial.com/wp-content/uploads/2025/03/organized-300x300.png 300w, https://newmoyergeospatial.com/wp-content/uploads/2025/03/organized-150x150.png 150w, https://newmoyergeospatial.com/wp-content/uploads/2025/03/organized-768x768.png 768w" sizes="auto, (max-width: 770px) 100vw, 770px" /></figure><div class="wp-block-media-text__content">
<p class="has-text-align-center wp-block-paragraph" style="font-size:16px">A good folder structure isn&#8217;t about following rigid rules—it&#8217;s about creating a setup that makes your project <strong>scalable, maintainable, and easy to navigate.</strong> While this isn’t the only way to structure a React project, it provides a strong foundation that can be adapted to different team preferences and project requirements. By adopting a feature-based organization, a modular API layer, and a structured common folder, you can reduce technical debt, improve collaboration, and boost development efficiency.</p>
</div></div>



<p class="wp-block-paragraph"></p><p>The post <a href="https://newmoyergeospatial.com/2025/03/the-importance-of-a-good-folder-structure-in-react-redux-toolkit-projects/">The Importance of a Good Folder Structure in React & Redux Toolkit Projects</a> first appeared on <a href="https://newmoyergeospatial.com"></a>.</p>]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
