<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Code With Roshan]]></title><description><![CDATA[Code With Roshan]]></description><link>https://codewithroshan.hashnode.dev</link><generator>RSS for Node</generator><lastBuildDate>Tue, 08 Sep 2026 17:18:40 GMT</lastBuildDate><atom:link href="https://codewithroshan.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[From PDFs to Widgets: What I Built During My Internship at Corporate Interactive]]></title><description><![CDATA[👋 A Developer in the Making
As a Master of Information and Communication Technology student at Western Sydney University, I’ve always been passionate about building practical, user-centric software. But like many aspiring developers, I was hungry fo...]]></description><link>https://codewithroshan.hashnode.dev/from-pdfs-to-widgets-what-i-built-during-my-internship-at-corporate-interactive</link><guid isPermaLink="true">https://codewithroshan.hashnode.dev/from-pdfs-to-widgets-what-i-built-during-my-internship-at-corporate-interactive</guid><category><![CDATA[software development]]></category><category><![CDATA[next js]]></category><category><![CDATA[APIs]]></category><category><![CDATA[PDF render]]></category><category><![CDATA[prisma]]></category><dc:creator><![CDATA[Roshan Aale]]></dc:creator><pubDate>Fri, 11 Apr 2025 00:51:57 GMT</pubDate><content:encoded><![CDATA[<h3 id="heading-a-developer-in-the-making">👋 A Developer in the Making</h3>
<p>As a Master of Information and Communication Technology student at Western Sydney University, I’ve always been passionate about building practical, user-centric software. But like many aspiring developers, I was hungry for real-world experience — not just writing code, but understanding how software gets built, maintained, and used in the industry.</p>
<p>In May 2024, I got that chance when I joined <strong>Corporate Interactive</strong> as a Full Stack Developer Intern. Over the next three months, I would get hands-on experience with a variety of projects, learn to work with an experienced team, and grow more than I expected.</p>
<p>Here’s a look into the journey — from PDFs to widgets and everything in between.</p>
<h3 id="heading-getting-started-at-corporate-interactive">💻 Getting Started at Corporate Interactive</h3>
<p>Corporate Interactive is a Sydney-based software company focused on building proposal and sales quoting platforms. From day one, I was introduced to a powerful modern tech stack that included:</p>
<ul>
<li><p><strong>T3 Stack</strong> (Next.js, tRPC, Prisma)</p>
</li>
<li><p><strong>Tailwind CSS</strong></p>
</li>
<li><p><strong>TypeScript</strong></p>
</li>
<li><p><strong>MySQL</strong></p>
</li>
<li><p><strong>AWS S3 for storage</strong></p>
</li>
</ul>
<p>I quickly dove into working with their main product, a powerful proposal-building tool that allows users to create, customize, and manage client-facing proposals using dynamic blocks and widgets.</p>
<h3 id="heading-what-i-built">🧩 What I Built</h3>
<p>Over the course of my internship, I worked on a series of feature-rich widgets and tools that made the platform more interactive, efficient, and visually intuitive.</p>
<h4 id="heading-pdf-page-upload-reader">📄 PDF Page Upload + Reader</h4>
<p>My first big task was developing a feature that allowed users to <strong>upload and preview PDF files</strong> as part of their proposals. I learned how to:</p>
<ul>
<li><p>Handle file uploads via drag-and-drop UI</p>
</li>
<li><p>Convert uploaded PDFs into preview able images using a third-party service</p>
</li>
<li><p>Ensure pages were rendered in the correct order</p>
</li>
<li><p>Manage performance issues with larger documents</p>
</li>
</ul>
<p>This was my first exposure to dealing with file streams and optimizing rendering performance — a challenging but super rewarding experience.</p>
<h4 id="heading-scheduler-widget">📅 Scheduler Widget</h4>
<p>Next, I helped build a <strong>scheduler widget</strong> that allowed users to set dates, time slots, and event information as part of their proposals.</p>
<p>Some technical highlights:</p>
<ul>
<li><p>Implemented date-pickers and repeat-event logic</p>
</li>
<li><p>Created responsive layouts using Tailwind</p>
</li>
<li><p>Synced form states using React Hook Form and tRPC</p>
</li>
</ul>
<p>I got to experience how thoughtful UX decisions can really improve the end-user’s interaction with even a small feature.</p>
<h4 id="heading-qr-code-amp-barcode-widgets">🔍 QR Code &amp; Barcode Widgets</h4>
<p>Later on, I contributed to the <strong>QR code</strong> and <strong>barcode block widgets</strong>, which enabled users to embed dynamic scannable codes into proposals.</p>
<p>Here’s what I handled:</p>
<ul>
<li><p>Generated QR codes and barcodes based on user-defined input</p>
</li>
<li><p>Ensured the blocks were printable and responsive</p>
</li>
<li><p>Connected them with back-end APIs for data syncing</p>
</li>
</ul>
<p>This was a fun feature to build because it combined both visual output and practical use cases (like event check-ins or asset tracking).</p>
<h3 id="heading-what-i-learned">📚 What I Learned</h3>
<p>This internship wasn’t just about building features — it was about building the right mindset:</p>
<ul>
<li><p><strong>Writing clean, maintainable code</strong>: I adopted consistent formatting, better naming conventions, and followed component-driven development practices.</p>
</li>
<li><p><strong>Communicating in a team</strong>: Daily standups, regular code reviews, and constructive feedback helped me grow faster than I could’ve imagined.</p>
</li>
<li><p><strong>Working across the full stack</strong>: From API creation with tRPC and Prisma to styling responsive components with Tailwind — I finally felt like a real full-stack developer.</p>
</li>
</ul>
<h3 id="heading-challenges-and-wins">🚧 Challenges and Wins</h3>
<p>Not everything came easy. One moment I remember clearly was debugging a PDF render issue that only happened on Safari browsers. It took hours of testing, checking forums, and experimenting with fallbacks — but in the end, I solved it with a combination of rendering tweaks and canvas adjustments. That “aha” moment was a huge confidence boost.</p>
<p>Another win? Seeing my scheduler widget being used in live proposals by clients — knowing something I built actually made someone’s job easier was incredibly satisfying.</p>
<h3 id="heading-whats-next">🚀 What’s Next?</h3>
<p>This internship gave me clarity: I love building UI/UX-focused features that solve real-world problems.</p>
<p>I’m currently exploring frontend developer roles in Sydney, especially ones that use React or Angular. I’m also working on side projects involving AI and automation — tools that summarize content, manage emails, and help people save time.</p>
<h3 id="heading-final-thoughts">🙏 Final Thoughts</h3>
<p>I’m incredibly grateful to the team at Corporate Interactive — especially <strong>Corey Baines</strong> and <strong>Darren Strong</strong> — for trusting me, guiding me, and giving me the freedom to experiment and grow.</p>
<p>If you’re a student or junior dev reading this: <em>take that internship</em>, <em>ask questions</em>, and <em>say yes to the challenge</em>. You’ll be amazed at how far you can go in just a few months.</p>
<p>Thanks for reading!<br />Feel free to check out my portfolio at <a target="_blank" href="https://roshanaale.com/">roshanaale.com</a> or connect with me on <a target="_blank" href="https://www.linkedin.com/in/roshanaale9818/">Linkedin</a></p>
]]></content:encoded></item></channel></rss>