<?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: Dev Maya</title>
    <description>The latest articles on DEV Community by Dev Maya (@juan_maya_6479056cdf0c8d6).</description>
    <link>https://dev.to/juan_maya_6479056cdf0c8d6</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3902439%2F5ac2e155-4e10-4b22-a489-1a8a4d60e720.jpeg</url>
      <title>DEV Community: Dev Maya</title>
      <link>https://dev.to/juan_maya_6479056cdf0c8d6</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/juan_maya_6479056cdf0c8d6"/>
    <language>en</language>
    <item>
      <title>Building a mobile app landing page template with Next.js 14 — design decisions and lessons learned</title>
      <dc:creator>Dev Maya</dc:creator>
      <pubDate>Tue, 28 Apr 2026 13:22:45 +0000</pubDate>
      <link>https://dev.to/juan_maya_6479056cdf0c8d6/building-a-mobile-app-landing-page-template-with-nextjs-14-design-decisions-and-lessons-learned-3nl0</link>
      <guid>https://dev.to/juan_maya_6479056cdf0c8d6/building-a-mobile-app-landing-page-template-with-nextjs-14-design-decisions-and-lessons-learned-3nl0</guid>
      <description>&lt;h1&gt;
  
  
  Building a mobile app landing page template with Next.js 14
&lt;/h1&gt;

&lt;p&gt;Most mobile app landing pages I see fall into two categories: generic Bootstrap sites or over-engineered Webflow builds. Neither feels right for an indie developer launching something they care about.&lt;/p&gt;

&lt;p&gt;So I built a template that sits in the middle — handcrafted, warm, and fast to customize.&lt;/p&gt;

&lt;h2&gt;
  
  
  Design direction
&lt;/h2&gt;

&lt;p&gt;I deliberately went the opposite direction from my previous SaaS template (dark mode, purple gradients). This one is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Light mode&lt;/strong&gt; with warm cream tones (&lt;code&gt;#faf7f2&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Serif typography&lt;/strong&gt; — Playfair Display for headings, Epilogue for body&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Orange accent&lt;/strong&gt; (&lt;code&gt;#f97316&lt;/code&gt;) instead of the typical blue or purple&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Editorial feel&lt;/strong&gt; — closer to a premium lifestyle brand than a typical dev tool&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal was to make it feel like something a well-funded startup would ship, not a side project from a weekend.&lt;/p&gt;

&lt;h2&gt;
  
  
  The animated phone mockup
&lt;/h2&gt;

&lt;p&gt;The hero needed something visual. For a mobile app template, the obvious choice is a phone mockup.&lt;/p&gt;

&lt;p&gt;Instead of using a static PNG, I built the entire phone in pure HTML/CSS:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.phone&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;280px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;560px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;background&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--ink&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nl"&gt;border-radius&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;42px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;border&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;6px&lt;/span&gt; &lt;span class="nb"&gt;solid&lt;/span&gt; &lt;span class="m"&gt;#2a2010&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;box-shadow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;40px&lt;/span&gt; &lt;span class="m"&gt;80px&lt;/span&gt; &lt;span class="n"&gt;rgba&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;26&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;18&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;0.25&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The floating badges ("47 day streak", "5/6 done") are absolutely positioned divs with a staggered &lt;code&gt;fadeUp&lt;/code&gt; animation. The entire phone floats up and down with a CSS keyframe:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="k"&gt;@keyframes&lt;/span&gt; &lt;span class="n"&gt;floatY&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="err"&gt;0&lt;/span&gt;&lt;span class="o"&gt;%,&lt;/span&gt; &lt;span class="err"&gt;100&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;translateY&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="err"&gt;50&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt;       &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;translateY&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;-10px&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No JavaScript, no library. Just CSS.&lt;/p&gt;

&lt;h2&gt;
  
  
  Single config file pattern
&lt;/h2&gt;

&lt;p&gt;Same approach as my previous template — everything the buyer needs to change lives in &lt;code&gt;src/lib/config.ts&lt;/code&gt;:&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;export&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;siteConfig&lt;/span&gt; &lt;span class="o"&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;YourApp&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;appStore&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;label&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;App Store&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;href&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;#&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;icon&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;🍎&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="na"&gt;playStore&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;label&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Google Play&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;href&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;#&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;icon&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;▶&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="na"&gt;stats&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;2.4M&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;label&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Active users&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="c1"&gt;// ...&lt;/span&gt;
  &lt;span class="p"&gt;],&lt;/span&gt;
  &lt;span class="na"&gt;features&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[...],&lt;/span&gt;
  &lt;span class="na"&gt;pricing&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[...],&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Brand name, store links, stats, features, pricing — all in one place.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sections included
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Sticky navbar with scroll blur&lt;/li&gt;
&lt;li&gt;Hero with floating animated phone mockup + badges&lt;/li&gt;
&lt;li&gt;Features grid (dark background section)&lt;/li&gt;
&lt;li&gt;Screenshots (3 phone screens with staggered offset)&lt;/li&gt;
&lt;li&gt;Pricing table (Free + Pro)&lt;/li&gt;
&lt;li&gt;Testimonials&lt;/li&gt;
&lt;li&gt;CTA banner&lt;/li&gt;
&lt;li&gt;Footer&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  CSS Modules over Tailwind — again
&lt;/h2&gt;

