<?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: Akanmu Akinkunmi</title>
    <description>The latest articles on DEV Community by Akanmu Akinkunmi (@petrjoe).</description>
    <link>https://dev.to/petrjoe</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%2F1203397%2Fb8faf36c-61e5-4a2d-9a74-b9ec3478ecd4.jpeg</url>
      <title>DEV Community: Akanmu Akinkunmi</title>
      <link>https://dev.to/petrjoe</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/petrjoe"/>
    <language>en</language>
    <item>
      <title>Exploring the Future of Payments: A Socratic Journey into Stablecoins, Privacy, Ownership, and Permissionless Commerce</title>
      <dc:creator>Akanmu Akinkunmi</dc:creator>
      <pubDate>Wed, 19 Nov 2025 07:28:33 +0000</pubDate>
      <link>https://dev.to/petrjoe/exploring-the-future-of-payments-a-socratic-journey-into-stablecoins-privacy-ownership-and-210d</link>
      <guid>https://dev.to/petrjoe/exploring-the-future-of-payments-a-socratic-journey-into-stablecoins-privacy-ownership-and-210d</guid>
      <description>&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%2Fz8sotz6ff4tf72ofby14.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%2Fz8sotz6ff4tf72ofby14.jpg" alt="Exploring the future of paymen: a Socratic journey into stablecoins, privacy, ownership and permission less commerce" width="726" height="422"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Author: Akanmu Akinkunmi&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;Dear reader, consider this: What if the way humanity moves money is on the verge of its most significant transformation since the birth of the internet? Imagine payments crossing borders as effortlessly as sending a message—instant, global, censorship-resistant, programmable, and fully under your control.&lt;/p&gt;

&lt;p&gt;Instead of simply telling you what the future looks like, let’s discover it together. Through questions, reflection, and recent insights from 2025, we’ll explore why stablecoins are emerging as the new foundation of digital payments — and why privacy, ownership, and permissionless commerce may define the next decade of economic empowerment.&lt;/p&gt;

&lt;p&gt;As you move through this piece, take a moment to reflect: Which of these changes already touches your life today?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What Makes Stablecoins a Cornerstone for the Future of Payments?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Let’s begin at the beginning: What exactly makes a stablecoin “stable,” and why has it become the breakout payment technology of 2025?&lt;/p&gt;

&lt;p&gt;Stablecoins maintain price stability by being pegged to trusted assets like the U.S. dollar. In a landscape where volatile assets dominate headlines, this reliability is their superpower.&lt;/p&gt;

&lt;p&gt;By late 2025, global stablecoin issuance climbed to roughly $280 billion, up from $200 billion at the start of the year. Momentum like this doesn’t happen by accident — it signals adoption, usability, and real economic activity.&lt;/p&gt;

&lt;p&gt;Stablecoins processed over $9 trillion in payments this year, an 87% jump from 2024. September alone surpassed $1.25 trillion. These numbers rival — and sometimes exceed — traditional card networks in certain regions.&lt;/p&gt;

&lt;p&gt;Why? Because stablecoins offer something legacy rails simply can’t:&lt;br&gt;
Instant global settlement&lt;br&gt;
Near-zero cost transactions&lt;br&gt;
24/7 availability&lt;br&gt;
Borderless commerce&lt;br&gt;
No central gatekeepers&lt;/p&gt;

&lt;p&gt;Forward-looking projections suggest the stablecoin economy may expand to $1.9 trillion — or even $3.6 trillion if tokenized cash is included — by 2030.&lt;/p&gt;

&lt;p&gt;This invites a set of powerful, society-shifting questions:&lt;/p&gt;

&lt;p&gt;How do global remittances change when 6–10% fees disappear?&lt;/p&gt;

&lt;p&gt;Could tens of billions of dollars flow directly back into households instead of middlemen?&lt;/p&gt;

&lt;p&gt;What does e-commerce look like without friction-heavy intermediaries?&lt;/p&gt;

&lt;p&gt;Could merchants reclaim the 2–5% fee margins they currently lose on payments?&lt;/p&gt;

&lt;p&gt;What happens when B2B payments stop waiting on business days and manual review?&lt;/p&gt;

