Add Setup for a MAC
+174
@@ -0,0 +1,174 @@
|
||||
<html>
|
||||
<body>
|
||||
<!--StartFragment--><h1 data-start="214" data-end="280">Running Ballistic Builder (Spring Boot + Next.js) on macOS (zsh)</h1>
|
||||
<p data-start="282" data-end="414">This guide explains how to run the <strong data-start="317" data-end="353">Ballistic Builder Spring backend</strong> and the <strong data-start="362" data-end="382">Next.js frontend</strong> locally on <strong data-start="394" data-end="413">macOS using zsh</strong>.</p>
|
||||
<hr data-start="416" data-end="419">
|
||||
<h2 data-start="421" data-end="432">Overview</h2>
|
||||
<div class="TyagGW_tableContainer"><div tabindex="-1" class="group TyagGW_tableWrapper flex w-fit flex-col-reverse">
|
||||
Component | Technology | Port
|
||||
-- | -- | --
|
||||
Backend | Spring Boot (Java 21, Maven) | 8080
|
||||
Frontend | Next.js | 3000
|
||||
API Base Path | REST API | /api/v1
|
||||
|
||||
</div></div>
|
||||
<hr data-start="626" data-end="629">
|
||||
<h2 data-start="631" data-end="647">Prerequisites</h2>
|
||||
<ul data-start="649" data-end="736">
|
||||
<li data-start="649" data-end="656">
|
||||
<p data-start="651" data-end="656">macOS</p>
|
||||
</li>
|
||||
<li data-start="657" data-end="696">
|
||||
<p data-start="659" data-end="696"><code data-start="659" data-end="664">zsh</code> (default shell on modern macOS)</p>
|
||||
</li>
|
||||
<li data-start="697" data-end="736">
|
||||
<p data-start="699" data-end="736">Internet access to clone repositories</p>
|
||||
</li>
|
||||
</ul>
|
||||
<hr data-start="738" data-end="741">
|
||||
<h2 data-start="743" data-end="771">1. Install Required Tools</h2>
|
||||
<h3 data-start="773" data-end="820">Install Homebrew (if not already installed)</h3>
|
||||
<pre class="overflow-visible! px-0!" data-start="822" data-end="928"><div class="contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary"><div class="sticky top-[calc(--spacing(9)+var(--header-height))] @w-xl/main:top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs"></div></div></div><div class="overflow-y-auto p-4" dir="ltr"><code class="whitespace-pre! language-zsh"><span><span>/bin/bash -c </span><span><span class="hljs-string">"<span class="hljs-subst">$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)</span></span></span><span>"
|
||||
</span></span></code></div></div></pre>
|
||||
<h3 data-start="930" data-end="954">Install dependencies</h3>
|
||||
<pre class="overflow-visible! px-0!" data-start="956" data-end="1037"><div class="contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary"><div class="sticky top-[calc(--spacing(9)+var(--header-height))] @w-xl/main:top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs"></div></div></div><div class="overflow-y-auto p-4" dir="ltr"><code class="whitespace-pre! language-zsh"><span><span>brew update
|
||||
brew install git maven node
|
||||
brew install --cask temurin@21
|
||||
</span></span></code></div></div></pre>
|
||||
<h3 data-start="1039" data-end="1063">Verify installations</h3>
|
||||
<pre class="overflow-visible! px-0!" data-start="1065" data-end="1153"><div class="contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary"><div class="sticky top-[calc(--spacing(9)+var(--header-height))] @w-xl/main:top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs"></div></div></div><div class="overflow-y-auto p-4" dir="ltr"><code class="whitespace-pre! language-zsh"><span><span>java -version </span><span><span class="hljs-comment"># Must be Java 21</span></span><span>
|
||||
mvn -version
|
||||
node -v
|
||||
npm -v
|
||||
git --version
|
||||
</span></span></code></div></div></pre>
|
||||
<hr data-start="1155" data-end="1158">
|
||||
<h2 data-start="1160" data-end="1191">2. Configure Java 21 for zsh</h2>
|
||||
<p data-start="1193" data-end="1226">Ensure Java 21 is the active JDK.</p>
|
||||
<p data-start="1228" data-end="1265">Add the following to your <code data-start="1254" data-end="1264">~/.zshrc</code>:</p>
|
||||
<pre class="overflow-visible! px-0!" data-start="1267" data-end="1361"><div class="contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary"><div class="sticky top-[calc(--spacing(9)+var(--header-height))] @w-xl/main:top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs"></div></div></div><div class="overflow-y-auto p-4" dir="ltr"><code class="whitespace-pre! language-zsh"><span><span><span class="hljs-built_in">export</span></span><span> JAVA_HOME=$(/usr/libexec/java_home -v 21)
|
||||
</span><span><span class="hljs-built_in">export</span></span><span> PATH=</span><span><span class="hljs-string">"<span class="hljs-variable">$JAVA_HOME</span></span></span><span>/bin:</span><span><span class="hljs-variable">$PATH</span></span><span>"
|
||||
</span></span></code></div></div></pre>
|
||||
<p data-start="1363" data-end="1377">Apply changes:</p>
|
||||
<pre class="overflow-visible! px-0!" data-start="1379" data-end="1405"><div class="contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary"><div class="sticky top-[calc(--spacing(9)+var(--header-height))] @w-xl/main:top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs"></div></div></div><div class="overflow-y-auto p-4" dir="ltr"><code class="whitespace-pre! language-zsh"><span><span><span class="hljs-built_in">source</span></span><span> ~/.zshrc
|
||||
</span></span></code></div></div></pre>
|
||||
<p data-start="1407" data-end="1415">Confirm:</p>
|
||||
<pre class="overflow-visible! px-0!" data-start="1417" data-end="1454"><div class="contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary"><div class="sticky top-[calc(--spacing(9)+var(--header-height))] @w-xl/main:top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs"></div></div></div><div class="overflow-y-auto p-4" dir="ltr"><code class="whitespace-pre! language-zsh"><span><span>java -version
|
||||
mvn -version
|
||||
</span></span></code></div></div></pre>
|
||||
<hr data-start="1456" data-end="1459">
|
||||
<h2 data-start="1461" data-end="1485">3. Clone Repositories</h2>
|
||||
<p data-start="1487" data-end="1516">Create a workspace directory:</p>
|
||||
<pre class="overflow-visible! px-0!" data-start="1518" data-end="1552"><div class="contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary"><div class="sticky top-[calc(--spacing(9)+var(--header-height))] @w-xl/main:top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs"></div></div></div><div class="overflow-y-auto p-4" dir="ltr"><code class="whitespace-pre! language-zsh"><span><span><span class="hljs-built_in">mkdir</span></span><span> -p ~/dev
|
||||
</span><span><span class="hljs-built_in">cd</span></span><span> ~/dev
|
||||
</span></span></code></div></div></pre>
|
||||
<p data-start="1554" data-end="1598">Clone the backend and frontend repositories:</p>
|
||||
<pre class="overflow-visible! px-0!" data-start="1600" data-end="1761"><div class="contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary"><div class="sticky top-[calc(--spacing(9)+var(--header-height))] @w-xl/main:top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs"></div></div></div><div class="overflow-y-auto p-4" dir="ltr"><code class="whitespace-pre! language-zsh"><span><span>git </span><span><span class="hljs-built_in">clone</span></span><span> https://gitea.gofwd.group/Forward_Group/ballistic-builder-spring.git
|
||||
git </span><span><span class="hljs-built_in">clone</span></span><span> https://gitea.gofwd.group/sean/shadow-gunbuilder-ai-proto.git
|
||||
</span></span></code></div></div></pre>
|
||||
<hr data-start="1763" data-end="1766">
|
||||
<h2 data-start="1768" data-end="1813">4. Run the Spring Boot Backend (Port 8080)</h2>
|
||||
<p data-start="1815" data-end="1842">Open <strong data-start="1820" data-end="1841">Terminal Window 1</strong>:</p>
|
||||
<pre class="overflow-visible! px-0!" data-start="1844" data-end="1939"><div class="contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary"><div class="sticky top-[calc(--spacing(9)+var(--header-height))] @w-xl/main:top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs"></div></div></div><div class="overflow-y-auto p-4" dir="ltr"><code class="whitespace-pre! language-zsh"><span><span><span class="hljs-built_in">cd</span></span><span> ~/dev/ballistic-builder-spring/ballistic-builder-spring
|
||||
mvn clean spring-boot:run
|
||||
</span></span></code></div></div></pre>
|
||||
<p data-start="1941" data-end="1963">Backend will start at:</p>
|
||||
<pre class="overflow-visible! px-0!" data-start="1965" data-end="1994"><div class="contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary"><div class="sticky top-[calc(--spacing(9)+var(--header-height))] @w-xl/main:top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs"></div></div></div><div class="overflow-y-auto p-4" dir="ltr"><code class="whitespace-pre!"><span><span>http:</span><span><span class="hljs-comment">//localhost:8080</span></span><span>
|
||||
</span></span></code></div></div></pre>
|
||||
<p data-start="1996" data-end="2030">API endpoints are available under:</p>
|
||||
<pre class="overflow-visible! px-0!" data-start="2032" data-end="2068"><div class="contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary"><div class="sticky top-[calc(--spacing(9)+var(--header-height))] @w-xl/main:top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs"></div></div></div><div class="overflow-y-auto p-4" dir="ltr"><code class="whitespace-pre!"><span><span>http://localhost:8080/api/v1
|
||||
</span></span></code></div></div></pre>
|
||||
<h3 data-start="2070" data-end="2103">Optional: Run as packaged JAR</h3>
|
||||
<pre class="overflow-visible! px-0!" data-start="2105" data-end="2156"><div class="contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary"><div class="sticky top-[calc(--spacing(9)+var(--header-height))] @w-xl/main:top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs"></div></div></div><div class="overflow-y-auto p-4" dir="ltr"><code class="whitespace-pre! language-zsh"><span><span>mvn clean package
|
||||
java -jar target/*.jar
|
||||
</span></span></code></div></div></pre>
|
||||
<hr data-start="2158" data-end="2161">
|
||||
<h2 data-start="2163" data-end="2210">5. Configure Next.js API Proxy (Recommended)</h2>
|
||||
<p data-start="2212" data-end="2275">To avoid CORS issues, Next.js should proxy API calls to Spring.</p>
|
||||
<p data-start="2277" data-end="2292">Edit or create:</p>
|
||||
<pre class="overflow-visible! px-0!" data-start="2294" data-end="2343"><div class="contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary"><div class="sticky top-[calc(--spacing(9)+var(--header-height))] @w-xl/main:top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs"></div></div></div><div class="overflow-y-auto p-4" dir="ltr"><code class="whitespace-pre!"><span><span>shadow-gunbuilder-ai-proto/</span><span><span class="hljs-built_in">next</span></span><span>.</span><span><span class="hljs-built_in">config</span></span><span>.js
|
||||
</span></span></code></div></div></pre>
|
||||
<pre class="overflow-visible! px-0!" data-start="2345" data-end="2606"><div class="contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary"><div class="sticky top-[calc(--spacing(9)+var(--header-height))] @w-xl/main:top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs"></div></div></div><div class="overflow-y-auto p-4" dir="ltr"><code class="whitespace-pre! language-js"><span><span><span class="hljs-comment">/** <span class="hljs-doctag">@type</span></span></span><span> {</span><span><span class="hljs-type">import('next').NextConfig</span></span><span>} */
|
||||
</span><span><span class="hljs-keyword">const</span></span><span> nextConfig = {
|
||||
</span><span><span class="hljs-keyword">async</span></span><span> </span><span><span class="hljs-title function_">rewrites</span></span><span>(</span><span><span class="hljs-params"></span></span><span>) {
|
||||
</span><span><span class="hljs-keyword">return</span></span><span> [
|
||||
{
|
||||
</span><span><span class="hljs-attr">source</span></span><span>: </span><span><span class="hljs-string">"/api/v1/:path*"</span></span><span>,
|
||||
</span><span><span class="hljs-attr">destination</span></span><span>: </span><span><span class="hljs-string">"http://localhost:8080/api/v1/:path*"</span></span><span>,
|
||||
},
|
||||
];
|
||||
},
|
||||
};
|
||||
|
||||
</span><span><span class="hljs-variable language_">module</span></span><span>.</span><span><span class="hljs-property">exports</span></span><span> = nextConfig;
|
||||
</span></span></code></div></div></pre>
|
||||
<blockquote data-start="2608" data-end="2669">
|
||||
<p data-start="2610" data-end="2669">⚠️ Important: API version <strong data-start="2636" data-end="2657">must be lowercase</strong> (<code data-start="2659" data-end="2668">/api/v1</code>)</p>
|
||||
</blockquote>
|
||||
<hr data-start="2671" data-end="2674">
|
||||
<h2 data-start="2676" data-end="2718">6. Run the Next.js Frontend (Port 3000)</h2>
|
||||
<p data-start="2720" data-end="2747">Open <strong data-start="2725" data-end="2746">Terminal Window 2</strong>:</p>
|
||||
<pre class="overflow-visible! px-0!" data-start="2749" data-end="2819"><div class="contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary"><div class="sticky top-[calc(--spacing(9)+var(--header-height))] @w-xl/main:top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs"></div></div></div><div class="overflow-y-auto p-4" dir="ltr"><code class="whitespace-pre! language-zsh"><span><span><span class="hljs-built_in">cd</span></span><span> ~/dev/shadow-gunbuilder-ai-proto
|
||||
npm install
|
||||
npm run dev
|
||||
</span></span></code></div></div></pre>
|
||||
<p data-start="2821" data-end="2851">Frontend will be available at:</p>
|
||||
<pre class="overflow-visible! px-0!" data-start="2853" data-end="2882"><div class="contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary"><div class="sticky top-[calc(--spacing(9)+var(--header-height))] @w-xl/main:top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs"></div></div></div><div class="overflow-y-auto p-4" dir="ltr"><code class="whitespace-pre!"><span><span>http:</span><span><span class="hljs-comment">//localhost:3000</span></span><span>
|
||||
</span></span></code></div></div></pre>
|
||||
<hr data-start="2884" data-end="2887">
|
||||
<h2 data-start="2889" data-end="2914">7. Verify Connectivity</h2>
|
||||
<h3 data-start="2916" data-end="2932">Backend test</h3>
|
||||
<pre class="overflow-visible! px-0!" data-start="2934" data-end="2978"><div class="contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary"><div class="sticky top-[calc(--spacing(9)+var(--header-height))] @w-xl/main:top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs"></div></div></div><div class="overflow-y-auto p-4" dir="ltr"><code class="whitespace-pre! language-zsh"><span><span>curl http://localhost:8080/api/v1
|
||||
</span></span></code></div></div></pre>
|
||||
<h3 data-start="2980" data-end="3003">Frontend proxy test</h3>
|
||||
<pre class="overflow-visible! px-0!" data-start="3005" data-end="3049"><div class="contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary"><div class="sticky top-[calc(--spacing(9)+var(--header-height))] @w-xl/main:top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs"></div></div></div><div class="overflow-y-auto p-4" dir="ltr"><code class="whitespace-pre! language-zsh"><span><span>curl http://localhost:3000/api/v1
|
||||
</span></span></code></div></div></pre>
|
||||
<p data-start="3051" data-end="3105">(Replace <code data-start="3060" data-end="3069">/api/v1</code> with a real endpoint if necessary.)</p>
|
||||
<hr data-start="3107" data-end="3110">
|
||||
<h2 data-start="3112" data-end="3139">8. Common Issues & Fixes</h2>
|
||||
<h3 data-start="3141" data-end="3164">Port already in use</h3>
|
||||
<pre class="overflow-visible! px-0!" data-start="3166" data-end="3204"><div class="contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary"><div class="sticky top-[calc(--spacing(9)+var(--header-height))] @w-xl/main:top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs"></div></div></div><div class="overflow-y-auto p-4" dir="ltr"><code class="whitespace-pre! language-zsh"><span><span>lsof -i :8080
|
||||
lsof -i :3000
|
||||
</span></span></code></div></div></pre>
|
||||
<p data-start="3206" data-end="3221">Stop a process:</p>
|
||||
<pre class="overflow-visible! px-0!" data-start="3223" data-end="3247"><div class="contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary"><div class="sticky top-[calc(--spacing(9)+var(--header-height))] @w-xl/main:top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs"></div></div></div><div class="overflow-y-auto p-4" dir="ltr"><code class="whitespace-pre! language-zsh"><span><span><span class="hljs-built_in">kill</span></span><span> -9 <PID>
|
||||
</span></span></code></div></div></pre>
|
||||
<hr data-start="3249" data-end="3252">
|
||||
<h3 data-start="3254" data-end="3288">Maven using wrong Java version</h3>
|
||||
<pre class="overflow-visible! px-0!" data-start="3290" data-end="3313"><div class="contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary"><div class="sticky top-[calc(--spacing(9)+var(--header-height))] @w-xl/main:top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs"></div></div></div><div class="overflow-y-auto p-4" dir="ltr"><code class="whitespace-pre! language-zsh"><span><span>mvn -version
|
||||
</span></span></code></div></div></pre>
|
||||
<p data-start="3315" data-end="3319">Fix:</p>
|
||||
<pre class="overflow-visible! px-0!" data-start="3321" data-end="3396"><div class="contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary"><div class="sticky top-[calc(--spacing(9)+var(--header-height))] @w-xl/main:top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs"></div></div></div><div class="overflow-y-auto p-4" dir="ltr"><code class="whitespace-pre! language-zsh"><span><span><span class="hljs-built_in">export</span></span><span> JAVA_HOME=$(/usr/libexec/java_home -v 21)
|
||||
</span><span><span class="hljs-built_in">source</span></span><span> ~/.zshrc
|
||||
</span></span></code></div></div></pre>
|
||||
<hr data-start="3398" data-end="3401">
|
||||
<h3 data-start="3403" data-end="3422">API returns 404</h3>
|
||||
<ul data-start="3424" data-end="3572">
|
||||
<li data-start="3424" data-end="3473">
|
||||
<p data-start="3426" data-end="3473">Confirm all paths use <strong data-start="3448" data-end="3461"><code data-start="3450" data-end="3459">/api/v1</code></strong> (lowercase)</p>
|
||||
</li>
|
||||
<li data-start="3474" data-end="3523">
|
||||
<p data-start="3476" data-end="3523">Restart Next.js after changing <code data-start="3507" data-end="3523">next.config.js</code></p>
|
||||
</li>
|
||||
<li data-start="3524" data-end="3572">
|
||||
<p data-start="3526" data-end="3572">Verify Spring controllers are mapped correctly</p>
|
||||
</li>
|
||||
</ul>
|
||||
<hr data-start="3574" data-end="3577">
|
||||
<h2 data-start="3579" data-end="3626">9. Running Both Services Together (Optional)</h2>
|
||||
<p data-start="3628" data-end="3710">Using two terminals is recommended, but you can also run both with <code data-start="3695" data-end="3709">concurrently</code>:</p>
|
||||
<pre class="overflow-visible! px-0!" data-start="3712" data-end="3748"><div class="contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary"><div class="sticky top-[calc(--spacing(9)+var(--header-height))] @w-xl/main:top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs"></div></div></div><div class="overflow-y-auto p-4" dir="ltr"><code class="whitespace-pre! language-zsh"><span><span>brew install concurrently
|
||||
</span></span></code></div></div></pre>
|
||||
<pre class="overflow-visible! px-0!" data-start="3750" data-end="3918"><div class="contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary"><div class="sticky top-[calc(--spacing(9)+var(--header-height))] @w-xl/main:top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs"></div></div></div><div class="overflow-y-auto p-4" dir="ltr"><code class="whitespace-pre! language-zsh"><span><span>concurrently \
|
||||
</span><span><span class="hljs-string">"cd ~/dev/ballistic-builder-spring/ballistic-builder-spring && mvn spring-boot:run"</span></span><span> \
|
||||
</span><span><span class="hljs-string">"cd ~/dev/shadow-gunbuilder-ai-proto && npm run dev"</span></span><span>
|
||||
</span></span></code></div></div></pre>
|
||||
<hr data-start="3920" data-end="3923">
|
||||
<h2 data-start="3925" data-end="3935">Summary</h2>
|
||||
<p data-start="3937" data-end="4045">✔ Java 21<br data-start="3946" data-end="3949">
|
||||
✔ Spring Boot on <code data-start="3966" data-end="3972">8080</code><br data-start="3972" data-end="3975">
|
||||
✔ Next.js on <code data-start="3988" data-end="3994">3000</code><br data-start="3994" data-end="3997">
|
||||
✔ API via <code data-start="4007" data-end="4016">/api/v1</code><br data-start="4016" data-end="4019">
|
||||
✔ macOS + zsh compatible</p><!--EndFragment-->
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user