<?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: mdSamee</title>
    <description>The latest articles on DEV Community by mdSamee (@samee90).</description>
    <link>https://dev.to/samee90</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%2F3015001%2F712c0b18-cafd-4acd-8995-7efa780e61e2.png</url>
      <title>DEV Community: mdSamee</title>
      <link>https://dev.to/samee90</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/samee90"/>
    <language>en</language>
    <item>
      <title>Storage Buckets Demystified: How the Cloud Stores Your World</title>
      <dc:creator>mdSamee</dc:creator>
      <pubDate>Thu, 08 May 2025 11:54:23 +0000</pubDate>
      <link>https://dev.to/samee90/storage-buckets-demystified-how-the-cloud-stores-your-world-4h70</link>
      <guid>https://dev.to/samee90/storage-buckets-demystified-how-the-cloud-stores-your-world-4h70</guid>
      <description>&lt;p&gt;In today’s digital world, we rely heavily on &lt;strong&gt;cloud storage&lt;/strong&gt; for everything from uploading photos and documents to streaming music and videos. Behind the scenes, this magic happens through &lt;strong&gt;cloud storage buckets&lt;/strong&gt; — the containers that hold and serve your files. Whether you're building a web app, mobile app understanding cloud storage is crucial.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. &lt;strong&gt;What Are Cloud Storage Buckets?&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Imagine you're organizing your personal files on your computer. You might create folders for photos, documents, music, etc. In the cloud, this idea is scaled up to &lt;strong&gt;storage buckets&lt;/strong&gt; — containers that hold files in the cloud.&lt;br&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%2Fpfkvwzm2zinmi6rmsp78.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%2Fpfkvwzm2zinmi6rmsp78.png" alt="Image description" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  &lt;strong&gt;Key Characteristics of Cloud Storage Buckets:&lt;/strong&gt;
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Objects:&lt;/strong&gt; Everything inside a bucket is considered an "object," which can be a file (e.g., images, PDFs) or metadata about the file.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Public or Private Access:&lt;/strong&gt; Buckets can be publicly accessible (anyone with a link can view) or private (restricted by roles or tokens).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scalability:&lt;/strong&gt; Buckets are designed to scale effortlessly, from a few files to petabytes of data.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  2. &lt;strong&gt;How Storage Buckets Power Real-World Applications&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Let's connect cloud storage with real-world scenarios. Here’s how various industries leverage storage buckets:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Social Media Platforms (e.g., Instagram, Twitter)&lt;/strong&gt;: These platforms store user-uploaded photos and videos in storage buckets. The content is typically &lt;strong&gt;public&lt;/strong&gt; and needs to be fast and accessible.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Document Management Systems (e.g., Google Docs)&lt;/strong&gt;: Files such as text documents, PDFs, and presentations are uploaded to storage buckets (Google Cloud Storage for GCP, Firebase for smaller apps).&lt;/p&gt;&lt;/li&gt;
&lt;/ul&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%2Fq0lvndslap6cmo51albz.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%2Fq0lvndslap6cmo51albz.png" alt="Image description" width="800" height="533"&gt;&lt;/a&gt;&lt;br&gt;
Cloud storage systems like &lt;strong&gt;Amazon S3&lt;/strong&gt;, &lt;strong&gt;Firebase Storage&lt;/strong&gt;, and &lt;strong&gt;Supabase Storage&lt;/strong&gt; provide easy access to these buckets. Let's dive into how these systems compare and which one might be best suited for your needs.&lt;/p&gt;
&lt;h3&gt;
  
  
  3. &lt;strong&gt;Supabase, Firebase, AWS S3 — What’s the Difference?&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Cloud storage systems all serve the same basic function — storing and retrieving files — but they have different features, integrations, and pricing.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Supabase Storage&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Firebase Storage&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;AWS S3&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Ease of Setup&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;⭐⭐⭐⭐⭐&lt;/td&gt;