&lt;p&gt;Does liquidity improve? Do more businesses accelerate or expand?&lt;/p&gt;

&lt;p&gt;Real-World Builders: The Rise of PayRam&lt;/p&gt;

&lt;p&gt;Mass adoption doesn’t happen because of technology alone — it happens when real applications make the technology invisible.&lt;/p&gt;

&lt;p&gt;This is where PayRam enters the picture.&lt;/p&gt;

&lt;p&gt;PayRam is pioneering a decentralized payments gateway that enables:&lt;/p&gt;

&lt;p&gt;Onchain, instant, permissionless payments&lt;br&gt;
Merchant and user onboarding without gatekeepers&lt;br&gt;
Global access with no banking prerequisites&lt;br&gt;
Seamless UX that hides blockchain complexity&lt;/p&gt;

&lt;p&gt;The company’s recent CoinTelegraph announcement CoinTelegraph outlines PayRam’s vision of building the “Stripe of onchain commerce”—but without the limitations of centralized platforms.&lt;/p&gt;

&lt;p&gt;If stablecoins eventually support $50 trillion in annual payments — over 17% of global consumer spending — platforms like PayRam aren’t just riding the wave. They’re helping create it.&lt;/p&gt;

&lt;p&gt;So pause and ask:&lt;br&gt;
Does 2025 feel like the year stablecoins stopped being a crypto niche and started becoming the foundation of global financial infrastructure?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why Is Privacy an Essential Pillar in This Payments Revolution?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Now let’s turn to a topic often misunderstood until too late: privacy.&lt;/p&gt;

&lt;p&gt;Public blockchains are transparent by design. While transparency has benefits, full transparency for payments is not practical for individuals, businesses, or institutions.&lt;/p&gt;

&lt;p&gt;Imagine if:&lt;/p&gt;

&lt;p&gt;Anyone could view your salary history&lt;br&gt;
Competitors could inspect your vendor payments&lt;br&gt;
Your entire spending profile was publicly traceable&lt;/p&gt;

&lt;p&gt;For institutions, nearly every stablecoin transaction today is publicly visible — a growing concern as onchain settlement scales into the trillions.&lt;/p&gt;

&lt;p&gt;This is why analysts increasingly argue that privacy is the missing link in stablecoin evolution. Without selective confidentiality, mainstream commerce cannot safely operate onchain.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Emerging tools like zero-knowledge proofs enable:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Hidden transaction amounts&lt;br&gt;
Confidential counterparties&lt;br&gt;
Compliance-friendly auditability&lt;br&gt;
Programmable privacy rules&lt;/p&gt;

&lt;p&gt;Analysts predict that by 2028, over half of stablecoin payments will require built-in privacy protections.&lt;/p&gt;

&lt;p&gt;So ask yourself:&lt;/p&gt;

&lt;p&gt;Would you want your financial life visible to anyone with a blockchain explorer?&lt;/p&gt;

&lt;p&gt;How might exposed payrolls or business deals be exploited?&lt;/p&gt;

&lt;p&gt;And without privacy, can onchain payments actually scale to everyday users?&lt;/p&gt;

&lt;p&gt;Privacy is not a luxury.&lt;br&gt;
It is a requirement for real-world adoption.&lt;/p&gt;

&lt;p&gt;How Does Ownership and Self-Custody Empower Users?&lt;/p&gt;

&lt;p&gt;Let’s shift to a deeper question: What does it mean to truly “own” your money?&lt;/p&gt;

&lt;p&gt;In traditional banking:&lt;br&gt;
funds can be frozen,&lt;br&gt;
reversed,&lt;br&gt;
delayed,&lt;br&gt;
or restricted.&lt;/p&gt;

&lt;p&gt;Stablecoins — especially in self-custody — rewrite this power dynamic.&lt;br&gt;
Your private keys = your funds.&lt;br&gt;
No approvals. No intermediaries. No fragility.&lt;/p&gt;

&lt;p&gt;This unlocks permissionless commerce: free, global, unstoppable.&lt;/p&gt;

&lt;p&gt;Pair that with programmability, and stablecoins become:&lt;/p&gt;

&lt;p&gt;Automated payment tools&lt;/p&gt;

