<?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: Jan Marc Coloma</title>
    <description>The latest articles on DEV Community by Jan Marc Coloma (@jan_marccoloma_0ee172414).</description>
    <link>https://dev.to/jan_marccoloma_0ee172414</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%2F3720933%2F2284197e-1402-4d45-b85a-c182c6b84002.png</url>
      <title>DEV Community: Jan Marc Coloma</title>
      <link>https://dev.to/jan_marccoloma_0ee172414</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jan_marccoloma_0ee172414"/>
    <language>en</language>
    <item>
      <title>I Built a Production-Ready Claude Code Setup. Here It Is, Free and Open Source.</title>
      <dc:creator>Jan Marc Coloma</dc:creator>
      <pubDate>Mon, 29 Jun 2026 05:32:28 +0000</pubDate>
      <link>https://dev.to/jan_marccoloma_0ee172414/i-built-a-production-ready-claude-code-setup-here-it-is-free-and-open-source-7jl</link>
      <guid>https://dev.to/jan_marccoloma_0ee172414/i-built-a-production-ready-claude-code-setup-here-it-is-free-and-open-source-7jl</guid>
      <description>&lt;p&gt;Most Claude Code setups are minimal. Mine is not.&lt;/p&gt;

&lt;p&gt;After weeks of real projects, I open sourced the exact config I use daily.&lt;/p&gt;

&lt;p&gt;What's inside:&lt;/p&gt;

&lt;p&gt;CLAUDE.md with commit format, PR format, branch naming, and coding rules Claude actually follows&lt;br&gt;
Per-project memory via Obsidian. Claude reads PROJECT, MISTAKES, and CONTRACT files at session start so it never forgets context&lt;br&gt;
84% token savings with RTK, Headroom, and claude-mem&lt;br&gt;
Karpathy coding principles baked in&lt;br&gt;
One command setup: bash setup.sh ~/your-vault&lt;br&gt;
Works with any stack.&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/janmaaarc" rel="noopener noreferrer"&gt;
        janmaaarc
      &lt;/a&gt; / &lt;a href="https://github.com/janmaaarc/basecamp" rel="noopener noreferrer"&gt;
        basecamp
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      A production-ready Claude Code setup. Global CLAUDE.md, coding rules, per-project memory, and token optimization.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;basecamp&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/9d86f9d71880d46191c52b90cec9ca6331551a705b24d8e0a54949d273c44fe3/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f6a616e6d61616172632f6261736563616d70"&gt;&lt;img src="https://camo.githubusercontent.com/9d86f9d71880d46191c52b90cec9ca6331551a705b24d8e0a54949d273c44fe3/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f6a616e6d61616172632f6261736563616d70" alt="License"&gt;&lt;/a&gt; &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/ed4c0edfcc3b2384b0b036e3462ddcdd84e70ee856099e123922a33b2abb68f6/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f762f72656c656173652f6a616e6d61616172632f6261736563616d70"&gt;&lt;img src="https://camo.githubusercontent.com/ed4c0edfcc3b2384b0b036e3462ddcdd84e70ee856099e123922a33b2abb68f6/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f762f72656c656173652f6a616e6d61616172632f6261736563616d70" alt="Release"&gt;&lt;/a&gt; &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/816d7ae3e86285ba07de61f79360e2809a13e756b2180c3482545104761c50c6/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f6a616e6d61616172632f6261736563616d703f7374796c653d736f6369616c"&gt;&lt;img src="https://camo.githubusercontent.com/816d7ae3e86285ba07de61f79360e2809a13e756b2180c3482545104761c50c6/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f6a616e6d61616172632f6261736563616d703f7374796c653d736f6369616c" alt="Stars"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;A production-ready Claude Code setup. Global CLAUDE.md, coding rules, per-project memory, and token optimization.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Quick Start&lt;/h2&gt;
&lt;/div&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;git clone https://github.com/janmaaarc/basecamp.git
&lt;span class="pl-c1"&gt;cd&lt;/span&gt; basecamp
bash setup.sh &lt;span class="pl-k"&gt;~&lt;/span&gt;/Documents/your-vault&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;Then open &lt;code&gt;~/.claude/CLAUDE.md&lt;/code&gt;, fill in your stack, and follow &lt;a href="https://github.com/janmaaarc/basecamp#setup" rel="noopener noreferrer"&gt;Setup&lt;/a&gt; for tools and plugins.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;What This Is&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;This is the exact setup I use daily. Not a template made for show. A working system built and refined through real projects.&lt;/p&gt;
&lt;p&gt;Most Claude Code setups are minimal. This one is not. It covers:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Global instructions Claude follows on every project&lt;/li&gt;
&lt;li&gt;Karpathy coding principles (think before coding, surgical changes)&lt;/li&gt;
&lt;li&gt;Commit, branch, and PR conventions&lt;/li&gt;
&lt;li&gt;Per-project memory via Obsidian (PROJECT, MISTAKES, CONTRACT files)&lt;/li&gt;
&lt;li&gt;Token optimization via RTK and Headroom&lt;/li&gt;
&lt;li&gt;Safety hooks (block dangerous commands, scan secrets)&lt;/li&gt;
&lt;li&gt;Persistent memory across sessions via claude-mem&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Screenshots&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Obsidian graph view (PROJECT, MISTAKES, CONTRACT linked)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/janmaaarc/basecamp/assets/obsidian-graph.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fjanmaaarc%2Fbasecamp%2FHEAD%2Fassets%2Fobsidian-graph.png" alt="Obsidian graph view"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;RTK token savings&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/janmaaarc/basecamp/assets/rtk-gain.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fjanmaaarc%2Fbasecamp%2FHEAD%2Fassets%2Frtk-gain.png" alt="RTK token savings"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Video Walkthrough&lt;/h2&gt;

