<?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: Aswini S M</title>
    <description>The latest articles on DEV Community by Aswini S M (@aswini-sm).</description>
    <link>https://dev.to/aswini-sm</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%2F3294430%2F2cdf51aa-ecd3-4c8d-8df2-35fa35bf4ebd.jpg</url>
      <title>DEV Community: Aswini S M</title>
      <link>https://dev.to/aswini-sm</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/aswini-sm"/>
    <language>en</language>
    <item>
      <title># I Built a Full-Stack App Used by 500+ Real Users as a College Student — Here's What Nobody Tells You</title>
      <dc:creator>Aswini S M</dc:creator>
      <pubDate>Fri, 01 May 2026 12:55:11 +0000</pubDate>
      <link>https://dev.to/aswini-sm/-i-built-a-full-stack-app-used-by-500-real-users-as-a-college-student-heres-what-nobody-tells-1okc</link>
      <guid>https://dev.to/aswini-sm/-i-built-a-full-stack-app-used-by-500-real-users-as-a-college-student-heres-what-nobody-tells-1okc</guid>
      <description>&lt;p&gt;I almost didn't build this project.&lt;/p&gt;

&lt;p&gt;I thought, "Who am I to build something for real users? I'm still in college. I barely know what I'm doing."&lt;/p&gt;

&lt;p&gt;But I did it anyway. And now that app is actively used by more than 500 people.&lt;/p&gt;

&lt;p&gt;This is the honest story of how I built it, what broke, what I learned, and what I wish someone had told me before I started.&lt;/p&gt;

&lt;p&gt;If you are a beginner in web development, bookmark this. It will save you months.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why I Built This in the First Place
&lt;/h2&gt;

&lt;p&gt;Many community organizations — especially churches — manage their entire operations through WhatsApp groups, paper notices, and scattered spreadsheets. Events get missed. Announcements get lost. Media files live on someone's personal phone.&lt;/p&gt;

&lt;p&gt;I saw this happening firsthand and thought — this is a real problem. And I know enough React and Node.js to attempt a solution.&lt;/p&gt;

&lt;p&gt;So I started building.&lt;/p&gt;

&lt;p&gt;Not because I was ready. Because the problem was real.&lt;/p&gt;




&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;A full-stack Church Management Web Application that handles:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Event scheduling and announcements&lt;/li&gt;
&lt;li&gt;Dynamic media galleries (images, videos)&lt;/li&gt;
&lt;li&gt;A secure admin dashboard for content management&lt;/li&gt;
&lt;li&gt;Real-time updates for community members&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The app is live. It has real users. And it has broken in real-world ways I never anticipated when I was writing code locally.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Tech Stack (And Why I Chose It)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontend:&lt;/strong&gt; React.js + Tailwind CSS&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend:&lt;/strong&gt; Node.js + Express.js&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Database:&lt;/strong&gt; MongoDB&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Media Storage:&lt;/strong&gt; Cloudinary&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deployment:&lt;/strong&gt; Netlify (frontend) + Railway (backend)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I chose this stack because I was already learning React, and MongoDB made sense for flexible content structures. Cloudinary solved the media storage problem in one afternoon — which would have taken me weeks if I tried to build it myself.&lt;/p&gt;




&lt;h2&gt;
  
  
  How It Works — The Real Data Flow
&lt;/h2&gt;

&lt;p&gt;Here is the actual flow from admin action to user screen:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Admin logs into the dashboard and adds an event or uploads media&lt;/li&gt;
&lt;li&gt;Frontend sends an API request to the Express backend&lt;/li&gt;
&lt;li&gt;Backend validates the request and processes it&lt;/li&gt;
&lt;li&gt;Data is saved to MongoDB; images/videos are pushed to Cloudinary&lt;/li&gt;
&lt;li&gt;When a user opens the app, the frontend fetches the latest data via REST APIs&lt;/li&gt;
&lt;li&gt;The UI renders dynamically — no page refresh needed&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Simple on paper. Surprisingly complex to get right in practice.&lt;/p&gt;