&lt;p&gt;Smart-contract triggers&lt;/p&gt;

&lt;p&gt;Subscription engines&lt;/p&gt;

&lt;p&gt;Settlement rails&lt;/p&gt;

&lt;p&gt;Micropayment enablers&lt;/p&gt;

&lt;p&gt;It’s a financial primitive that lets developers create new forms of commerce previously impossible on legacy rails.&lt;/p&gt;

&lt;p&gt;But ownership also brings responsibility. Safeguarding private keys is essential. With Gen Z rapidly adopting crypto wallets for NFTs and stablecoins, digital financial literacy is becoming a core skill for the next generation.&lt;/p&gt;

&lt;p&gt;Reflect on this:&lt;br&gt;
Can privacy exist without ownership?&lt;br&gt;
And can ownership matter without privacy?&lt;/p&gt;

&lt;p&gt;The two pillars reinforce each other — forming the backbone of user empowerment in an onchain world.&lt;/p&gt;

&lt;p&gt;Tying It All Together: A New Architecture for Global Commerce&lt;/p&gt;

&lt;p&gt;Through these questions, a new payments architecture becomes clear:&lt;/p&gt;

&lt;p&gt;Stablecoins — the economic engine&lt;/p&gt;

&lt;p&gt;Privacy — the trust layer&lt;/p&gt;

&lt;p&gt;Ownership &amp;amp; self-custody — the empowerment layer&lt;/p&gt;

&lt;p&gt;Permissionless commerce — the societal unlock&lt;/p&gt;

&lt;p&gt;Platforms like PayRam — the access layer bringing it all to users&lt;/p&gt;

&lt;p&gt;This is not a theoretical future. It’s emerging right now.&lt;/p&gt;

&lt;p&gt;PayRam’s vision, outlined in the CoinTelegraph press release, highlights how decentralized payments can rival and exceed the convenience of platforms like Stripe, PayPal, or Visa — without the gatekeeping, high fees, or geographic limitations.&lt;/p&gt;

&lt;p&gt;Your Turn: What Does the Future Look Like to You?&lt;/p&gt;

&lt;p&gt;Now I’ll leave you with the same Socratic spirit that started this journey:&lt;/p&gt;

&lt;p&gt;How will these forces — stablecoins, privacy, ownership, and permissionless commerce — converge by 2030 to create a more open, fair, and global payments ecosystem?&lt;/p&gt;

&lt;p&gt;Which part resonates most with your experiences?&lt;/p&gt;

&lt;p&gt;Curiosity drives innovation.&lt;br&gt;
So… what question will you ask next?&lt;/p&gt;

</description>
      <category>stablecoin</category>
      <category>payram</category>
      <category>solana</category>
      <category>petrjoe</category>
    </item>
    <item>
      <title>How to Deploying Django on Vercel</title>
      <dc:creator>Akanmu Akinkunmi</dc:creator>
      <pubDate>Mon, 28 Oct 2024 14:53:58 +0000</pubDate>
      <link>https://dev.to/petrjoe/how-to-deploying-django-on-vercel-43ek</link>
      <guid>https://dev.to/petrjoe/how-to-deploying-django-on-vercel-43ek</guid>
      <description>&lt;p&gt;Deploying a Django application on Vercel from a GitHub repository is a streamlined process that leverages Vercel's integration with GitHub. This guide will walk you through the steps to redeploy your Django application on Vercel using your GitHub repository.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;p&gt;Before you start, make sure you have the following:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A Django project ready for deployment.&lt;/li&gt;
&lt;li&gt;A Vercel account.&lt;/li&gt;
&lt;li&gt;Your Django project hosted on a GitHub repository.&lt;/li&gt;
&lt;li&gt;Vercel CLI installed on your local machine (optional).&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Step-by-Step Guide
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Prepare Your Django Project
&lt;/h3&gt;

&lt;p&gt;Ensure your Django project is ready for deployment. This includes having a &lt;code&gt;requirements.txt&lt;/code&gt; file with all your dependencies listed.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Create a &lt;code&gt;vercel.json&lt;/code&gt; Configuration File
&lt;/h3&gt;

