<?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: Juan Carlos Padillo</title>
    <description>The latest articles on DEV Community by Juan Carlos Padillo (@onlypads).</description>
    <link>https://dev.to/onlypads</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%2F1270842%2Fd9b9db3e-7c47-464d-9e81-aab5e9c67275.png</url>
      <title>DEV Community: Juan Carlos Padillo</title>
      <link>https://dev.to/onlypads</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/onlypads"/>
    <language>en</language>
    <item>
      <title>Building a UI for a Team Task Manager (Laravel + Tailwind)</title>
      <dc:creator>Juan Carlos Padillo</dc:creator>
      <pubDate>Mon, 18 May 2026 04:22:55 +0000</pubDate>
      <link>https://dev.to/onlypads/building-a-ui-for-a-team-task-manager-laravel-tailwind-j3n</link>
      <guid>https://dev.to/onlypads/building-a-ui-for-a-team-task-manager-laravel-tailwind-j3n</guid>
      <description>&lt;p&gt;``I’ve been working on a project, a simple team task management system built with Laravel. After finishing the backend features like teams, invitations, and authentication, I finally shifted my focus to something I was avoiding for quite a while now: the UI. I also added a name for this project instead of just calling it a team task manager. The website name is Worklio. &lt;/p&gt;

&lt;p&gt;Here's the home page of the website:&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%2F99lgndyqizexblgtntau.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%2F99lgndyqizexblgtntau.png" alt="Welcome page" width="800" height="452"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I’m keeping the UI as simple as possible because my main focus is learning the backend side. I also use ChatGPT to help generate some of the frontend code, and the results have been surprisingly good. Right now, I just need to break parts of the UI into reusable components to make the codebase easier to read and maintain, while also centralizing repeated logic and code.&lt;/p&gt;

&lt;p&gt;Here's the rest of the pages:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Team Page&lt;/strong&gt;&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%2Fk5x62lpmlv6uovm38asd.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%2Fk5x62lpmlv6uovm38asd.png" alt="Team page" width="800" height="452"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Show Single Team Page with Projects&lt;/strong&gt;&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%2F21v3k7y6b91rff5xekzn.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%2F21v3k7y6b91rff5xekzn.png" alt="Project Page" width="800" height="452"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What's next
&lt;/h2&gt;

&lt;p&gt;I currently have both frontend and backend for teams, invitations, projects, and now I'll be working on the task part.&lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;Note: I’m using ChatGPT as part of my learning process—to sanity-check ideas, understand Laravel patterns, and think through tradeoffs. I still write the code myself and use the project to test whether I actually understand what I’m building.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>webdev</category>
      <category>learning</category>
      <category>beginners</category>
      <category>laravel</category>
    </item>
    <item>
      <title>Why I’m Still Learning to Code Even With AI</title>
      <dc:creator>Juan Carlos Padillo</dc:creator>
      <pubDate>Mon, 11 May 2026 01:42:07 +0000</pubDate>
      <link>https://dev.to/onlypads/why-im-still-learning-to-code-even-with-ai-39ae</link>
      <guid>https://dev.to/onlypads/why-im-still-learning-to-code-even-with-ai-39ae</guid>
      <description>&lt;p&gt;A while ago, I caught myself wondering:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Am I too late?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Not because I started coding late.&lt;/p&gt;

&lt;p&gt;But because every week there seems to be a new AI demo building apps, writing features, fixing bugs, and explaining code faster than I can even think through the problem.&lt;/p&gt;

&lt;p&gt;When you’re still learning, that can get in your head.&lt;/p&gt;

&lt;p&gt;You start asking yourself:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If AI can already do this, what exactly am I trying to learn?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I’ve been there.&lt;/p&gt;

&lt;p&gt;I’m still early in my journey. I’m building projects, learning Laravel, breaking things, fixing them, and slowly getting better at understanding how software actually comes together.&lt;/p&gt;

&lt;p&gt;Lately I’ve been working on a team task management app.&lt;/p&gt;

&lt;p&gt;At first it felt straightforward.&lt;/p&gt;

&lt;p&gt;A team has members. Owner can invite other members. Tasks can be created and assigned.&lt;/p&gt;

&lt;p&gt;Simple.&lt;/p&gt;

&lt;p&gt;Until it isn’t.&lt;/p&gt;

&lt;p&gt;While working on the invitation feature, I started moving logic out of controllers and into service classes. Then I added form requests. Then policies.&lt;/p&gt;

&lt;p&gt;And suddenly I realized something that felt bigger than the feature itself.&lt;/p&gt;

&lt;p&gt;**The hard part wasn’t writing code.&lt;/p&gt;

&lt;p&gt;The hard part was deciding what code should exist.**&lt;/p&gt;