&lt;h2&gt;
  
  
  The 3 Moments Where Everything Broke
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. The API data mismatch that took me 2 days to find
&lt;/h3&gt;

&lt;p&gt;My React frontend was sending data in one format. My Express backend expected a slightly different structure. The result? Silent failures — data that appeared to save but never actually did.&lt;/p&gt;

&lt;p&gt;I spent two days debugging this before I realized I hadn't standardized my API payload format.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I do now:&lt;/strong&gt; Before writing a single line of frontend code, I define the exact request and response structure. I write it down. I test it in Postman. Then I build the UI around it.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. State that refused to update when it should
&lt;/h3&gt;

&lt;p&gt;Components were not refreshing after data changes. A user would submit a form and the UI would show the old data for another 10 seconds.&lt;/p&gt;

&lt;p&gt;The root cause was poor state management — I was mutating state directly instead of triggering proper re-renders.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I do now:&lt;/strong&gt; I treat state as immutable. Every update creates a new object. I also use useEffect dependencies carefully instead of leaving them empty and wondering why nothing updates.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. It worked locally. It broke for real users.
&lt;/h3&gt;

&lt;p&gt;When I deployed, things that worked perfectly on my laptop started failing for users with slower connections or different browsers. Images would not load. API calls would time out.&lt;/p&gt;

&lt;p&gt;This taught me the most important lesson of the entire project:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Local development is a lie. Always think about real network conditions.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;What I do now:&lt;/strong&gt; I test on throttled connections. I add loading states and error boundaries everywhere. I assume things will fail and handle it gracefully.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Moment It Became Real
&lt;/h2&gt;

&lt;p&gt;Three weeks after launch, a volunteer coordinator messaged me:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"The app saved us two hours of work this Sunday. Everyone knew exactly where to be."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;That message hit differently than any grade I have ever received.&lt;/p&gt;

&lt;p&gt;Your project is not real until a real person tells you it changed something for them. That is the bar. Not a deployment. Not a GitHub repo. A real person, real impact.&lt;/p&gt;




&lt;h2&gt;
  
  
  Numbers That Kept Me Going
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;500+ active users on the platform&lt;/li&gt;
&lt;li&gt;Handles live event data every week&lt;/li&gt;
&lt;li&gt;Reduced manual coordination effort significantly for the admin team&lt;/li&gt;
&lt;li&gt;Taught me more in 3 months than a semester of coursework&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  What I Would Do Differently Today
&lt;/h2&gt;

&lt;p&gt;If I rebuilt this from scratch, here is what I would change:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Add JWT-based authentication from day one (we had to retrofit this later — painful)&lt;/li&gt;
&lt;li&gt;Set up proper error logging with a tool like Sentry before going live&lt;/li&gt;
&lt;li&gt;Build a proper API contract document before writing any code&lt;/li&gt;
&lt;li&gt;Add automated tests for critical API routes before deployment&lt;/li&gt;
&lt;li&gt;Use environment variables correctly from the start (I hardcoded some things locally that caused embarrassing bugs)&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  The Real Lessons — The Ones No Tutorial Teaches You
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Debugging is the actual job.&lt;/strong&gt;&lt;br&gt;
Writing code is maybe 30% of development. The rest is figuring out why it does not work.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Real users find bugs your tests never will.&lt;/strong&gt;&lt;br&gt;
Your localhost environment is not reality. Deploy early, even if it is ugly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Data flow is everything.&lt;/strong&gt;&lt;br&gt;
If you understand how data moves from database to screen, you can debug anything. If you do not, you will always be guessing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Shipping beats perfecting.&lt;/strong&gt;&lt;br&gt;
I was going to add authentication before launching. I was going to redesign the UI. I was going to add real-time notifications. Instead, I launched with what I had — and real feedback made it 10x better than my solo perfectionism would have.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Backend developers, understand your frontend. Frontend developers, understand your backend.&lt;/strong&gt;&lt;br&gt;
I started as a frontend developer. This project forced me to understand backend, APIs, databases, and deployment. That cross-knowledge is what makes you valuable.&lt;/p&gt;