&lt;td&gt;⭐⭐⭐⭐&lt;/td&gt;
&lt;td&gt;⭐⭐&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Pricing&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Generous free tier&lt;/td&gt;
&lt;td&gt;Free for up to 1GB&lt;/td&gt;
&lt;td&gt;Pay-as-you-go (more scalable)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Access Control&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Fine-grained via row-level policies&lt;/td&gt;
&lt;td&gt;Integrated with Firebase Auth&lt;/td&gt;
&lt;td&gt;IAM policies and access keys&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Integration&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Best for full-stack developers&lt;/td&gt;
&lt;td&gt;Ideal for mobile apps&lt;/td&gt;
&lt;td&gt;Flexible, enterprise-grade&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Best For&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Startups, DB + Storage apps&lt;/td&gt;
&lt;td&gt;Mobile apps&lt;/td&gt;
&lt;td&gt;Large-scale applications&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;Supabase Storage:&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Supabase’s storage solution is a great fit for developers already working with &lt;strong&gt;PostgreSQL&lt;/strong&gt;, as it integrates seamlessly with the database. It allows you to manage files securely and efficiently while keeping your storage access and user data tightly integrated.&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%2Fgaetcysq0chk1g2tgq1x.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%2Fgaetcysq0chk1g2tgq1x.png" alt="Image description" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  4. &lt;strong&gt;Setting Up and Implementing Supabase Storage Bucket&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Now, let's break down how you can implement Supabase Storage Buckets in your projects.&lt;/p&gt;
&lt;h4&gt;
  
  
  &lt;strong&gt;Step 1: Setup Project in Supabase&lt;/strong&gt;
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Create a Supabase Account&lt;/strong&gt;: Go to &lt;a href="https://supabase.io/" rel="noopener noreferrer"&gt;Supabase&lt;/a&gt; and create an account.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Create a New Project&lt;/strong&gt;: From the Supabase dashboard, click "New Project", choose your database and region.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Enable Storage&lt;/strong&gt;: Once your project is created, navigate to the "Storage" tab and create a &lt;strong&gt;Bucket&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;h4&gt;
  
  
  &lt;strong&gt;Step 2: Configure Bucket Access and Permissions&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;Supabase gives you the flexibility to define access control for each file in your bucket.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Set Bucket Public or Private&lt;/strong&gt;:&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Public Access&lt;/strong&gt;: Anyone can access files via a URL (great for media files).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Private Access&lt;/strong&gt;: Files require authentication via &lt;strong&gt;JWT tokens&lt;/strong&gt; (recommended for sensitive data like user documents).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example policy for allowing file uploads only if the user is authenticated:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="c1"&gt;-- Example Policy for file upload&lt;/span&gt;
&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="n"&gt;POLICY&lt;/span&gt; &lt;span class="nv"&gt;"Allow authenticated users to upload files"&lt;/span&gt;
    &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="k"&gt;storage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;objects&lt;/span&gt;
    &lt;span class="k"&gt;FOR&lt;/span&gt; &lt;span class="k"&gt;INSERT&lt;/span&gt;
    &lt;span class="k"&gt;USING&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;auth&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;uid&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="k"&gt;IS&lt;/span&gt; &lt;span class="k"&gt;NOT&lt;/span&gt; &lt;span class="k"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  &lt;strong&gt;Step 3: Upload and Retrieve Files&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;Now let’s dive into the code to upload and retrieve files.&lt;/p&gt;

&lt;h5&gt;
  
  
  Upload File to Supabase Storage
&lt;/h5&gt;

&lt;p&gt;First, install the Supabase client:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;Now, you can upload a file using the following JavaScript code (in a React or Node.js environment):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&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;createClient&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;@supabase/supabase-js&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;supabase&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;createClient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;https://your-project.supabase.co&lt;/span&gt;&lt;span class="dl"&gt;'&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-public-anon-key&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;// Upload file&lt;/span&gt;
&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;uploadFile&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;file&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;error&lt;/span&gt; &lt;span class="p"&gt;}&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;supabase&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;storage&lt;/span&gt;
    &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;from&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-bucket-name&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;upload&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;file-path-in-bucket/&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;file&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;file&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Error uploading file:&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;message&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;File uploaded:&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;data&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;h5&gt;
  
  
  Download File from Supabase Storage