&lt;p&gt;That changed how I look at AI.&lt;/p&gt;

&lt;p&gt;AI can absolutely generate code.&lt;/p&gt;

&lt;p&gt;Sometimes it gives surprisingly solid code.&lt;/p&gt;

&lt;p&gt;But while building that feature, AI wasn’t the one deciding things like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Should this logic live in the controller or a service?&lt;/li&gt;
&lt;li&gt;What happens if someone sends the same invitation twice?&lt;/li&gt;
&lt;li&gt;Who should be allowed to invite people?&lt;/li&gt;
&lt;li&gt;What happens when someone leaves a team?&lt;/li&gt;
&lt;li&gt;How do I structure this so future me won’t hate present me?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Those decisions were still mine.&lt;/p&gt;

&lt;p&gt;And honestly, that’s the part I actually want to learn.&lt;/p&gt;

&lt;p&gt;When I first started coding, I treated code like a puzzle.&lt;/p&gt;

&lt;p&gt;I kept adding pieces until the feature worked.&lt;/p&gt;

&lt;p&gt;Once it worked, I usually didn’t want to touch it again, because I knew changing one thing might break three others.&lt;/p&gt;

&lt;p&gt;Lately, I’ve been trying to move away from that.&lt;/p&gt;

&lt;p&gt;I’ve started paying more attention to system design—not in the “big tech interview” way, but in the practical way.&lt;/p&gt;

&lt;p&gt;I want to be more intentional.&lt;/p&gt;

&lt;p&gt;Not just:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;“How do I make this work?”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;But also:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;“Why should it work this way?”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That shift has made coding feel different.&lt;/p&gt;

&lt;p&gt;And honestly, more interesting.&lt;/p&gt;

&lt;p&gt;Because the more I learn, the more I realize coding isn’t mainly about syntax.&lt;/p&gt;

&lt;p&gt;It’s about tradeoffs.&lt;/p&gt;

&lt;p&gt;It’s about structure.&lt;/p&gt;

&lt;p&gt;It’s about deciding what belongs where.&lt;/p&gt;

&lt;p&gt;It’s about understanding the problem well enough to build something that won’t immediately collapse the moment you add a new feature.&lt;/p&gt;

&lt;p&gt;That’s why AI doesn’t discourage me anymore.&lt;/p&gt;

&lt;p&gt;If anything, it clarified what actually matters.&lt;/p&gt;

&lt;p&gt;AI can help me write code faster.&lt;/p&gt;

&lt;p&gt;It can explain concepts.&lt;/p&gt;

&lt;p&gt;It can help me compare approaches.&lt;/p&gt;

&lt;p&gt;It can even point out mistakes I didn’t notice.&lt;/p&gt;

&lt;p&gt;But it still doesn’t replace judgment.&lt;/p&gt;

&lt;p&gt;It doesn’t automatically know the tradeoffs inside my project.&lt;/p&gt;

&lt;p&gt;It doesn’t know the shortcuts I took last week.&lt;/p&gt;

&lt;p&gt;It doesn’t know what future me will struggle to maintain.&lt;/p&gt;

&lt;p&gt;That part still comes from learning.&lt;/p&gt;

&lt;p&gt;So if you’re just starting—or thinking about starting—and AI makes you wonder if coding is still worth learning, here’s my honest take:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;This might actually be one of the best times to start.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Because now you can get unstuck faster.&lt;/p&gt;

&lt;p&gt;You can ask better questions.&lt;/p&gt;

&lt;p&gt;You can explore more ideas in less time.&lt;/p&gt;

&lt;p&gt;But the real learning still happens when you decide:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;what to build&lt;/li&gt;
&lt;li&gt;how to structure it&lt;/li&gt;
&lt;li&gt;which tradeoffs you accept&lt;/li&gt;
&lt;li&gt;what code stays&lt;/li&gt;
&lt;li&gt;and what code needs to be deleted&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That part still belongs to you.&lt;/p&gt;

&lt;p&gt;I’m still learning too.&lt;/p&gt;

&lt;p&gt;Still writing code I later refactor.&lt;/p&gt;

&lt;p&gt;Still realizing how much I don’t know.&lt;/p&gt;

&lt;p&gt;Still trying to go from “it works” to “this makes sense.”&lt;/p&gt;

&lt;p&gt;And right now, that feels like progress.&lt;/p&gt;

&lt;p&gt;AI didn’t make me want to stop learning.&lt;/p&gt;