&lt;p&gt;Create a &lt;code&gt;vercel.json&lt;/code&gt; file in the root directory of your Django project with the following content:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"builds"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"src"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"projectname/wsgi.py"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"use"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"@vercel/python"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"config"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"maxLambdaSize"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"15mb"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"runtime"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"python3.12"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"src"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"build_files.sh"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"use"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"@vercel/static-build"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"config"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"distDir"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;".vercel/output"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"routes"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"src"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"/static/(.)"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"dest"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"/staticfiles/$1"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"src"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"/(.)"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"dest"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"projectname/wsgi.py"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This configuration tells Vercel how to build and route your Django application.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Create a &lt;code&gt;build_files.sh&lt;/code&gt; Script
&lt;/h3&gt;

&lt;p&gt;Create a &lt;code&gt;build_files.sh&lt;/code&gt; script in the root directory of your Django project with the following content:&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="c"&gt;#!/bin/bash&lt;/span&gt;

&lt;span class="c"&gt;# Install dependencies&lt;/span&gt;
python3 &lt;span class="nt"&gt;-m&lt;/span&gt; pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; requirements.txt

&lt;span class="c"&gt;# Collect static files&lt;/span&gt;
python3 manage.py collectstatic &lt;span class="nt"&gt;--noinput&lt;/span&gt;

&lt;span class="c"&gt;# Create Vercel-compatible output vercel directory&lt;/span&gt;
&lt;span class="nb"&gt;mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; .vercel/output/static
&lt;span class="nb"&gt;cp&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; staticfiles/ .vercel/output/static/

python3 manage.py makemigrations
python3 manage.py migrate
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Make sure to give execute permissions to the script:&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;chmod&lt;/span&gt; +x build_files.sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  4. Update Your WSGI Configuration
&lt;/h3&gt;

&lt;p&gt;Ensure your &lt;code&gt;wsgi.py&lt;/code&gt; file is correctly configured. It should look something like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;
WSGI config for projectname project.

It exposes the WSGI callable as a module-level variable named ``application``.

For more information on this file, see
https://docs.djangoproject.com/en/5.0/howto/deployment/wsgi/
&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;

&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;

&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;django.core.wsgi&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;get_wsgi_application&lt;/span&gt;

&lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;environ&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;setdefault&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;DJANGO_SETTINGS_MODULE&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;projectname.settings&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;application&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;get_wsgi_application&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;app&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;application&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  5. Push Changes to GitHub
&lt;/h3&gt;

&lt;p&gt;Commit and push your changes to your GitHub repository:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git add &lt;span class="nb"&gt;.&lt;/span&gt;
git commit &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"Prepare for Vercel deployment"&lt;/span&gt;
git push origin main
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  6. Deploy from GitHub
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Login to Vercel: Go to &lt;a href="https://vercel.com/" rel="noopener noreferrer"&gt;Vercel&lt;/a&gt; and log in to your account.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Import GitHub Repository:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Click on the "New Project" button.&lt;/li&gt;
&lt;li&gt;Select "Import Git Repository".&lt;/li&gt;
&lt;li&gt;Choose your GitHub repository from the list.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Configure Project:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Vercel will automatically detect the &lt;code&gt;vercel.json&lt;/code&gt; file and use it to configure the build and deployment process.&lt;/li&gt;
&lt;li&gt;Click on the "Deploy" button to start the deployment process.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  7. Configure Environment Variables
&lt;/h3&gt;

&lt;p&gt;If your Django project relies on environment variables (e.g., for database configuration), you can set these in the Vercel dashboard under the "Settings" tab of your project.&lt;/p&gt;

&lt;h3&gt;
  
  
  8. Redeploy on Changes
&lt;/h3&gt;

&lt;p&gt;Vercel will automatically redeploy your application whenever you push changes to the connected GitHub repository. This ensures that your application is always up-to-date with the latest code.&lt;/p&gt;

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

&lt;p&gt;Redeploying a Django application on Vercel from a GitHub repository is a straightforward process that involves preparing your project, creating the necessary configuration files, and pushing your changes to GitHub. By following these steps, you can ensure that your Django application is always up-to-date and easily redeployable on Vercel.&lt;/p&gt;