&lt;/h5&gt;

&lt;p&gt;You can retrieve a file from your bucket using the &lt;code&gt;download&lt;/code&gt; method:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Download file&lt;/span&gt;
&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;downloadFile&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;filePath&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;error&lt;/span&gt; &lt;span class="p"&gt;}&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;supabase&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;storage&lt;/span&gt;
    &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;from&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-bucket-name&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;download&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;filePath&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Error downloading file:&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;message&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&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;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;URL&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;createObjectURL&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="c1"&gt;// Do something with the URL (e.g., display or save)&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Download URL:&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;url&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;h3&gt;
  
  
  5. &lt;strong&gt;Security and Permissions: Protecting Your Files&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Files in your storage buckets can be accessed in two ways: publicly or privately. &lt;strong&gt;Private access&lt;/strong&gt; is crucial for ensuring that sensitive data, such as user documents, is protected.&lt;/p&gt;

&lt;p&gt;In Supabase, you can set policies to control file access:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Public Access&lt;/strong&gt;: By default, anyone with a link can access files.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Private Access&lt;/strong&gt;: Use &lt;strong&gt;JWT tokens&lt;/strong&gt; or &lt;strong&gt;row-level security policies&lt;/strong&gt; to restrict access to authenticated users only.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example of a policy for downloading files only for authenticated users:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="n"&gt;POLICY&lt;/span&gt; &lt;span class="nv"&gt;"Allow authenticated users to download files"&lt;/span&gt;
    &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="k"&gt;storage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;objects&lt;/span&gt;
    &lt;span class="k"&gt;FOR&lt;/span&gt; &lt;span class="k"&gt;SELECT&lt;/span&gt;
    &lt;span class="k"&gt;USING&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;auth&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;uid&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="k"&gt;IS&lt;/span&gt; &lt;span class="k"&gt;NOT&lt;/span&gt; &lt;span class="k"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In a full-stack application, ensure that only authorized users can upload or download files by implementing strong authentication and authorization mechanisms, such as &lt;strong&gt;OAuth&lt;/strong&gt; or &lt;strong&gt;JWT-based login&lt;/strong&gt;.&lt;br&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%2Fdm4m61m6lqsv7e2intdi.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%2Fdm4m61m6lqsv7e2intdi.png" alt="Image description" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  7. &lt;strong&gt;Conclusion: Why Cloud Storage Buckets Are Essential for Your App&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Cloud storage buckets have become a critical part of modern web and mobile applications. They are &lt;strong&gt;scalable&lt;/strong&gt;, &lt;strong&gt;secure&lt;/strong&gt;, and &lt;strong&gt;easy to implement&lt;/strong&gt;. Whether you’re building a small app or an enterprise-level system, understanding and integrating a cloud storage bucket is essential.&lt;/p&gt;

&lt;p&gt;For developers working with Supabase, integrating storage buckets with your PostgreSQL database is seamless, and the &lt;strong&gt;pricing is attractive&lt;/strong&gt; for startups and small businesses. With options like public or private access and granular control over permissions, Supabase Storage is a great choice for developers looking for simplicity and power in file management.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Next Steps:&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;If you’re starting a project that needs file management, try integrating Supabase Storage into your app. It's perfect for managing documents, media, backups, and more — all while keeping your app scalable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bonus&lt;/strong&gt;: Don't forget to &lt;strong&gt;test file permissions&lt;/strong&gt; thoroughly, especially for sensitive data!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>cloudcomputing</category>
      <category>programming</category>
      <category>aws</category>
    </item>
    <item>
      <title>Frameworks Change, Foundations Don’t: The Power of Core Skills</title>
      <dc:creator>mdSamee</dc:creator>
      <pubDate>Thu, 17 Apr 2025 05:17:47 +0000</pubDate>
      <link>https://dev.to/samee90/frameworks-change-foundations-dont-the-power-of-core-skills-1nad</link>
      <guid>https://dev.to/samee90/frameworks-change-foundations-dont-the-power-of-core-skills-1nad</guid>
      <description>&lt;p&gt;When I started my journey as a developer, I was fascinated by the shiny things—frameworks, libraries, no-code tools, and fast ways to build cool apps. I jumped into React, Django, Flutter... and for a while, it felt great. But eventually, I hit a wall. And that’s when I realized the &lt;strong&gt;real power lies in core skills&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  What Are Core Skills?