&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;Coming soon. Full setup walkthrough covering: clone, setup.sh, filling in CLAUDE.md…&lt;/p&gt;
&lt;/blockquote&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/janmaaarc/basecamp" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3bq40ay1ts9132wi09sw.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3bq40ay1ts9132wi09sw.png" alt=" " width="517" height="349"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>claude</category>
      <category>ai</category>
      <category>productivity</category>
      <category>claudecode</category>
    </item>
    <item>
      <title>I Built an n8n Community Node for Lemon Squeezy - Here's How to Automate Your Digital Product Sales</title>
      <dc:creator>Jan Marc Coloma</dc:creator>
      <pubDate>Tue, 20 Jan 2026 06:47:26 +0000</pubDate>
      <link>https://dev.to/jan_marccoloma_0ee172414/i-built-an-n8n-community-node-for-lemon-squeezy-heres-how-to-automate-your-digital-product-sales-5enh</link>
      <guid>https://dev.to/jan_marccoloma_0ee172414/i-built-an-n8n-community-node-for-lemon-squeezy-heres-how-to-automate-your-digital-product-sales-5enh</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;I recently published my first open-source n8n community node: &lt;strong&gt;n8n-nodes-lemonsqueezy&lt;/strong&gt; - a full integration for Lemon Squeezy, the platform for selling digital products, subscriptions, and software licenses.&lt;/p&gt;

&lt;p&gt;In this article, I'll walk you through what it does, why I built it, and how you can use it to automate your digital product business.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Lemon Squeezy?
&lt;/h2&gt;

&lt;p&gt;Lemon Squeezy is a merchant of record platform that handles payments, taxes, and compliance for digital creators. It's popular among indie hackers and developers for selling:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Digital downloads (eBooks, courses, templates)&lt;/li&gt;
&lt;li&gt;SaaS subscriptions&lt;/li&gt;
&lt;li&gt;Software licenses&lt;/li&gt;
&lt;li&gt;One-time and recurring payments&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What is n8n?
&lt;/h2&gt;

&lt;p&gt;n8n is a self-hosted, open-source workflow automation platform. Think Zapier, but you own your data and can extend it with custom nodes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I Built This
&lt;/h2&gt;

&lt;p&gt;I was building a SaaS product and needed to automate several workflows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Send Slack notifications when orders come in&lt;/li&gt;
&lt;li&gt;Sync customers to my CRM&lt;/li&gt;
&lt;li&gt;Validate license keys via API&lt;/li&gt;
&lt;li&gt;Send recovery emails for failed subscription payments&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The official Lemon Squeezy API is great, but manually calling it via HTTP nodes was tedious. So I built a proper integration.&lt;/p&gt;

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

&lt;h3&gt;
  
  
  Full API Coverage
&lt;/h3&gt;

&lt;p&gt;The node supports 15+ resources with full CRUD operations:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Resource&lt;/th&gt;
&lt;th&gt;Operations&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Checkout&lt;/td&gt;
&lt;td&gt;Create, Get, Get Many&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Customer&lt;/td&gt;
&lt;td&gt;Create, Update, Delete, Get, Get Many&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Order&lt;/td&gt;
&lt;td&gt;Get, Get Many, Refund&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Subscription&lt;/td&gt;
&lt;td&gt;Get, Get Many, Update, Cancel, Resume&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;License Key&lt;/td&gt;
&lt;td&gt;Get, Get Many, Validate, Activate, Deactivate&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Discount&lt;/td&gt;
&lt;td&gt;Create, Delete, Get, Get Many&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Product&lt;/td&gt;
&lt;td&gt;Get, Get Many&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Variant&lt;/td&gt;
&lt;td&gt;Get, Get Many&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Webhook&lt;/td&gt;
&lt;td&gt;Create, Update, Delete, Get, Get Many&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Plus: Store, Order Items, Subscription Invoices, License Key Instances, Discount Redemptions, and Usage Records.&lt;/p&gt;