&lt;p&gt;Happy deploying!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Integrating Django and React in a Django Project</title>
      <dc:creator>Akanmu Akinkunmi</dc:creator>
      <pubDate>Fri, 08 Dec 2023 01:42:26 +0000</pubDate>
      <link>https://dev.to/petrjoe/integrating-django-and-react-in-a-django-project-2bfj</link>
      <guid>https://dev.to/petrjoe/integrating-django-and-react-in-a-django-project-2bfj</guid>
      <description>&lt;p&gt;If you're a developer working on a project that involves both Django and React, you might be wondering how to seamlessly integrate these technologies. Django is a powerful web framework for Python, while React is a popular JavaScript library for building user interfaces. Combining them can provide a robust solution for creating modern web applications. In this blog post, we'll explore a step-by-step guide on how to integrate a React project into a Django project.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Directory Structure&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Assuming you have a Django project with the following directory structure:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;project/&lt;br&gt;
│&lt;br&gt;
├── backend/&lt;br&gt;
│   ├── manage.py&lt;br&gt;
│   ├── backend/&lt;br&gt;
│   │   ├── settings.py&lt;br&gt;
│   │   └── ...&lt;br&gt;
│   └── ...&lt;br&gt;
│&lt;br&gt;
└── frontend/&lt;br&gt;
    ├── src/&lt;br&gt;
    │   └── ...&lt;br&gt;
    ├── public/&lt;br&gt;
    │   └── index.html&lt;br&gt;
    └── ...&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
The Django project is in the backend directory, and the React project is in the frontend directory. Let's go through the integration process.&lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;1. Building the React Project&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Firstly, you need to build the React project. The script below, placed in your Django project's main file (e.g., manage.py), will handle this task for you:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#!/usr/bin/env python
"""Django's command-line utility for administrative tasks."""
import os
import subprocess
import sys

def main():
    """Run administrative tasks."""
    BASE_DIR = os.path.dirname(os.path.abspath(__file__))

    # Assuming your ReactJS project is in the 'frontend' directory inside your Django project
    react_project_directory = os.path.join(BASE_DIR, 'frontend')

    subprocess.run(['npm', 'run', 'build'], cwd=react_project_directory, check=True)

    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'backend.settings')
    try:
        from django.core.management import execute_from_command_line
    except ImportError as exc:
        raise ImportError(
            "Couldn't import Django. Are you sure it's installed and "
            "available on your PYTHONPATH environment variable? Did you "
            "forget to activate a virtual environment?"
        ) from exc
    execute_from_command_line(sys.argv)

if __name__ == '__main__':
    main()

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This script ensures that before running any Django command, the React project is built using the npm run build command.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;2. Configuring Django Settings&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;In your Django project's settings.py, add the following configurations to serve static files:&lt;/p&gt;

&lt;h1&gt;
  
  
  settings.py
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;BASE_DIR = os.path.dirname(os.path.abspath(__file__))

STATICFILES_DIRS = [os.path.join(BASE_DIR, 'frontend/dist/assets')]
STATIC_URL = '/assets/'
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These settings define where Django should look for static files, the URL for serving them, and the directory where the collected static files should be stored.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;3. Updating URL Patterns&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Update your urls.py to include the necessary URL patterns:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#urls.py

from django.contrib import admin
from django.urls import path, re_path
from django.views.generic import TemplateView
from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', TemplateView.as_view(template_name='index.html')),
]

if settings.DEBUG:
    urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This configuration ensures that Django serves the React application's entry point (index.html) when accessing the root URL.&lt;/p&gt;

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

&lt;p&gt;By following these steps, you can successfully integrate a Django backend with a React frontend. This setup allows you to leverage the strengths of both technologies, creating a powerful and modern web application. Remember to adapt the paths and configurations based on your project's specific structure. Happy coding!&lt;br&gt;
You can find the github repository &lt;a href="https://github.com/PetrJoe/React-Django-integration"&gt;Here&lt;/a&gt;&lt;br&gt;
&lt;a href="https://reactdjango.onrender.com"&gt;Deployed on render &lt;/a&gt;&lt;br&gt;
Also you can refer to the github repo for the latest update on the integration settings&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>programming</category>
      <category>django</category>
      <category>react</category>
    </item>
  </channel>
</rss>