&lt;p&gt;For templates I keep choosing CSS Modules. The buyer doesn't need to configure anything. Styles are scoped and explicit. And honestly, it forces cleaner component boundaries.&lt;/p&gt;

&lt;h2&gt;
  
  
  The result
&lt;/h2&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%2Fsjwisiusxj6g2p7a8ys9.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%2Fsjwisiusxj6g2p7a8ys9.png" alt=" " width="800" height="408"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;npm install &amp;amp;&amp;amp; npm run dev&lt;/code&gt; — that's all the buyer needs.&lt;/p&gt;

&lt;p&gt;→ Live demo: &lt;a href="https://bloom-app-template.vercel.app/" rel="noopener noreferrer"&gt;https://bloom-app-template.vercel.app/&lt;/a&gt;&lt;br&gt;
→ Available on Gumroad: devmaya.gumroad.com/l/qvqbcb&lt;/p&gt;

&lt;p&gt;Happy to answer questions about any implementation detail in the comments.&lt;/p&gt;

</description>
      <category>nextjs</category>
      <category>typescript</category>
      <category>css</category>
      <category>react</category>
    </item>
    <item>
      <title>How I built a production-ready SaaS landing page template with Next.js 14</title>
      <dc:creator>Dev Maya</dc:creator>
      <pubDate>Tue, 28 Apr 2026 13:17:44 +0000</pubDate>
      <link>https://dev.to/juan_maya_6479056cdf0c8d6/how-i-built-a-production-ready-saas-landing-page-template-with-nextjs-14-5d8p</link>
      <guid>https://dev.to/juan_maya_6479056cdf0c8d6/how-i-built-a-production-ready-saas-landing-page-template-with-nextjs-14-5d8p</guid>
      <description>&lt;h1&gt;
  
  
  How I built a production-ready SaaS landing page template with Next.js 14
&lt;/h1&gt;

&lt;p&gt;Every time I started a new SaaS project, I found myself rebuilding the same landing page from scratch. Navbar, hero, features, pricing, testimonials — the same structure, every time.&lt;/p&gt;

&lt;p&gt;So I decided to build it once, properly, and make it reusable.&lt;/p&gt;

&lt;p&gt;This is what I learned.&lt;/p&gt;

&lt;h2&gt;
  
  
  The goals
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Zero extra dependencies&lt;/strong&gt; — just Next.js 14, TypeScript and CSS Modules&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;One config file&lt;/strong&gt; — all content editable in a single &lt;code&gt;config.ts&lt;/code&gt;, no touching components&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Premium design&lt;/strong&gt; — dark mode, Stripe/Linear aesthetic, nothing generic&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deploy-ready&lt;/strong&gt; — works on Vercel out of the box&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Stack decisions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Why CSS Modules over Tailwind?
&lt;/h3&gt;