&lt;h3&gt;
  
  
  Webhook Trigger
&lt;/h3&gt;

&lt;p&gt;Real-time events for everything important:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;order_created&lt;/code&gt; / &lt;code&gt;order_refunded&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;subscription_created&lt;/code&gt; / &lt;code&gt;subscription_cancelled&lt;/code&gt; / &lt;code&gt;subscription_updated&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;subscription_payment_success&lt;/code&gt; / &lt;code&gt;subscription_payment_failed&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;license_key_created&lt;/code&gt; / &lt;code&gt;license_key_updated&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Security Hardened
&lt;/h3&gt;

&lt;p&gt;Security was a priority:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Mandatory webhook signature verification&lt;/strong&gt; using HMAC-SHA256&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Replay attack protection&lt;/strong&gt; - rejects events older than a configurable threshold&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SSRF protection&lt;/strong&gt; - blocks internal/private network URLs&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Input validation&lt;/strong&gt; - RFC 5322 email validation&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Production Ready
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Built-in rate limiting with automatic retry&lt;/li&gt;
&lt;li&gt;Exponential backoff for failed requests&lt;/li&gt;
&lt;li&gt;87%+ test coverage with 176 tests&lt;/li&gt;
&lt;li&gt;Full TypeScript support&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Installation
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Option 1: Community Nodes (Recommended)
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Go to &lt;strong&gt;Settings&lt;/strong&gt; &amp;gt; &lt;strong&gt;Community Nodes&lt;/strong&gt; in your n8n instance&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Install&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Enter &lt;code&gt;n8n-nodes-lemonsqueezy&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Install&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Option 2: npm
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
bash
npm install n8n-nodes-lemonsqueezy
Setting Up Credentials
Log in to your Lemon Squeezy Dashboard
Go to Settings &amp;gt; API
Click Create API Key
Copy the key and add it to n8n credentials
Example Workflows
1. New Order Slack Notification

Lemon Squeezy Trigger (order_created) → Slack (Send Message)
Get instant notifications when someone buys your product.

2. Subscription Churn Prevention

Schedule Trigger (daily) → Lemon Squeezy (Get Subscriptions, status=past_due) → Send Email
Automatically reach out to customers with failed payments before they churn.

3. License Key Validation API

Webhook → Lemon Squeezy (Validate License Key) → Respond to Webhook
Build a license validation endpoint for your desktop or mobile app.

4. Dynamic Checkout Links

HTTP Request → Lemon Squeezy (Create Checkout) → Return Checkout URL
Create personalized checkout links with pre-filled customer data and custom discounts.

5. Customer Sync to CRM

Lemon Squeezy Trigger (order_created) → Lemon Squeezy (Get Customer) → HubSpot (Create Contact)
Keep your CRM in sync automatically.

Advanced Features
Filtering
Most "Get Many" operations support filtering:


Filter by: storeId, status, email, productId, variantId, orderId
Sorting
Sort results by created_at or updated_at in ascending or descending order.

Relationship Expansion
Include related resources in a single API call:


Orders → include: customer, order-items, subscriptions
This reduces API calls and speeds up your workflows.

Technical Details
The node is built with:

TypeScript for type safety
Vitest for testing
ESLint and Prettier for code quality
GitHub Actions for CI/CD
Project Structure

nodes/
  LemonSqueezy/
    LemonSqueezy.node.ts      # Main node
    LemonSqueezyTrigger.node.ts # Webhook trigger
    helpers.ts                 # API helpers
    types.ts                   # TypeScript types
    resources/                 # Resource definitions
credentials/
  LemonSqueezyApi.credentials.ts
test/
  LemonSqueezy.test.ts        # 176 tests
Contributing
The project is open source and contributions are welcome:

GitHub: https://github.com/janmaaarc/n8n-nodes-lemonsqueezy
npm: https://www.npmjs.com/package/n8n-nodes-lemonsqueezy
Feel free to open issues for bugs or feature requests, or submit a PR.

Conclusion
If you're selling digital products with Lemon Squeezy and using n8n for automation, this node should save you a lot of time.

Install it today:


n8n-nodes-lemonsqueezy
Let me know in the comments what workflows you build with it.

Links:

GitHub: https://github.com/janmaaarc/n8n-nodes-lemonsqueezy
npm: https://www.npmjs.com/package/n8n-nodes-lemonsqueezy
Lemon Squeezy API Docs: https://docs.lemonsqueezy.com/api
n8n Community Nodes Docs: https://docs.n8n.io/integrations/community-nodes/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>n8n</category>
      <category>automation</category>
      <category>typescript</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