&lt;/h3&gt;

&lt;p&gt;In simple words, &lt;strong&gt;core skills are the fundamentals&lt;/strong&gt;. The things that never change no matter what stack you're working on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Data Structures &amp;amp; Algorithms
&lt;/li&gt;
&lt;li&gt;Object-Oriented Programming (OOP)
&lt;/li&gt;
&lt;li&gt;Databases and how SQL really works
&lt;/li&gt;
&lt;li&gt;How the web works (HTTP, APIs, sessions)
&lt;/li&gt;
&lt;li&gt;Git, Linux, and version control
&lt;/li&gt;
&lt;li&gt;Understanding memory, time complexity, and architecture
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are not trendy, but they’re &lt;strong&gt;timeless&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The Day I Switched Stacks&lt;br&gt;
I still remember the first time I had to switch my stack. I was comfortable building applications using Django and Node.js — both frameworks where I knew the ins and outs. But then came a new opportunity: I had to work on a project using Spring Boot.&lt;/p&gt;

&lt;p&gt;Java? Spring? Annotations everywhere? At first glance, it was overwhelming.&lt;/p&gt;

&lt;p&gt;But here's what surprised me — I didn’t feel like a complete beginner. Sure, the syntax was different, and the tooling had a learning curve. But I realized that the core concepts were the same. Whether it was building REST APIs, managing database models, or handling request-response cycles — the logic I’d learned through Django and Node.js applied here too.&lt;/p&gt;

&lt;p&gt;I already knew:&lt;/p&gt;

&lt;p&gt;How an MVC architecture works&lt;/p&gt;

&lt;p&gt;The basics of HTTP and routing&lt;/p&gt;

&lt;p&gt;Database operations using ORM principles&lt;/p&gt;

&lt;p&gt;Dependency injection, even if it had a different name or implementation&lt;/p&gt;

&lt;p&gt;Because I had worked hard on my core skills, the transition wasn’t as difficult as I feared. I wasn't just copying and pasting code from tutorials — I was understanding what the code was doing, no matter the language or framework.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Struggle Without Core
&lt;/h3&gt;

&lt;p&gt;Early on, I built projects using just tutorials and templates. But when something broke, I had &lt;strong&gt;no idea why&lt;/strong&gt;.&lt;br&gt;&lt;br&gt;
When I was asked to optimize a function, I didn’t know how to analyze its time complexity.&lt;br&gt;&lt;br&gt;
And when I sat for interviews, I struggled with basic DSA questions, even though I could build full apps.&lt;/p&gt;

&lt;p&gt;That’s when it hit me: &lt;strong&gt;frameworks teach you to build, but core skills teach you to think.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  How Core Helped Me Grow
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;I could &lt;strong&gt;debug faster&lt;/strong&gt; because I understood how memory, variables, and loops actually worked under the hood.
&lt;/li&gt;
&lt;li&gt;I could read and contribute to &lt;strong&gt;open-source projects&lt;/strong&gt; that didn’t use my familiar stack.
&lt;/li&gt;
&lt;li&gt;I got better at &lt;strong&gt;designing scalable systems&lt;/strong&gt;—because I wasn’t just coding, I was solving problems.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  What I Did to Strengthen My Core
&lt;/h3&gt;

&lt;p&gt;I stopped blindly following tutorials and started learning &lt;strong&gt;why&lt;/strong&gt; things work the way they do. I:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Spent time on DSA using LeetCode &amp;amp; GeeksforGeeks
&lt;/li&gt;
&lt;li&gt;Read books like &lt;em&gt;“Cracking the Coding Interview”&lt;/em&gt; and &lt;em&gt;“You Don’t Know JS”&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;Built small projects from scratch using just core languages (no frameworks)
&lt;/li&gt;
&lt;li&gt;Studied how databases, operating systems, and networks actually function
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It wasn’t easy—but it was worth it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Final Thoughts
&lt;/h3&gt;