&lt;p&gt;Tailwind is great, but for a template you're selling, CSS Modules are cleaner. The buyer doesn't need to install or configure anything extra. The styles are scoped, explicit, and easy to override.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why a single config file?
&lt;/h3&gt;

&lt;p&gt;The biggest friction for template buyers is figuring out where to change things. With a single &lt;code&gt;src/lib/config.ts&lt;/code&gt;, the answer is always the same:&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;export&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;siteConfig&lt;/span&gt; &lt;span class="o"&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;YourApp&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;tagline&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 tagline here&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;features&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;icon&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;⚡&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;title&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Feature 1&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;...&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="c1"&gt;// ...&lt;/span&gt;
  &lt;span class="p"&gt;],&lt;/span&gt;
  &lt;span class="na"&gt;pricing&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[...],&lt;/span&gt;
  &lt;span class="na"&gt;testimonials&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[...],&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Change the file, the whole site updates. No hunting through components.&lt;/p&gt;

&lt;h2&gt;
  
  
  The dashboard preview in the hero
&lt;/h2&gt;

&lt;p&gt;The most impactful design decision was putting a fake dashboard mockup in the hero section instead of a generic screenshot or illustration.&lt;/p&gt;

&lt;p&gt;SaaS buyers respond to dashboards — it shows them exactly what kind of product the template is built for, and it looks premium without requiring real data.&lt;/p&gt;

&lt;p&gt;The entire dashboard is pure HTML/CSS — no canvas, no charts library.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sections included
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Sticky navbar with blur backdrop on scroll&lt;/li&gt;
&lt;li&gt;Hero with animated headline + dashboard preview + social proof&lt;/li&gt;
&lt;li&gt;Logo strip&lt;/li&gt;
&lt;li&gt;Features grid (6 cards)&lt;/li&gt;
&lt;li&gt;Pricing table (3 tiers, featured plan highlighted)&lt;/li&gt;
&lt;li&gt;Testimonials (3 cards)&lt;/li&gt;
&lt;li&gt;CTA banner&lt;/li&gt;
&lt;li&gt;Footer&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Lessons learned
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Design systems in CSS variables pay off.&lt;/strong&gt; Having all colors in &lt;code&gt;:root&lt;/code&gt; meant I could change the entire palette in 3 lines.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Animation delay on hero elements feels premium.&lt;/strong&gt; Staggered &lt;code&gt;animation-delay&lt;/code&gt; on each hero child gives a polished fade-up entrance that costs almost nothing to implement.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The config file is the product.&lt;/strong&gt; Buyers don't care about the components — they care about how fast they can make it theirs.&lt;/p&gt;

&lt;h2&gt;
  
  
  The result
&lt;/h2&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%2Fachpuv4kdubvucpnwnl7.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%2Fachpuv4kdubvucpnwnl7.png" alt=" " width="800" height="408"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A fully responsive, dark-mode SaaS landing page that runs with &lt;code&gt;npm install &amp;amp;&amp;amp; npm run dev&lt;/code&gt; and deploys to Vercel in 2 minutes.&lt;/p&gt;

&lt;p&gt;→ Live demo: &lt;a href="https://nexus-saas-template-jm.vercel.app/" rel="noopener noreferrer"&gt;https://nexus-saas-template-jm.vercel.app/&lt;/a&gt;&lt;br&gt;
→ Available on Gumroad: &lt;a href="https://devmaya.gumroad.com/l/qvqbcb" rel="noopener noreferrer"&gt;https://devmaya.gumroad.com/l/qvqbcb&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you have questions about the implementation, drop them in the comments — happy to go deeper on any part.&lt;/p&gt;

</description>
      <category>nextjs</category>
      <category>react</category>
      <category>typescript</category>
      <category>css</category>
    </item>
  </channel>
</rss>