&lt;p&gt;It made me realize something more important:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The value isn’t just in writing code.&lt;br&gt;
The value is in understanding why that code should exist at all.&lt;/strong&gt;&lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;Note: I use AI while learning, not to skip the work, but to understand faster, explore alternatives, and challenge my thinking.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>learning</category>
      <category>php</category>
    </item>
    <item>
      <title>Building Team Invitations in Laravel</title>
      <dc:creator>Juan Carlos Padillo</dc:creator>
      <pubDate>Sat, 02 May 2026 14:29:12 +0000</pubDate>
      <link>https://dev.to/onlypads/building-team-invitations-in-laravel-306g</link>
      <guid>https://dev.to/onlypads/building-team-invitations-in-laravel-306g</guid>
      <description>&lt;p&gt;Today I finished the invitation flow for my team task management project.&lt;/p&gt;

&lt;p&gt;At first, the feature looked simple: invite a user by email and let them join a team. But once I started building it, I realized there were a few real-world cases to handle.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the invitation flow does
&lt;/h2&gt;

&lt;p&gt;A team owner can invite someone using their email address.&lt;/p&gt;

&lt;p&gt;When an invitation is sent:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the system checks if the user is already a team member&lt;/li&gt;
&lt;li&gt;it checks if there is already a pending invitation for that same email in that team&lt;/li&gt;
&lt;li&gt;if everything is valid, an invitation record is created with a token&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When the invited user accepts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the system verifies the logged-in user matches the invited email&lt;/li&gt;
&lt;li&gt;the user gets attached to the team&lt;/li&gt;
&lt;li&gt;the invitation gets deleted&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;The biggest lesson was learning where code should live.&lt;/p&gt;

&lt;p&gt;My controller worked, but it started getting crowded fast. It was handling:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;validation&lt;/li&gt;
&lt;li&gt;duplicate checks&lt;/li&gt;
&lt;li&gt;member checks&lt;/li&gt;
&lt;li&gt;creating invitations&lt;/li&gt;
&lt;li&gt;attaching users to teams&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That pushed me to move the business logic into service classes.&lt;/p&gt;

&lt;p&gt;Now the controller mostly handles the request and delegates the actual work.&lt;/p&gt;

&lt;p&gt;That small refactor made the code much easier to read.&lt;/p&gt;

&lt;p&gt;Check out the difference in the controller after using service classes.&lt;/p&gt;

&lt;p&gt;Here’s the code for storing an invitation that I originally wrote without using a service class:&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%2Flp0r81majf6iluxbps5f.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%2Flp0r81majf6iluxbps5f.png" alt="Controller for storing invitation" width="800" height="274"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There’s a lot going on in this method, and I even duplicated &lt;code&gt;Invitation::create()&lt;/code&gt;—that’s on me. 😅&lt;/p&gt;

&lt;p&gt;Here’s the same method refactored using a service class:&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%2Fk47lsi583fcx6hvr4fec.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%2Fk47lsi583fcx6hvr4fec.png" alt="Store method with service class" width="800" height="138"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now it's much cleaner and easier to read. I also created Form Request class, so input validation is handled in a separate class.&lt;/p&gt;

&lt;h2&gt;
  
  
  One small bug that taught me something
&lt;/h2&gt;

&lt;p&gt;I got stuck for a while checking duplicate invitations.&lt;/p&gt;

&lt;p&gt;At first I used &lt;code&gt;get()&lt;/code&gt;, which returns a collection. Even when empty, it still caused confusing behavior.&lt;/p&gt;

&lt;p&gt;Switching to &lt;code&gt;exists()&lt;/code&gt; made the intent much clearer.&lt;/p&gt;

&lt;p&gt;That was a small thing, but it helped me understand Eloquent a little better.&lt;/p&gt;

&lt;h2&gt;
  
  
  What’s next
&lt;/h2&gt;

&lt;p&gt;The invitation system is working now, and the project is starting to feel like a real application instead of just practice.&lt;/p&gt;

&lt;p&gt;Next, I’m focusing on the frontend, starting with a cleaner dashboard and better team/project pages.&lt;/p&gt;

&lt;p&gt;Github repo: &lt;a href="https://github.com/pads-only/team-task-manager" rel="noopener noreferrer"&gt;Team Task Manager&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; I’m using ChatGPT as part of my learning process—to sanity-check ideas, understand Laravel patterns, and think through tradeoffs. I still write the code myself and use the project to test whether I actually understand what I’m building.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>webdev</category>
      <category>laravel</category>
      <category>programming</category>
      <category>learning</category>
    </item>
    <item>
      <title>Building Teams in Laravel (Ownership &amp; Membership)</title>
      <dc:creator>Juan Carlos Padillo</dc:creator>
      <pubDate>Thu, 30 Apr 2026 05:40:25 +0000</pubDate>
      <link>https://dev.to/onlypads/building-teams-in-laravel-ownership-membership-5bg1</link>
      <guid>https://dev.to/onlypads/building-teams-in-laravel-ownership-membership-5bg1</guid>
      <description>&lt;p&gt;After setting up the basic structure of my project, I implemented the team creation flow.&lt;/p&gt;