&lt;p&gt;Today, when people ask me, “How do I switch from frontend to backend?” or “How do I learn a new tech stack?”—my answer is always the same:&lt;br&gt;
&lt;strong&gt;Focus on the core.&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Because once you understand the foundation, the tools and frameworks become just that—&lt;strong&gt;tools&lt;/strong&gt;, not barriers.&lt;/p&gt;

&lt;h3&gt;
  
  
  One Line I Always Remember:
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;"Frameworks make you a developer, but core skills make you unstoppable."&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>coreskills</category>
      <category>webdev</category>
      <category>programming</category>
      <category>architecture</category>
    </item>
    <item>
      <title>Hello World Isn’t Enough: The Reality of Coding After College</title>
      <dc:creator>mdSamee</dc:creator>
      <pubDate>Wed, 16 Apr 2025 05:15:28 +0000</pubDate>
      <link>https://dev.to/samee90/hello-world-isnt-enough-the-reality-of-coding-after-college-51d5</link>
      <guid>https://dev.to/samee90/hello-world-isnt-enough-the-reality-of-coding-after-college-51d5</guid>
      <description>&lt;h2&gt;
  
  
  What Are Universities Teaching Today?
&lt;/h2&gt;

&lt;p&gt;In most Indian universities, the programming curriculum hasn’t evolved much in the past decade. The focus is still on languages like C and C++ for foundational logic, and Java is taught in a very textbook-oriented way, often with outdated versions. Some institutions have started introducing Python, but it’s usually limited to syntax and basic scripting. The syllabus includes subjects like Data Structures, Operating Systems, DBMS, and Computer Networks, but they’re taught with an exam-oriented approach. Real-world technologies like version control, cloud computing, REST APIs, or frameworks like React, Node.js, or Django are almost entirely missing from the curriculum.&lt;/p&gt;

&lt;h2&gt;
  
  
  Are Teachers Updated? Mostly No.
&lt;/h2&gt;

&lt;p&gt;A major challenge is that many faculty members were trained years ago and haven’t updated their knowledge with current industry trends. Most of them haven’t worked in real-world development environments and continue teaching from textbooks. As a result, they are unaware of tools and practices used by actual software teams today, like Git, CI/CD pipelines, DevOps, or collaborative platforms like GitHub. Students are rarely exposed to agile development, design patterns, or debugging real codebases. The lack of continuous learning among educators contributes directly to the skill gap that fresh graduates face in the tech industry.&lt;/p&gt;

&lt;h2&gt;
  
  
  Infrastructure Still in the Past
&lt;/h2&gt;

&lt;p&gt;University computer labs often run on outdated systems and software. You’ll still find Turbo C++, BlueJ, or even Notepad being used as default environments for writing code. IDEs like VS Code or IntelliJ are rarely encouraged. In many cases, students are not taught how to push their code to GitHub or deploy their projects online. Access to cloud services, servers, or real deployment scenarios is almost nonexistent. Infrastructure that should empower creativity ends up limiting exposure to how development is actually done in the professional world.&lt;/p&gt;

&lt;h2&gt;
  
  
  Marks Matter More Than Skills
&lt;/h2&gt;

&lt;p&gt;The current academic system continues to prioritize marks over skills. Students are trained to memorize code and reproduce it in exams rather than solve real-world problems or build working applications. Practical exams often focus on writing algorithms on paper, instead of implementing them in a meaningful project. Viva questions rarely assess problem-solving or development thinking. As a result, many students focus on rote learning just to clear exams — missing out on opportunities to build portfolios, work on real projects, or develop skills that companies actually look for.&lt;/p&gt;

&lt;p&gt;In addition to practical coding skills, a solid theoretical foundation is crucial for long-term success in programming. Understanding algorithms, data structures, design patterns, and software architecture principles are vital for building efficient, maintainable, and scalable systems. These concepts are often emphasized in college curriculums, but once out in the field, they are frequently overshadowed by the urgency of solving immediate technical problems. However, it’s the theoretical knowledge that empowers developers to make informed decisions, optimize performance, and create solutions that stand the test of time. In the end, coding is not just about writing functional code, but understanding the deeper principles that guide the creation of robust software.&lt;/p&gt;