&lt;h2&gt;
  
  
  Who This Is For
&lt;/h2&gt;

&lt;p&gt;If you are a college student sitting on a half-finished project — finish it. Deploy it. Share it with five real people. Watch what breaks.&lt;/p&gt;

&lt;p&gt;You will learn more in one week of real-world usage than in three months of tutorials.&lt;/p&gt;

&lt;p&gt;The gap between "I can code" and "I can build things people use" is not talent. It is just willingness to ship, break things, and fix them.&lt;/p&gt;




&lt;h2&gt;
  
  
  What I Am Building Next
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Authentication system with role-based access&lt;/li&gt;
&lt;li&gt;Real-time notifications using WebSockets&lt;/li&gt;
&lt;li&gt;Mobile-first redesign&lt;/li&gt;
&lt;li&gt;Performance improvements for slower connections&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Final Thought
&lt;/h2&gt;

&lt;p&gt;Before this project, I used to say: &lt;em&gt;"I am still learning."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Now I say: &lt;em&gt;"I build things people use."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;That shift in identity — from student to builder — is worth more than any certificate.&lt;/p&gt;

&lt;p&gt;Go build something real.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;I am Aswini SM, a 2nd-year ECE student at Panimalar Engineering College, Chennai. I build full-stack web applications and am currently exploring enterprise technologies. You can find my work at &lt;a href="https://aswini-sm-portfolio.netlify.app" rel="noopener noreferrer"&gt;https://aswini-sm-portfolio.netlify.app&lt;/a&gt; and &lt;a href="https://github.com/Aswini1008" rel="noopener noreferrer"&gt;https://github.com/Aswini1008&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>fullstack</category>
      <category>react</category>
      <category>beginners</category>
    </item>
    <item>
      <title>[Boost]</title>
      <dc:creator>Aswini S M</dc:creator>
      <pubDate>Wed, 25 Jun 2025 16:42:05 +0000</pubDate>
      <link>https://dev.to/aswini-sm/-14ap</link>
      <guid>https://dev.to/aswini-sm/-14ap</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/hanzla-baig/ai-is-slowly-killing-us-and-were-smiling-through-it-345d" class="crayons-story__hidden-navigation-link"&gt;AI Is Slowly Killing Us — And We’re Smiling Through It&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/hanzla-baig" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F1943881%2F62aeb2ca-c228-4b5a-9327-2690358bb8d6.JPG" alt="hanzla-baig profile" class="crayons-avatar__image" width="800" height="974"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/hanzla-baig" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Hanzla Baig
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Hanzla Baig
                
              
              &lt;div id="story-author-preview-content-2611298" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/hanzla-baig" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F1943881%2F62aeb2ca-c228-4b5a-9327-2690358bb8d6.JPG" class="crayons-avatar__image" alt="" width="800" height="974"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Hanzla Baig&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/hanzla-baig/ai-is-slowly-killing-us-and-were-smiling-through-it-345d" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Jun 21 '25&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/hanzla-baig/ai-is-slowly-killing-us-and-were-smiling-through-it-345d" id="article-link-2611298"&gt;
          AI Is Slowly Killing Us — And We’re Smiling Through It
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag crayons-tag--filled  " href="/t/discuss"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;discuss&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/career"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;career&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/hanzla-baig/ai-is-slowly-killing-us-and-were-smiling-through-it-345d" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;13&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/hanzla-baig/ai-is-slowly-killing-us-and-were-smiling-through-it-345d#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            2 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>ai</category>
      <category>programming</category>
      <category>career</category>
      <category>discuss</category>
    </item>
  </channel>
</rss>