&lt;p&gt;The idea is simple: a registered user can create a team and immediately become both the owner and a member of that team.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key decision
&lt;/h2&gt;

&lt;p&gt;I separated:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ownership → stored in &lt;code&gt;teams.owner&lt;/code&gt;_id&lt;/li&gt;
&lt;li&gt;membership → stored in &lt;code&gt;team_user&lt;/code&gt; pivot table&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This allows flexibility where:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a user can belong to multiple teams&lt;/li&gt;
&lt;li&gt;roles can be managed per team&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How it works
&lt;/h2&gt;

&lt;p&gt;When registered user create a team:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A new team is stored with &lt;code&gt;owner_id&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;The user is attached to &lt;code&gt;team_user&lt;/code&gt; with role = &lt;code&gt;owner&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This ensures the creator is automatically part of the team.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this matters
&lt;/h2&gt;

&lt;p&gt;Instead of treating the owner separately, I treat them as a member with elevated permissions&lt;/p&gt;

&lt;p&gt;This keeps relationships consistent and simplifies access control later.&lt;/p&gt;

&lt;p&gt;Next, I’ll implement the invitation system so team owners can invite other users and build actual collaboration.&lt;/p&gt;

&lt;p&gt;Github repo: &lt;a href="https://github.com/pads-only/team-task-manager" rel="noopener noreferrer"&gt;https://github.com/pads-only/team-task-manager&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>learning</category>
      <category>backend</category>
    </item>
    <item>
      <title>Building a Laravel Team Task Manager from Scratch (Planning &amp; System Design)</title>
      <dc:creator>Juan Carlos Padillo</dc:creator>
      <pubDate>Tue, 28 Apr 2026 15:41:21 +0000</pubDate>
      <link>https://dev.to/onlypads/building-a-laravel-team-task-manager-from-scratch-planning-system-design-45c6</link>
      <guid>https://dev.to/onlypads/building-a-laravel-team-task-manager-from-scratch-planning-system-design-45c6</guid>
      <description>&lt;p&gt;Hello, I’m starting a new project to improve my backend development skills using Laravel.&lt;/p&gt;

&lt;p&gt;The goal is to build a Team Task Management System that simulates real-world collaboration, similar to tools like Trello or Asana, but simplified and focused on learning backend architecture.&lt;/p&gt;

&lt;p&gt;This post is the first in a series where I’ll document the entire development process, from planning to deployment.&lt;/p&gt;

&lt;h2&gt;
  
  
  Project Goal
&lt;/h2&gt;

&lt;p&gt;The system allows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Users and Teams&lt;/li&gt;
&lt;li&gt;Projects inside teams&lt;/li&gt;
&lt;li&gt;Tasks inside projects&lt;/li&gt;
&lt;li&gt;Task assignments, comments, and attachments&lt;/li&gt;
&lt;li&gt;Notifications for updates&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why am I Building This
&lt;/h2&gt;

&lt;p&gt;I want to go beyond the CRUD basic apps and focus on real-world backend concepts like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Eloquent relationships&lt;/li&gt;
&lt;li&gt;Policies and authorization&lt;/li&gt;
&lt;li&gt;REST API design&lt;/li&gt;
&lt;li&gt;Service classes&lt;/li&gt;
&lt;li&gt;Queues and notifications&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  High-level idea
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;A user joins a team via invitation&lt;/li&gt;
&lt;li&gt;Teams manage multiple projects&lt;/li&gt;
&lt;li&gt;Projects contain tasks&lt;/li&gt;
&lt;li&gt;Tasks can be assigned, discussed, and tracked&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Database planning
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;users&lt;/li&gt;
&lt;li&gt;teams&lt;/li&gt;
&lt;li&gt;team_user&lt;/li&gt;
&lt;li&gt;invitations&lt;/li&gt;
&lt;li&gt;projects&lt;/li&gt;
&lt;li&gt;tasks&lt;/li&gt;
&lt;li&gt;task_user&lt;/li&gt;
&lt;li&gt;comments&lt;/li&gt;
&lt;li&gt;attachments&lt;/li&gt;
&lt;li&gt;notifications&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Next step
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Laravel Breeze setup&lt;/li&gt;
&lt;li&gt;Database migrations&lt;/li&gt;
&lt;li&gt;Team and user relationships&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That's it for the planning phase. See you in my next blog post!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>learning</category>
      <category>backend</category>
      <category>laravel</category>
    </item>
  </channel>
</rss>