&lt;h2&gt;
  
  
  Beyond Hello World?
&lt;/h2&gt;

&lt;p&gt;In real-life coding, you'll encounter various tools not typically taught in university, including:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Version Control&lt;/strong&gt;: Git and platforms like GitHub, GitLab, or Bitbucket are essential for managing code, collaborating with teams, and tracking changes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Project Management&lt;/strong&gt;: Tools like Jira, Trello, or Asana help manage tasks, sprints, and project timelines in an agile workflow.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Containerization&lt;/strong&gt;: Docker is widely used for creating, deploying, and managing applications in isolated environments, ensuring consistency across platforms.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CI/CD&lt;/strong&gt;: Jenkins, CircleCI, and Travis CI are tools for automating the testing, building, and deployment of applications.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cloud Platforms&lt;/strong&gt;: AWS, Azure, and Google Cloud offer scalable infrastructure for deploying and managing applications at scale.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;IDEs &amp;amp; Editors&lt;/strong&gt;: Visual Studio Code, IntelliJ IDEA, and PyCharm are commonly used for development, offering features like code completion and debugging tools.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Monitoring and Logging&lt;/strong&gt;: Tools like Prometheus, Grafana, and Splunk help monitor applications and systems, providing insights into performance and errors in production.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Testing Frameworks&lt;/strong&gt;: JUnit, Mocha, Selenium, and Postman are used for automated unit tests, integration tests, and API testing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Security Tools&lt;/strong&gt;: Tools like OWASP ZAP and Burp Suite help identify vulnerabilities and ensure application security.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;These tools help streamline development, improve code quality, and ensure scalability, security, and performance in real-world environments.&lt;/p&gt;

&lt;p&gt;In addition to tools, there are several trends in the tech industry that are rarely covered in university curricula:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Cloud Computing&lt;/strong&gt;: AWS, Google Cloud, and Azure for scalable, cloud-based apps.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DevOps&lt;/strong&gt;: Tools like Docker, Jenkins, and Kubernetes for continuous integration and deployment.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Microservices&lt;/strong&gt;: Building scalable apps with small, independent services.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI/ML&lt;/strong&gt;: Real-world applications of machine learning with TensorFlow and PyTorch.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Blockchain&lt;/strong&gt;: Developing decentralized apps and smart contracts on platforms like Ethereum.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Edge Computing&lt;/strong&gt;: Reducing latency by processing data closer to its source.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Serverless&lt;/strong&gt;: Using AWS Lambda or Google Functions to build apps without managing servers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Quantum Computing&lt;/strong&gt;: Early-stage tech offering breakthroughs in complex problem-solving.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AR/VR&lt;/strong&gt;: Immersive experiences built with Unity and Unreal Engine.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No-Code/Low-Code&lt;/strong&gt;: Tools like Bubble and Webflow for rapid app development without coding.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;These trends represent the cutting edge of the tech industry, and mastering them can help you stay competitive in the rapidly evolving world of software development.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Discovering the Gap Between University Learning and Real-World Development&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;I underwent corporate training that I realized how disconnected the academic syllabus was from real-world development practices. In my corporate training, I was introduced to tools like Git, cloud computing, and agile workflows—concepts that I had never encountered during my university education. This experience made me realize the stark difference between what I had learned in college and what was expected of me in the professional world. It was eye-opening and set me on the path to bridging that gap.&lt;/p&gt;

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

&lt;p&gt;In conclusion, real-life coding demands a hands-on, practical approach that goes beyond what is taught in university. While concepts like algorithms and data structures are fundamental, modern tools and trends like cloud computing, DevOps, and AI/ML are what shape the future of development. It's important to note that coding isn't something you can master by just watching outdated PowerPoint presentations or learning older versions of languages like Java or Python. The key to becoming a proficient developer is continuous learning, staying updated with the latest trends, and gaining real-world experience through hands-on projects.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>career</category>
      <category>performance</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
