<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Salnik a</title>
    <description>The latest articles on DEV Community by Salnik a (@salnika).</description>
    <link>https://dev.to/salnika</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1104195%2F27f36f1a-1287-4e6f-ad0e-57f74bdeb81e.jpeg</url>
      <title>DEV Community: Salnik a</title>
      <link>https://dev.to/salnika</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/salnika"/>
    <language>en</language>
    <item>
      <title>I got tired of my coding agent re-reading the same command output, so I built Dejavu</title>
      <dc:creator>Salnik a</dc:creator>
      <pubDate>Tue, 07 Jul 2026 16:19:38 +0000</pubDate>
      <link>https://dev.to/salnika/i-got-tired-of-my-coding-agent-re-reading-the-same-command-output-so-i-built-dejavu-345h</link>
      <guid>https://dev.to/salnika/i-got-tired-of-my-coding-agent-re-reading-the-same-command-output-so-i-built-dejavu-345h</guid>
      <description>&lt;p&gt;If you drive a terminal coding agent (Claude Code, Codex, Cursor's agent, Aider, opencode, Gemini CLI), you've probably watched it do this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Run &lt;code&gt;pnpm test&lt;/code&gt;. 40 lines of output. One test fails.&lt;/li&gt;
&lt;li&gt;Change something unrelated.&lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;pnpm test&lt;/code&gt; again. The same 40 lines. The same failure.&lt;/li&gt;
&lt;li&gt;Repeat five more times.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Every one of those reruns dumps the full output back into the agent's context. But the information the agent actually needs is the &lt;em&gt;delta&lt;/em&gt;: did the failure change? The rest is noise it has already seen.&lt;/p&gt;

&lt;p&gt;I kept hitting the same thing with &lt;code&gt;git diff&lt;/code&gt;, &lt;code&gt;rg&lt;/code&gt;, build logs, and typechecks too. And prompting the agent to "not reread unchanged output" doesn't reliably work. So I built &lt;strong&gt;Dejavu&lt;/strong&gt;, a command-output memory layer for coding agents.&lt;/p&gt;

&lt;h2&gt;
  
  
  The idea: run the real command, print only what's new
&lt;/h2&gt;

&lt;p&gt;Dejavu is a PATH shim. You launch your agent through it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;dejavu start claude
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That prepends a shim directory to &lt;code&gt;PATH&lt;/code&gt;. Now when the agent runs &lt;code&gt;pnpm test&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;agent runs:      pnpm test
PATH resolves:   &amp;lt;dejavu-cache&amp;gt;/shims/bin/pnpm
shim runs:       dejavu run --shim-name pnpm -- test
Dejavu runs:     the real pnpm found later in PATH
Dejavu stores:   redacted stdout, stderr, metadata, exit code
agent receives:  first output, "unchanged" notice, or a compact delta
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The agent doesn't know Dejavu exists. It keeps running ordinary commands. Dejavu just remembers what each command printed last time.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the agent sees
&lt;/h2&gt;

&lt;p&gt;Identical rerun:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;dejavu: output unchanged since run 8c51f73.
Command: pnpm test
Exit code: 1
Suppressed ~4,820 estimated tokens.
Full output: dejavu show b92d1aa --stdout
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Small change:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;dejavu: output changed since run b92d1aa.
Changed lines:
- expected 403, received 200
+ expected 403, received 500
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The command ran all three times. Only the &lt;em&gt;display&lt;/em&gt; changed.&lt;/p&gt;

&lt;h2&gt;
  
  
  The part I care most about: it never skips execution
&lt;/h2&gt;

&lt;p&gt;The fear with anything in your &lt;code&gt;PATH&lt;/code&gt; is that it silently caches and hands your agent stale results. Dejavu doesn't. The invariant:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It &lt;strong&gt;always&lt;/strong&gt; runs the real underlying command.&lt;/li&gt;
&lt;li&gt;It &lt;strong&gt;always&lt;/strong&gt; preserves the real exit code.&lt;/li&gt;
&lt;li&gt;Full output is stored locally and always recoverable: &lt;code&gt;dejavu show latest --stdout&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;It only optimizes command shapes it recognizes as safe: test runners, &lt;code&gt;tsc&lt;/code&gt;/&lt;code&gt;eslint&lt;/code&gt;, &lt;strong&gt;read-only&lt;/strong&gt; git (&lt;code&gt;status&lt;/code&gt;/&lt;code&gt;diff&lt;/code&gt;/&lt;code&gt;log&lt;/code&gt;/&lt;code&gt;show&lt;/code&gt;), &lt;code&gt;rg&lt;/code&gt;/&lt;code&gt;grep&lt;/code&gt;, &lt;code&gt;find&lt;/code&gt;, &lt;code&gt;docker logs&lt;/code&gt;. Anything it can't confidently classify passes through untouched.&lt;/li&gt;
&lt;li&gt;Mutating commands (&lt;code&gt;git commit&lt;/code&gt;, &lt;code&gt;git push&lt;/code&gt;, installs, &lt;code&gt;docker build&lt;/code&gt;, watch modes) pass through.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;DEJAVU=off pnpm test&lt;/code&gt; bypasses it for one command.&lt;/li&gt;
&lt;li&gt;Nothing is sent to a server. The cache is local.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It's not a cache in the "skip work" sense. It's a memory layer for &lt;em&gt;what got printed&lt;/em&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Does it actually help? Early numbers
&lt;/h2&gt;

&lt;p&gt;I want to be precise, because it's easy to overclaim. The built-in suite (&lt;code&gt;dejavu bench&lt;/code&gt;) runs the real classify + reduce pipeline over deterministic scenarios:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Scenario&lt;/th&gt;
&lt;th&gt;Agent reads without&lt;/th&gt;
&lt;th&gt;with Dejavu&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;js validation loop (5x test)&lt;/td&gt;
&lt;td&gt;5,561&lt;/td&gt;
&lt;td&gt;2,443 (-56%)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;git workflow (diff, 40 files)&lt;/td&gt;
&lt;td&gt;10,329&lt;/td&gt;
&lt;td&gt;954 (-91%)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;search loop (rg, 180 matches)&lt;/td&gt;
&lt;td&gt;9,346&lt;/td&gt;
&lt;td&gt;644 (-93%)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;large build log (40k lines x2)&lt;/td&gt;
&lt;td&gt;1,057,554&lt;/td&gt;
&lt;td&gt;241&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;machine-readable git&lt;/td&gt;
&lt;td&gt;equal by design&lt;/td&gt;
&lt;td&gt;equal&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;And in ~12 real Codex sessions: &lt;strong&gt;52-55% less intercepted output&lt;/strong&gt;, and &lt;strong&gt;~87%&lt;/strong&gt; in repeated local rerun loops.&lt;/p&gt;

&lt;p&gt;Important caveat: that's reduction on the outputs Dejavu &lt;em&gt;touches&lt;/em&gt;, not a claim about your total token spend. The strongest effect is in rerun loops. The benchmark is reproducible on your machine, and CI fails if the numbers regress (&lt;code&gt;dejavu bench --check&lt;/code&gt;).&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# no install&lt;/span&gt;
npx @salnika/dejavu start codex

&lt;span class="c"&gt;# or&lt;/span&gt;
brew tap Salnika/dejavu &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; brew &lt;span class="nb"&gt;install &lt;/span&gt;dejavu
cargo &lt;span class="nb"&gt;install &lt;/span&gt;dejavu-cli
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd &lt;/span&gt;my-project
dejavu start claude
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Rust, MIT, macOS/Linux/WSL (no native Windows yet). Everything is on GitHub: &lt;strong&gt;&lt;a href="https://github.com/Salnika/dejavu" rel="noopener noreferrer"&gt;https://github.com/Salnika/dejavu&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you try it, the feedback I'm most after: command shapes where the delta hides something you actually needed, and any case where the classifier reduced something it shouldn't have. Those reports are the most valuable thing right now.&lt;/p&gt;

</description>
      <category>rust</category>
      <category>ai</category>
      <category>devtools</category>
      <category>showdev</category>
    </item>
    <item>
      <title>Phantom API: The Backend That Actually Gets Out of Your Way</title>
      <dc:creator>Salnik a</dc:creator>
      <pubDate>Sun, 10 Aug 2025 12:33:39 +0000</pubDate>
      <link>https://dev.to/salnika/phantom-api-the-backend-that-actually-gets-out-of-your-way-41im</link>
      <guid>https://dev.to/salnika/phantom-api-the-backend-that-actually-gets-out-of-your-way-41im</guid>
      <description>&lt;p&gt;&lt;strong&gt;Phantom API: The Backend That Actually Gets Out of Your Way&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Hey there! 👋&lt;/p&gt;

&lt;p&gt;If you're a frontend developer like me, you know the struggle. You just want to build cool features, but instead you're stuck writing boilerplate backend code, setting up database schemas, and configuring API endpoints. Sound familiar?&lt;/p&gt;

&lt;p&gt;That's exactly why I got excited about &lt;strong&gt;Phantom API&lt;/strong&gt;. It's this open-source backend system that basically reads your mind (okay, not really, but close enough). You make API calls from your frontend, and it automatically creates the endpoints, database tables, and validation rules you need. No joke.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What makes it actually useful?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here's the thing - instead of spending hours setting up your backend, you literally just start coding your frontend. When you send data to an endpoint that doesn't exist yet, Phantom API goes "Oh, you need that? Let me create it for you." &lt;/p&gt;

&lt;p&gt;It figures out relationships between your data (like when a post belongs to a user), sets up the right database constraints, and even gives you TypeScript support so you don't break things in production. Plus, there's a slick admin panel where you can see everything that's happening.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Getting it running is stupidly simple:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;First, grab the dependencies:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;yarn &lt;span class="nb"&gt;install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Copy over the environment config:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cp&lt;/span&gt; .env.example .env
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Tweak your &lt;code&gt;.env&lt;/code&gt; file with your details (you know the drill):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;PORT=3000
NODE_ENV=development
JWT_SECRET=your-secret-key
DB_PATH=./data/phantom.db
ADMIN_EMAIL=admin@example.com
ADMIN_PASSWORD=admin123
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Fire it up:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;yarn pm2:start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And then just use it in your code like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;setEndpoint&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setToken&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;resource&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;phantom-api&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nf"&gt;setEndpoint&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;http://localhost:3000&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nf"&gt;setToken&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;your-jwt-token&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;users&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;resource&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;User&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;users&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;email&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;test@example.com&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;John Doe&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;allUsers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;users&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;read&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Where this really shines:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I've seen people use it for all sorts of projects:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Building e-commerce sites without the usual database headaches&lt;/li&gt;
&lt;li&gt;Throwing together social apps where you need users, posts, comments - all that jazz&lt;/li&gt;
&lt;li&gt;Creating project management tools on the fly&lt;/li&gt;
&lt;li&gt;Setting up content management systems without the typical complexity&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Want to learn more or help out?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The whole thing is open source, which is awesome. If you want to dig deeper, contribute, or just see how it works under the hood:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Check out the &lt;a href="https://dev.tolink"&gt;NPM Package&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Browse the &lt;a href="https://dev.tolink"&gt;Documentation&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Star it on &lt;a href="https://dev.tolink"&gt;GitHub&lt;/a&gt; (you know you want to)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Honestly, if you're tired of wrestling with backend setup and just want to build stuff, give Phantom API a shot. It's one of those tools that makes you wonder why we've been doing things the hard way for so long.&lt;/p&gt;

</description>
      <category>react</category>
      <category>frontend</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Streamline Your Backend Development with the Simple NestJS Boilerplate</title>
      <dc:creator>Salnik a</dc:creator>
      <pubDate>Mon, 19 Jun 2023 09:44:52 +0000</pubDate>
      <link>https://dev.to/salnika/streamline-your-backend-development-with-the-simple-nestjs-boilerplate-27f2</link>
      <guid>https://dev.to/salnika/streamline-your-backend-development-with-the-simple-nestjs-boilerplate-27f2</guid>
      <description>&lt;h1&gt;
  
  
  Article Title: Streamline Your Backend Development with the Simple NestJS Boilerplate
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;The early stages of backend development often involve a lot of setup and configuration, which can slow down progress on the actual functionality of your application. Wouldn't it be great to jumpstart this process and focus more on writing the code that matters to your project? That's where boilerplates come into play. Today, I'm going to introduce you to a simple yet effective NestJS boilerplate that can help you kickstart your backend projects in no time.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fstx3u3isvoj1g77qe8rd.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fstx3u3isvoj1g77qe8rd.jpg" alt=" " width="800" height="418"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The NestJS Boilerplate
&lt;/h2&gt;

&lt;p&gt;The NestJS boilerplate is a bare-bones yet powerful project template designed to speed up the setup process for your NestJS applications. It includes pre-configured Swagger for API documentation, a Postgres database for data storage, Typeorm for interacting with the database, and a Dockerized app and database setup for easy deployment. You can find it on &lt;a href="https://github.com/salnika/nestjs-boilreplate" rel="noopener noreferrer"&gt;Github&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The goal of this boilerplate is to remain simple and effective, allowing developers to get their projects off the ground quickly without getting bogged down in setup.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd7tu83g7ldt08j4pjri5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd7tu83g7ldt08j4pjri5.png" alt=" " width="683" height="213"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Features
&lt;/h2&gt;

&lt;p&gt;This NestJS boilerplate comes with the following key features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Swagger Documentation&lt;/strong&gt;: Helps you design, build, document, and consume your APIs.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Postgres Database&lt;/strong&gt;: A powerful, open-source object-relational database system that uses and extends the SQL language.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Typeorm&lt;/strong&gt;: An ORM that can run in NodeJS and can be used with TypeScript and JavaScript.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Dockerized App and DB&lt;/strong&gt;: A docker setup for both the app and the database to make deployments a breeze.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Getting Started
&lt;/h2&gt;

&lt;p&gt;Setting up with this boilerplate is quite straightforward. First, ensure you have the following prerequisites installed on your machine:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;NodeJS 18.10&lt;/li&gt;
&lt;li&gt;Yarn&lt;/li&gt;
&lt;li&gt;Docker&lt;/li&gt;
&lt;li&gt;Docker-compose&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Next, install the dependencies by running:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;yarn install
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To start the app and Postgres database, run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker-compose up --build
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The app will be available on port 3000: &lt;code&gt;http://localhost:3000&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  API Documentation
&lt;/h2&gt;

&lt;p&gt;Your API documentation is available at &lt;code&gt;http://localhost:3000/api&lt;/code&gt;. This documentation is powered by Swagger, making it interactive and easy to navigate.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F51izbuo4dyqoxdo5mcle.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F51izbuo4dyqoxdo5mcle.png" alt=" " width="800" height="382"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Database Migrations
&lt;/h2&gt;

&lt;p&gt;This boilerplate uses TypeORM to manage database migrations. To create a new migration or run existing migrations, use the following commands respectively:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;yarn run migration:create ./src/migration/NAME_OF_THE_MIGRATION
yarn run migration:run
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Contributions
&lt;/h2&gt;

&lt;p&gt;Contributions are always welcome! Please check out the 'issues' tab on the &lt;a href="https://github.com/salnika/nestjs-boilreplate" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; page to find something you'd like to work on.&lt;/p&gt;

&lt;h2&gt;
  
  
  Companion Frontend NextJS Boilerplate
&lt;/h2&gt;

&lt;p&gt;If you need a frontend solution to pair with this NestJS boilerplate, a simple NextJS boilerplate is also available. It's designed to work seamlessly with this backend boilerplate, providing a complete full-stack solution for your projects. Check it out on &lt;a href="https://github.com/salnika/nextjs-boilreplate" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;/p&gt;

</description>
      <category>nestjs</category>
      <category>webdev</category>
      <category>typescript</category>
      <category>node</category>
    </item>
    <item>
      <title>Kickstart Your Project with the Simple NextJS Boilerplate</title>
      <dc:creator>Salnik a</dc:creator>
      <pubDate>Mon, 19 Jun 2023 09:11:42 +0000</pubDate>
      <link>https://dev.to/salnika/kickstart-your-project-with-the-simple-nextjs-boilerplate-1bp4</link>
      <guid>https://dev.to/salnika/kickstart-your-project-with-the-simple-nextjs-boilerplate-1bp4</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Building a web application from scratch can be a daunting task, especially when time is of the essence. Setting up the environment, installing dependencies, and configuring the project often takes a significant amount of time before we even start working on our app's actual business logic. Wouldn't it be great if we could skip that step and jump straight into coding? &lt;/p&gt;

&lt;p&gt;With boilerplates, we can do exactly that. They provide a pre-configured template that we can clone and start building upon immediately. They eliminate the need for setting up a project from scratch, thereby saving us precious time. In this article, I'm going to introduce you to a simple NextJS boilerplate project that is perfect for those looking to kickstart their project with minimal setup.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F42s86exk1ht2qyjv7bz1.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F42s86exk1ht2qyjv7bz1.jpg" alt=" " width="630" height="360"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The NextJS Boilerplate
&lt;/h2&gt;

&lt;p&gt;The NextJS boilerplate is a simple, yet powerful, starting point for your NextJS projects. It comes pre-configured with Redux for state management and Axios for promise-based HTTP requests, providing you with the fundamental tools to build dynamic and interactive web applications.&lt;/p&gt;

&lt;p&gt;This boilerplate aims to stay simple and clean, enabling developers to get started with their projects swiftly and without unnecessary complexity. It's still a work in progress, but the goal remains the same: to make project setup as simple and quick as possible. You can find it on &lt;a href="https://github.com/salnika/nextjs-boilerplate" rel="noopener noreferrer"&gt;Github&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2ftu8ag7bg9jo7wcfljr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2ftu8ag7bg9jo7wcfljr.png" alt=" " width="500" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Features
&lt;/h2&gt;

&lt;p&gt;This NextJS boilerplate includes the following key features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Next.js&lt;/strong&gt;: A React.js framework that enables server-side rendering and generating static websites, making your web applications faster and SEO-friendly.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Redux Toolkit&lt;/strong&gt;: This is a set of tools that reduces the amount of code needed to use Redux, making state management in your applications a breeze.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Axios&lt;/strong&gt;: A promise-based HTTP client that works in the browser and Node.js, allowing your application to interact with APIs smoothly.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Getting Started
&lt;/h2&gt;

&lt;p&gt;Getting started with this boilerplate is easy. First, you'll need to clone the repository to your local machine using the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/salnika/nextjs-boilerplate
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once you've cloned the repository, navigate into the directory and install the dependencies:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cd next-boilerplate
yarn install
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And voila! You can start the development server with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;yarn run dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This will start a local development server. You can open your browser and navigate to &lt;a href="http://localhost:3000" rel="noopener noreferrer"&gt;http://localhost:3000&lt;/a&gt; to see the result.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flm7ddwaju3k1kabobtdc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flm7ddwaju3k1kabobtdc.png" alt=" " width="800" height="423"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Documentation
&lt;/h2&gt;

&lt;p&gt;Detailed documentation for Next.js, Redux Toolkit, and Axios can be found at the following links:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://nextjs.org/docs" rel="noopener noreferrer"&gt;Next.js Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://redux-toolkit.js.org/" rel="noopener noreferrer"&gt;Redux Toolkit Documentation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Contributions
&lt;/h2&gt;

&lt;p&gt;Contributions to improve this boilerplate are always welcome! You can check out the 'issues' tab on the &lt;a href="https://github.com/salnika/nextjs-boilerplate" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; page to find something you'd like to work on.&lt;/p&gt;

&lt;h2&gt;
  
  
  Companion Backend nestJS Boilerplate
&lt;/h2&gt;

&lt;p&gt;If you're looking for a backend solution to complement this NextJS boilerplate, there's also a simple NestJS&lt;/p&gt;

&lt;p&gt;boilerplate available. It's designed to work seamlessly with the NextJS boilerplate, providing a full-stack solution for your project needs. Check it out on &lt;a href="https://github.com/salnika/nest-boilerplate" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Getting started with your NextJS project has never been easier. This boilerplate provides a quick and simple way to start building your web applications without the need for extensive setup. Whether you're a seasoned developer or a beginner, you'll find this boilerplate incredibly useful to kickstart your projects.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffs9ybm10xrjps55oe6c2.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffs9ybm10xrjps55oe6c2.jpeg" alt=" " width="308" height="164"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Remember, the goal of this boilerplate is simplicity. As you work on your project, strive to keep the codebase clean and straightforward. Happy coding!&lt;/p&gt;

&lt;h2&gt;
  
  
  License
&lt;/h2&gt;

&lt;p&gt;This project is licensed under the MIT License, meaning you're free to use, modify, and distribute it as you see fit.&lt;/p&gt;

</description>
      <category>nextjs</category>
      <category>react</category>
      <category>webdev</category>
      <category>javascript</category>
    </item>
  </channel>
</rss>
