<?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: Catherine Chen</title>
    <description>The latest articles on DEV Community by Catherine Chen (@cathzchen).</description>
    <link>https://dev.to/cathzchen</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%2F141688%2F094995d9-8398-441d-927d-32fdee6e3f61.jpg</url>
      <title>DEV Community: Catherine Chen</title>
      <link>https://dev.to/cathzchen</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/cathzchen"/>
    <language>en</language>
    <item>
      <title>How to start learning web development for free</title>
      <dc:creator>Catherine Chen</dc:creator>
      <pubDate>Tue, 30 Apr 2024 18:53:03 +0000</pubDate>
      <link>https://dev.to/cathzchen/how-to-start-learning-web-development-for-free-1eko</link>
      <guid>https://dev.to/cathzchen/how-to-start-learning-web-development-for-free-1eko</guid>
      <description>&lt;p&gt;There are so many free resources available online to help you start (and continue) your journey in web development.  In this post, I've gathered a list of my favorite, and most high-quality, materials.  If you have additional suggestions on resources to include in this post, feel free to drop a comment below!&lt;/p&gt;

&lt;h2&gt;
  
  
  Dash.GeneralAssemb.ly: A Taste of Coding
&lt;/h2&gt;

&lt;p&gt;If you aren't sure whether or not web development is for you, or haven't done any coding before, &lt;a href="https://dash.generalassemb.ly"&gt;dash.generalassemb.ly&lt;/a&gt; is one of the best places to start.&lt;/p&gt;

&lt;p&gt;It's a free and fun online course that teaches you the basics of HTML, CSS, and JavaScript while building projects.  A lot of other programs and bootcamps divide HTML / CSS / JavaScript into three separate in-depth courses, but Dash gives you all of it together at once.  The benefit is that you learn how all these components of a website work together from the very beginning, instead of only being able to see one piece at a time.&lt;/p&gt;

&lt;p&gt;Dash's projects 1-3 give you a great starting point in the world of web development.  After those you can continue to finish the rest of the projects, or move on to another resource after that.&lt;/p&gt;

&lt;h2&gt;
  
  
  Becoming a Web Developer
&lt;/h2&gt;

&lt;p&gt;There are a myriad of introductory web development courses and bootcamps online, where you can learn the basics of development.  (Doing a quick search on Udemy reveals so many options; it's hard to sift through all of them.)&lt;/p&gt;

&lt;p&gt;Below are some high-quality, free courses I recommend and have used myself.  They're comprehensive, provide practice and knowledge, and prepare you for a fulfilling career.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Odin Project: Foundations Course
&lt;/h3&gt;

&lt;p&gt;The Odin Project's &lt;a href="https://www.theodinproject.com/paths/foundations/courses/foundations"&gt;Foundations Course&lt;/a&gt; is a solid introduction into the bread and butter of web development.&lt;/p&gt;

&lt;p&gt;It's less interactive than most of the other courses I'll mention here, but the content is a solid foundation.  The course equips you with the fundamental knowledge and practical skills you need to build websites.&lt;/p&gt;

&lt;p&gt;If you enjoy the Foundations Course, look into Odin Project's &lt;a href="https://www.theodinproject.com/paths/full-stack-javascript"&gt;Full Stack JavaScript&lt;/a&gt; or &lt;a href="https://www.theodinproject.com/paths/full-stack-ruby-on-rails"&gt;Full Stack Ruby on Rails&lt;/a&gt; learning paths.&lt;/p&gt;

&lt;h3&gt;
  
  
  Freecodecamp
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://freecodecamp.org"&gt;Freecodecamp&lt;/a&gt; provides 10+ free web development courses in JavaScript, Python, front-end, and back-end that are more than enough to kickstart any developer's career.  You learn through interactive coding exercises and articles, and can participate in forum discussions when you get stuck or need help.&lt;/p&gt;

&lt;p&gt;If you aren't sure which course to begin with, work on their &lt;a href="https://www.freecodecamp.org/learn/2022/responsive-web-design/"&gt;Responsive Web Design Certification&lt;/a&gt; first, followed by &lt;a href="https://www.freecodecamp.org/learn/javascript-algorithms-and-data-structures-v8/"&gt;JavaScript Algorithms and Data Structures&lt;/a&gt;.  After that, you can split off to do either &lt;a href="https://www.freecodecamp.org/learn/front-end-development-libraries/"&gt;Front End Development Libraries&lt;/a&gt; or &lt;a href="https://www.freecodecamp.org/learn/back-end-development-and-apis/"&gt;Back End Development and APIs&lt;/a&gt;, or both if you're interested in pursuing a full-stack career.&lt;/p&gt;

&lt;h3&gt;
  
  
  App Academy Open
&lt;/h3&gt;

&lt;p&gt;If you enjoy watching videos, or prefer videos as a method of learning, &lt;a href="https://www.appacademy.io/course/app-academy-open"&gt;App Academy Open&lt;/a&gt; is perfect for you.  It's a free, self-paced version of App Academy's complete full-stack development bootcamp, so it's chock-full of rigorous material.&lt;/p&gt;

&lt;p&gt;The learning path gives you access to over 500 hours of videos and resources, covering everything from fundamental HTML and CSS to algorithms and data structures in JavaScript.&lt;/p&gt;

&lt;h3&gt;
  
  
  Codecademy
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://codecademy.com"&gt;Codecademy&lt;/a&gt; is a freemium platform with high-quality content.  Their courses range from web development to data science, and are interactive and text-based. &lt;/p&gt;

&lt;p&gt;There is a lot of free material to work through, though there are many perks only accessible through a subscription.  However, Codecademy offers a lot more material than Freecodecamp, which is why I've still decided to include it on this list.&lt;/p&gt;

&lt;h2&gt;
  
  
  Choosing a Career as a Developer
&lt;/h2&gt;

&lt;p&gt;If you like frontend development, work on your advanced CSS and JavaScript skills.  Pick up a framework such as React, Angular, or VueJS, and focus on learning additional skills like web accessibility and SEO.&lt;/p&gt;

&lt;p&gt;If you're interested in backend development, you'll want to focus on one of these specializations: Node.js, Java, PHP, Python, C#, or Ruby.  Do some research on your own before making a choice.  Learn about databases, SQL, and/or MongoDB, as well as popular frameworks in your language: Spring for Java, Laravel for PHP, django for Python, ASP.NET for C#, or Ruby on Rails for Ruby.  Note that there are a lot more frameworks available for Node.js and PHP developers (though Laravel is the most popular for PHP).&lt;/p&gt;

&lt;p&gt;If you enjoy doing both (like me!), learn both for full-stack development.  😉&lt;/p&gt;

&lt;h3&gt;
  
  
  Roadmap.sh
&lt;/h3&gt;

&lt;p&gt;Learning the basics of web development opens doors to many other careers in the tech field.  &lt;a href="https://roadmap.sh"&gt;Roadmap.sh&lt;/a&gt; provides guides, learning paths, and roadmaps to point developers in a direction of their choosing.&lt;/p&gt;

&lt;p&gt;It's the perfect place to start if you want to dive deeper into a field.  Once you have the basics under your belt, you have the right foundation to transition into learning mobile app development, game development, AI &amp;amp; machine learning, and more.  The world of technology is at your fingertips.&lt;/p&gt;

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

&lt;p&gt;Are there any other free educational resources you enjoy using as a developer?  Let me know in the comments below!&lt;/p&gt;

&lt;p&gt;Happy coding,&lt;/p&gt;

&lt;p&gt;Catherine&lt;/p&gt;

</description>
      <category>learning</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Best Free Website Hosting Options for Developers</title>
      <dc:creator>Catherine Chen</dc:creator>
      <pubDate>Mon, 22 Apr 2024 12:23:05 +0000</pubDate>
      <link>https://dev.to/cathzchen/best-free-website-hosting-options-for-developers-57ic</link>
      <guid>https://dev.to/cathzchen/best-free-website-hosting-options-for-developers-57ic</guid>
      <description>&lt;p&gt;If you're exploring the world of web development, chances are you've created your own sites that you want to put out there for the world to see.&lt;/p&gt;

&lt;p&gt;Hosting your own website for free has gotten easier than ever before.  As a developer, you have several options depending on the customization needs and other requirements of your site.  Static sites are the simplest to host for free, but a few hosting providers work with dynamic sites as well.&lt;/p&gt;

&lt;p&gt;Most hosting services provide free SSL certificates to secure your site and allow you to connect a custom domain.  They'll usually provide a free subdomain for you to use, but you'll still have to pay for a domain name if you don't want your site on a subdomain.&lt;/p&gt;

&lt;h2&gt;
  
  
  Static Website Hosting Services
&lt;/h2&gt;

&lt;p&gt;If you're looking to host a static site, there are many options available to you. Static sites are websites that are built using only HTML, CSS, and JavaScript, delivering the same fixed content to all visitors.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="http://surge.sh"&gt;Surge.sh&lt;/a&gt; — a simple cloud platform for deploying static websites&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://pages.github.com"&gt;Github Pages&lt;/a&gt; — host static websites directly from your GitHub repository for free&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://docs.gitlab.com/ee/user/project/pages/"&gt;GitLab Pages&lt;/a&gt; —  host static websites for free directly from your GitLab repository&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Server-Side (SSR) Hosting for JavaScript
&lt;/h2&gt;

&lt;p&gt;Dynamic websites adjust their content based on user interaction, time, or other factors.  Web applications, e-commerce stores, or news websites with frequently updated content tend to be dynamic sites.  If you're serving dynamic content on your website, the following places offer free cloud hosting for server-side rendering:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://vercel.com/catherine-chens-projects"&gt;Vercel&lt;/a&gt; — a cloud platform for developers to build, deploy, and scale modern web applications with a focus on performance and ease of use&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://pages.cloudflare.com/"&gt;Cloudflare Pages&lt;/a&gt; — a developer-friendly platform to build, deploy, and collaborate on lightning-fast websites&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://firebase.google.com/products/hosting/"&gt;Firebase Hosting&lt;/a&gt; — a secure and scalable platform for deploying web content, including static sites, dynamic content served through Cloud Functions, and microservices&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.netlify.com"&gt;Netlify&lt;/a&gt; — seamless deployment, serverless functions, and global hosting for static sites and web applications&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://glitch.com"&gt;Glitch.me&lt;/a&gt; — a free, browser-based development environment for building and collaborating on web projects, often used for quick prototypes or learning to code&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Other Free Website Hosting Options
&lt;/h2&gt;

&lt;p&gt;The following options provide even more flexibility over the tools you want to use to host code, and aren't limited to just JavaScript.  Not all of their free plans are suitable for production hosting, but they're a great place to start experimenting.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://render.com"&gt;Render.com&lt;/a&gt; — a pay-as-you-go cloud platform for deploying web applications of all kinds &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://replit.com"&gt;Repl.it&lt;/a&gt; — a cloud-based platform for coding in various languages, allowing for experimentation and collaboration&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Free PHP &amp;amp; MySQL Hosting
&lt;/h2&gt;

&lt;p&gt;One of the first websites I ever hosted used &lt;a href="https://www.infinityfree.com"&gt;InfinityFree&lt;/a&gt;. It's a free hosting service for traditional PHP &amp;amp; MySQL sites, whether you're using a framework like Laravel or a website builder like Wordpress.  It comes with a control panel and other hosting features.&lt;/p&gt;

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

&lt;p&gt;With so many great options available, the perfect free hosting platform depends on your specific needs and skillset.  Are there any free or cheap hosting plans you use that I haven't included here?  Let me know in the comments below!&lt;/p&gt;

</description>
      <category>hosting</category>
      <category>ssr</category>
      <category>freehosting</category>
    </item>
    <item>
      <title>Coding Training: How to Improve Your Coding Skills</title>
      <dc:creator>Catherine Chen</dc:creator>
      <pubDate>Sun, 14 Apr 2024 11:37:22 +0000</pubDate>
      <link>https://dev.to/cathzchen/coding-training-how-to-improve-your-coding-skills-2gpl</link>
      <guid>https://dev.to/cathzchen/coding-training-how-to-improve-your-coding-skills-2gpl</guid>
      <description>&lt;p&gt;There's a lot that goes into becoming a better programmer, so let's just tackle one way that helps improve your programming skills today: practice, practice, &lt;em&gt;practice&lt;/em&gt; solving problems.  😤&lt;/p&gt;

&lt;h2&gt;
  
  
  Practice Makes Perfect
&lt;/h2&gt;

&lt;p&gt;Mastering any skill takes time, and coding is no different.  To help you get started, I've listed some of my favorite websites below that offer fun and engaging ways to practice your coding skills.&lt;/p&gt;

&lt;p&gt;Remember that the more you code, the better you'll become!  🚀🚀&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Note: One way that can help is to try setting aside specific times in your day to write code.  Morning and evening are my personal favorites, but it's different for everyone.  Whatever you choose, though, consistency is key!&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  CodinGame
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.codingame.com"&gt;CodinGame&lt;/a&gt; is probably my top recommended site for someone looking for a place to improve their programming skills.  This platform delivers coding practice through a variety of games, challenges, and contests.  It's a fun way to learn and easy to get started with, but also contains more demanding challenges for advanced coders further along in their careers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Codewars
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.codewars.com"&gt;Codewars&lt;/a&gt; is another online site geared towards programming practice.  This platform centers around the concept of "kata," which are small, focused coding exercises. These kata target specific techniques and problem-solving approaches in various programming languages.&lt;/p&gt;

&lt;p&gt;Codewars doesn't have games like CodinGame, but they do incorporate gamification techniques to make learning more engaging. As you solve different exercises, you can progress through ranks and earn points (honor) for completing katas and contributing to the community. You can even create your own challenges!&lt;/p&gt;

&lt;h2&gt;
  
  
  Leetcode
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://leetcode.com"&gt;Leetcode&lt;/a&gt;, infamous among computer science students, is a popular online platform designed to help programmers prepare for technical coding interviews.  (It's also, unofficially, known for causing many tears during junior and senior CS years. 🥲)&lt;/p&gt;

&lt;p&gt;Leetcode includes guides on different areas of programming, as well as targeted practice.  Their problems challenge users on specific algorithms, data structures, and efficient problem-solving techniques.&lt;/p&gt;

&lt;h2&gt;
  
  
  Exercism
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://exercism.org"&gt;Exercism&lt;/a&gt; is an awesome online platform for beginner to intermediate-level coders to practice their skills, focusing on a specific programming language.  Experienced programmers can also volunteer to mentor beginners and provide feedback on their code.  This platform is completely free and open source, so anyone can contribute to the exercises and create new ones for different languages!&lt;/p&gt;

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

&lt;p&gt;I hope this list helps you find tools that can help you improve your skills!  There are a lot of other great websites out there - are there any you enjoy using that I haven't mentioned in this short list?  Drop a message in the comments below!&lt;/p&gt;

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

&lt;p&gt;Catherine&lt;/p&gt;

</description>
      <category>coding</category>
      <category>programming</category>
      <category>leetcode</category>
    </item>
    <item>
      <title>Setting up TailwindCSS + SASS with EmberJS</title>
      <dc:creator>Catherine Chen</dc:creator>
      <pubDate>Tue, 02 May 2023 22:09:11 +0000</pubDate>
      <link>https://dev.to/cathzchen/setting-up-tailwindcss-sass-with-emberjs-4p42</link>
      <guid>https://dev.to/cathzchen/setting-up-tailwindcss-sass-with-emberjs-4p42</guid>
      <description>&lt;p&gt;Let's get started!&lt;/p&gt;

&lt;h2&gt;
  
  
  Creating an EmberJS project
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;See &lt;a href="https://guides.emberjs.com/release/getting-started/quick-start/"&gt;https://guides.emberjs.com/release/getting-started/quick-start/&lt;/a&gt; for more information.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;If you haven't already, you can install the &lt;a href="https://cli.emberjs.com/"&gt;Ember CLI&lt;/a&gt; using the following command:&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; &lt;span class="nt"&gt;-g&lt;/span&gt; ember-cli
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then, create a fresh new Ember application:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ember new my-ember-app &lt;span class="nt"&gt;--lang&lt;/span&gt; en
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Navigate into the directory of your new Ember app (&lt;code&gt;cd my-ember-app&lt;/code&gt;) before running any of the commands in the next section.&lt;/p&gt;

&lt;h2&gt;
  
  
  Adding TailwindCSS + SASS
&lt;/h2&gt;

&lt;p&gt;First, let's begin by installing the necessary dependencies:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm i &lt;span class="nt"&gt;-D&lt;/span&gt; ember-cli-postcss postcss-scss autoprefixer tailwindcss
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Next, create your &lt;code&gt;tailwind.config.js&lt;/code&gt; file in the root directory:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx tailwind init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Update &lt;code&gt;module.exports&lt;/code&gt; to reflect something like this:&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;// tailwind.config.js&lt;/span&gt;

&lt;span class="nx"&gt;module&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;exports&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;./app/**/*.{gjs,gts,hbs,html,js,ts}&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="c1"&gt;// ...&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Add the following options to &lt;code&gt;ember-cli-build.js&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight diff"&gt;&lt;code&gt;// ember-cli-build.js
&lt;span class="err"&gt;
&lt;/span&gt;// ...
&lt;span class="err"&gt;
&lt;/span&gt;&lt;span class="p"&gt;module.exports = function (defaults) {
&lt;/span&gt;    const app = new EmberApp(defaults, {
&lt;span class="gi"&gt;+       postcssOptions: {
+           compile: {
+               extension: "scss",
+               enabled: true,
+               parser: require("postcss-scss"),
+               plugins: [
+                   {
+                       module: require("autoprefixer"),
+                       options: {},
+                   },
+                   {
+                       module: require("tailwindcss"),
+                       options: {
+                           config: "./tailwind.config.js",
+                       },
+                   },
+               ],
+           },
+       },
&lt;/span&gt;    });
&lt;span class="err"&gt;
&lt;/span&gt;    return app.toTree();
};
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Note that you will need to restart the server (run &lt;code&gt;npm start&lt;/code&gt; again) to see changes after making edits to &lt;code&gt;ember-cli-build.js&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Rename &lt;code&gt;app/styles/app.css&lt;/code&gt; to &lt;code&gt;app/styles/app.scss&lt;/code&gt;.&lt;/p&gt;

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

&lt;p&gt;And that's it! If you have any questions or comments, feel free to let me know.&lt;/p&gt;

&lt;p&gt;If you would like to see the full code for this tutorial, check out &lt;a href="https://github.com/klickers/embertwscss"&gt;klickers/embertwscss&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>tailwindcss</category>
      <category>ember</category>
      <category>sass</category>
      <category>scss</category>
    </item>
    <item>
      <title>Building a Weekly Planner App with ReactJS + FullCalendar: Project Setup (Part 1)</title>
      <dc:creator>Catherine Chen</dc:creator>
      <pubDate>Mon, 10 Apr 2023 21:51:00 +0000</pubDate>
      <link>https://dev.to/cathzchen/building-a-weekly-planner-app-with-reactjs-fullcalendar-project-setup-part-1-42f2</link>
      <guid>https://dev.to/cathzchen/building-a-weekly-planner-app-with-reactjs-fullcalendar-project-setup-part-1-42f2</guid>
      <description>&lt;p&gt;&lt;strong&gt;GOAL&lt;/strong&gt;: Create a weekly calendar app where one can plan and schedule tasks.  Integrations with Google Calendar and task apps.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Note: I will be using &lt;a href="https://astro.build"&gt;Astro.build&lt;/a&gt;, but the basic concepts of this tutorial should work with any other setup (Vite, CRA, etc.).&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Part 1 covers project setup and creating a basic calendar component. &lt;/p&gt;




&lt;h2&gt;
  
  
  Setting up Astro + React + FullCalendar
&lt;/h2&gt;

&lt;p&gt;First, let's set up Astro with the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm create astro@latest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Follow the steps in the command prompt.  Choose "Empty" when asked, "How would you like to start your new project?", "Yes" for installing dependencies, and "No" for TypeScript.&lt;/p&gt;

&lt;p&gt;Next, we need to add ReactJS.  Move into the folder that was created when you initiated the project, then run the &lt;code&gt;astro add react&lt;/code&gt; command.&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;cd &lt;/span&gt;your-project-folder
npx astro add react
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Choose "yes" if prompted with a y/n question.&lt;/p&gt;

&lt;p&gt;Finally, we need to install the FullCalendar packages we need.  Run the following command:&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; &lt;span class="se"&gt;\&lt;/span&gt;
  @fullcalendar/core &lt;span class="se"&gt;\&lt;/span&gt;
  @fullcalendar/react &lt;span class="se"&gt;\&lt;/span&gt;
  @fullcalendar/timegrid &lt;span class="se"&gt;\&lt;/span&gt;
  @fullcalendar/interaction
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;@fullcalendar/core&lt;/code&gt; and &lt;code&gt;@fullcalendar/react&lt;/code&gt; are quite self-explanatory as to what they contain.  &lt;code&gt;@fullcalendar/timegrid&lt;/code&gt; is a specific plugin we'll be using to create our calendar app.&lt;/p&gt;




&lt;h2&gt;
  
  
  Initial Calendar Component
&lt;/h2&gt;

&lt;p&gt;Currently, your &lt;code&gt;src&lt;/code&gt; folder should only contain one other folder - &lt;code&gt;pages&lt;/code&gt;.  Create a &lt;code&gt;src/components&lt;/code&gt; folder with an empty &lt;code&gt;Calendar.jsx&lt;/code&gt; file.  Inside this &lt;code&gt;Calendar.jsx&lt;/code&gt; file, we will create a Calendar component.&lt;/p&gt;

&lt;p&gt;First, we want to import &lt;code&gt;React&lt;/code&gt; and &lt;code&gt;FullCalendar&lt;/code&gt;, along with the initial plugin we'll be using.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="c1"&gt;// src/components/Calendar.jsx&lt;/span&gt;

&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;react&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;FullCalendar&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@fullcalendar/react&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;timeGridPlugin&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@fullcalendar/timegrid&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Next, let's create the basic component:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="c1"&gt;// src/components/Calendar.jsx&lt;/span&gt;

&lt;span class="c1"&gt;// ...&lt;/span&gt;

&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Calendar&lt;/span&gt; &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="nc"&gt;React&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Component&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nf"&gt;render&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
            &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;FullCalendar&lt;/span&gt;
                &lt;span class="na"&gt;plugins&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;timeGridPlugin&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
                &lt;span class="na"&gt;initialView&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"timeGridWeek"&lt;/span&gt;
            &lt;span class="p"&gt;/&amp;gt;&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;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;Calendar&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Let's use this component.  Make the following changes to your &lt;code&gt;index.astro&lt;/code&gt; page:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight diff"&gt;&lt;code&gt;  ---
&lt;span class="gi"&gt;+ import Calendar from "../components/Calendar";
&lt;/span&gt;  ---
&lt;span class="err"&gt;
&lt;/span&gt;  &amp;lt;html lang="en"&amp;gt;
      &amp;lt;head&amp;gt;
          &amp;lt;meta charset="utf-8" /&amp;gt;
          &amp;lt;link rel="icon" type="image/svg+xml" href="/favicon.svg" /&amp;gt;
          &amp;lt;meta name="viewport" content="width=device-width" /&amp;gt;
          &amp;lt;meta name="generator" content={Astro.generator} /&amp;gt;
          &amp;lt;title&amp;gt;Astro&amp;lt;/title&amp;gt;
      &amp;lt;/head&amp;gt;
      &amp;lt;body&amp;gt;
&lt;span class="gd"&gt;-         &amp;lt;h1&amp;gt;Astro&amp;lt;/h1&amp;gt;
&lt;/span&gt;&lt;span class="gi"&gt;+         &amp;lt;Calendar client:load /&amp;gt;
&lt;/span&gt;      &amp;lt;/body&amp;gt;
  &amp;lt;/html&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now if you start your app using the &lt;code&gt;npm run dev&lt;/code&gt; command, you should see something like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1nuq3095tc43uth9pv04.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1nuq3095tc43uth9pv04.png" alt="Blank FullCalendar instance" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;You can find all the code at &lt;a href="https://github.com/klickers/ct-calendar"&gt;klickers/ct-calendar&lt;/a&gt;.  Part 2 coming soon!&lt;/p&gt;

</description>
      <category>react</category>
      <category>tutorial</category>
      <category>fullcalendar</category>
    </item>
    <item>
      <title>February Code Challenge COMPLETE!</title>
      <dc:creator>Catherine Chen</dc:creator>
      <pubDate>Mon, 03 Apr 2023 19:13:00 +0000</pubDate>
      <link>https://dev.to/cathzchen/february-code-challenge-complete-4288</link>
      <guid>https://dev.to/cathzchen/february-code-challenge-complete-4288</guid>
      <description>&lt;p&gt;It's already April, but better late than never in updating y'all on the results of my February code challenge!&lt;/p&gt;

&lt;p&gt;On February 28th, I had 25 of the 28 websites completed, then finished the last three over the next few days.&lt;/p&gt;

&lt;p&gt;This challenge has been one of the best and worst ideas I've ever had. It forced me to quickly generate new websites (some I want to evolve into larger projects, others I can't stand to look at). Near the end, it became very energy-draining, to the point where I had a hard time focusing on other tasks I needed to finish during the day.&lt;/p&gt;

&lt;p&gt;After the challenge concluded, I ended up with mild coding PTSD and took a break from programming for a few weeks.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Note to self for future code challenges:&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;don't include weekends&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;don't set challenges that take 2-4 hours every day&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The 28 Websites
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://pdbooks.createfulpurpose.com/"&gt;Tom Sawyer (PD Books)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://embassyuniversity.vercel.app/"&gt;UI Revamp: Embassy University&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://spyschool.vercel.app/"&gt;Spy School Website&lt;/a&gt; (one of my favorites!)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://quotes.cathzchen.com"&gt;Personal: Favorite Quotes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://magiccandyshop.vercel.app"&gt;Magic Candy Shop&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ojsimpsoncnn.vercel.app"&gt;UI Revamp: OJ Simpson Trial Hub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://world.cathzchen.com"&gt;Personal: Catherine's World&lt;/a&gt; (THE favorite!)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://fakerprofile.vercel.app"&gt;Fake Profile Generator&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://tacorevamp.vercel.app"&gt;UI Revamp: TACO&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://happyfridge.vercel.app"&gt;Happy Fridge&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://bucketlist.cathzchen.com"&gt;Personal: Bucket List&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://house.cathzchen.com"&gt;House&lt;/a&gt; (no idea what this was supposed to be)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://painful.vercel.app/"&gt;Painful Website&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://severenews.vercel.app"&gt;Template: Severe News&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://template-samira.vercel.app/"&gt;Template: Samira (LoL)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Catherine's Logs&lt;/li&gt;
&lt;li&gt;&lt;a href="https://spacejobs.vercel.app"&gt;Space Job Board&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://browser-start-page.vercel.app"&gt;Browser Start Page&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://template-lux.vercel.app"&gt;Template: Lux (LoL)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://animal-template.vercel.app"&gt;Template: Animal-Themed Website&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://portfolio.cathzchen.com"&gt;Personal: Portfolio&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://sleepy.vercel.app"&gt;Sleep&lt;/a&gt; (I was sleepy)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://template-blog-ipsum.vercel.app"&gt;Template: Ipsum Blog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://template-morgana.vercel.app"&gt;Template: Morgana (LoL)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://songs.cathzchen.com"&gt;Personal: Favorite Songs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://cat-advent-calendar.vercel.app"&gt;Cat Advent Calendar&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://template-lulu.vercel.app/"&gt;Template: Lulu (LoL)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://card-examples.vercel.app"&gt;Card Examples&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>webdev</category>
      <category>challenge</category>
      <category>astro</category>
      <category>tailwindcss</category>
    </item>
    <item>
      <title>February Code Challenge: 28 Websites in 28 Days</title>
      <dc:creator>Catherine Chen</dc:creator>
      <pubDate>Fri, 27 Jan 2023 19:01:55 +0000</pubDate>
      <link>https://dev.to/cathzchen/february-code-challenge-28-websites-in-28-days-4p9n</link>
      <guid>https://dev.to/cathzchen/february-code-challenge-28-websites-in-28-days-4p9n</guid>
      <description>&lt;p&gt;(Scroll below for updates!)&lt;/p&gt;

&lt;p&gt;Hey everyone!&lt;/p&gt;

&lt;p&gt;Recently I've decided to give myself a Code Challenge every month (for the remainder of 2023) to stretch my skills and have a bit of fun. This February, I'll be making 28 websites for my first challenge! 🤯&lt;/p&gt;

&lt;p&gt;I'm a little apprehensive (okay, actually more than a little) since I don't usually code seven days a week, which means I may have to double up on some days to fully complete this challenge.&lt;/p&gt;

&lt;p&gt;Here are a few ideas I have of simple websites I could make for this challenge:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;websites for people&lt;/li&gt;
&lt;li&gt;revamping UI for "ugly" websites&lt;/li&gt;
&lt;li&gt;landing pages selling nonexistent products&lt;/li&gt;
&lt;li&gt;fanpages?&lt;/li&gt;
&lt;li&gt;...&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;(Due to time constraints, these websites will be relatively simple, with perhaps only 1-3 pages.)&lt;/p&gt;

&lt;p&gt;I'll be updating my progress on this post periodically as I work through the challenge. Wish me luck!&lt;/p&gt;

&lt;p&gt;Cheers,&lt;/p&gt;

&lt;p&gt;Catherine&lt;/p&gt;




&lt;h2&gt;
  
  
  Updates
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Day 4: &lt;a href="https://quotes.cathzchen.com" rel="noopener noreferrer"&gt;Favorite Quotes&lt;/a&gt; Website&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Tools: Astro, TailwindCSS, Pocketbase&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;For Day 4 of this challenge, I built a quick website of my favorite quotes (with a theme inspired by Tumblr).  I self-hosted Pocketbase for my backend and deployed my frontend with Vercel.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Day 3: &lt;a href="https://spyschool.vercel.app" rel="noopener noreferrer"&gt;Spy School&lt;/a&gt; Website&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Tools:  Astro, TailwindCSS&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I've always wanted to become a secret agent, so I created a simple landing page for an imaginary spy school.  =)&lt;/p&gt;

&lt;p&gt;This is one project I'd love to continue in the future though, especially since I see so much potential for teaching important lessons through this kind of theme.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Day 2: &lt;a href="https://embassyuniversity.vercel.app" rel="noopener noreferrer"&gt;Embassy University&lt;/a&gt; (UI Revamps)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Tools: Astro, TailwindCSS&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Today I finally got to revamp an old website I’ve been eyeing for sometime: Embassy University! I know I could’ve done a better job with the UI, but at least it looks better than the original. 😅&lt;/p&gt;

&lt;p&gt;(Disclaimer: I am not in any way affiliated with this site, nor does me making a different version of their homepage indicate my endorsement of their beliefs and values. 🙃)&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Day 1: &lt;a href="https://pdbooks.createfulpurpose.com/tom-sawyer" rel="noopener noreferrer"&gt;The Adventures of Tom Sawyer&lt;/a&gt; (PD Books)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Tools: Astro, ReactJS, Pocketbase, TailwindCSS&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This first site is a website with custom annotations to bring public domain books to life! I was only able to get the preface of The Adventures of Tom Sawyer complete, but you can bet I’ll return to this project later to add more chapters.&lt;/p&gt;

&lt;p&gt;Deciding how I wanted to display annotations was the most difficult part, but after I completed that, I finished the project quickly.&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>weeklyretro</category>
    </item>
    <item>
      <title>Setting up TailwindCSS with SASS in RedwoodJS</title>
      <dc:creator>Catherine Chen</dc:creator>
      <pubDate>Sat, 26 Mar 2022 00:51:04 +0000</pubDate>
      <link>https://dev.to/cathzchen/setting-up-tailwindcss-with-sass-in-redwoodjs-5am</link>
      <guid>https://dev.to/cathzchen/setting-up-tailwindcss-with-sass-in-redwoodjs-5am</guid>
      <description>&lt;p&gt;Here's a quick and easy guide on how to setup TailwindCSS, using the SASS preprocessor, in a new RedwoodJS project.&lt;/p&gt;

&lt;h2&gt;
  
  
  Requirements
&lt;/h2&gt;

&lt;p&gt;Make sure you have the correct npm / yarn versions installed, the details of which can be found at &lt;a href="https://redwoodjs.com/docs/quick-start"&gt;https://redwoodjs.com/docs/quick-start&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Setting up tailwind and scss
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;yarn create redwood-app my-app-name
cd my-app-name
yarn rw setup ui tailwind
yarn rw setup webpack
yarn workspace web add -D sass sass-loader
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;The code above will create a new RedwoodJS project, then set up Tailwind, webpack, and Sass in your project.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Make sure to change &lt;code&gt;index.css&lt;/code&gt; to &lt;code&gt;index.scss&lt;/code&gt; and update the import in your &lt;code&gt;web/src/App.js&lt;/code&gt; file.&lt;/p&gt;

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

&lt;p&gt;That should be it!  You're now all set to go :)&lt;/p&gt;

</description>
      <category>redwoodjs</category>
      <category>tailwindcss</category>
      <category>scss</category>
      <category>sass</category>
    </item>
    <item>
      <title>Setting up TailwindCSS with SASS in Laravel</title>
      <dc:creator>Catherine Chen</dc:creator>
      <pubDate>Sun, 27 Sep 2020 21:26:38 +0000</pubDate>
      <link>https://dev.to/cathzchen/setting-up-tailwindcss-with-sass-in-laravel-2p2d</link>
      <guid>https://dev.to/cathzchen/setting-up-tailwindcss-with-sass-in-laravel-2p2d</guid>
      <description>&lt;h2&gt;
  
  
  Start
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Before beginning, make sure you have &lt;a href="https://getcomposer.org/"&gt;Composer&lt;/a&gt; and &lt;a href="https://www.npmjs.com/get-npm"&gt;npm&lt;/a&gt; installed.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;First, &lt;a href="https://laravel.com/docs/8.x/installation#installing-laravel"&gt;create a Laravel project&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Install dependencies
&lt;/h2&gt;

&lt;p&gt;Next, &lt;strong&gt;install Laravel's npm dependencies&lt;/strong&gt; by running the following commands:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install
npm install tailwindcss
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Sass comes with Laravel, so you don't need to install it manually.&lt;/p&gt;

&lt;h3&gt;
  
  
  tailwind.config.js
&lt;/h3&gt;

&lt;p&gt;You may want to create a &lt;code&gt;tailwind.config.js&lt;/code&gt; file by running:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npx tailwindcss init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;in your root folder.&lt;/p&gt;

&lt;h2&gt;
  
  
  webpack.mix.js
&lt;/h2&gt;

&lt;p&gt;Inside &lt;code&gt;webpack.mix.js&lt;/code&gt;, require &lt;code&gt;tailwindcss&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const tailwindcss = require('tailwindcss');
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Update your code to read as such:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mix.sass('resources/sass/app.scss', 'public/css')
    .options({
        processCssUrls: false,
        postCss: [ tailwindcss('./tailwind.config.js') ],
    })
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;where &lt;code&gt;app.scss&lt;/code&gt; is the name of your main SCSS file.  &lt;/p&gt;

&lt;p&gt;For each extra SCSS file you have, add another snippet of code.  Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mix.sass('resources/sass/app.scss', 'public/css')
    .options({
        processCssUrls: false,
        postCss: [ tailwindcss('./tailwind.config.js') ],
    })
    .sass('resources/sass/app2.scss', 'public/css')
    .options({
        processCssUrls: false,
        postCss: [ tailwindcss('./tailwind.config.js') ],
    })
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Previewing Changes
&lt;/h2&gt;

&lt;p&gt;To preview changes to your SCSS files as soon as you make them, run &lt;code&gt;npm run watch&lt;/code&gt; as you edit.  Every time a SCSS file listed in &lt;code&gt;webpack.config.js&lt;/code&gt; is updated, your files will be built again.  Make sure to disable caching in your browser first, or the newly built files will not be loaded, and the browser will continue to use your old files.&lt;/p&gt;




&lt;p&gt;That's it!  Now you're all set.  😄&lt;/p&gt;

</description>
      <category>laravel</category>
      <category>saas</category>
      <category>tailwindcss</category>
    </item>
    <item>
      <title>Free customized learning pathways for your journey as a web developer (idea)</title>
      <dc:creator>Catherine Chen</dc:creator>
      <pubDate>Wed, 13 May 2020 18:07:40 +0000</pubDate>
      <link>https://dev.to/cathzchen/free-customized-learning-pathways-for-your-journey-as-a-web-developer-idea-2pa2</link>
      <guid>https://dev.to/cathzchen/free-customized-learning-pathways-for-your-journey-as-a-web-developer-idea-2pa2</guid>
      <description>&lt;p&gt;Yesterday evening I came up with this idea: to collect free online web development learning resources and organize them into learning pathways.&lt;/p&gt;

&lt;p&gt;There’s so much content out there, but it’s difficult to find good materials that match your skill level, or tools that enable you to create what you want.  (Of course, documentation is always there, but we don’t always feel like reading it - right??)&lt;/p&gt;

&lt;p&gt;I’m thinking of building a website containing these organized learning pathways.  All that would need to be done is content organization/curation.  No new material would need to be written.  &lt;/p&gt;

&lt;p&gt;On the site, users could choose to start with either:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;A pathway&lt;/strong&gt;.  Say someone wants to learn frontend, or discover more about Kubernetes, or maybe even just dip their toes into headless CMS solutions.

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Examples:  “Frontend Web Development”, “Laravel”, “ReactJS”, “Exploring Cloud Services”, “Exploring Headless CMS Options”, etc.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;For Frontend Web Development, for example, users could first learn the basics of HTML &amp;amp; CSS, then responsive web design, followed by JavaScript.  Resources could be from sites such as FreeCodeCamp, Udacity (their short courses are free), and Codecademy.  Afterwards, users could explore responsive design libraries (Bootstrap, TailwindCSS, Tachyons), JavaScript animation, jQuery, and AJAX.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;A project goal&lt;/strong&gt;.  I learned web development by trying to create projects.  I’d explore a bunch of tools and libraries I felt could help me create the result I wanted, then pick and choose the ones I liked.  I learned literally &lt;em&gt;all&lt;/em&gt; of my current web dev skills through this process.

&lt;ul&gt;
&lt;li&gt;Example:  “Create a Personal Portfolio”, “Create an eCommerce Site”, etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;What do you guys think?  Are there any similar projects going on?  Is this something useful you would use (or would’ve used if it existed when you needed it)?  What paths/project goal choices would you like to see?  I’d love to hear your thoughts on this.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>startup</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>What I learned from finishing Udacity's four-month Blockchain nanodegree in one month</title>
      <dc:creator>Catherine Chen</dc:creator>
      <pubDate>Tue, 05 May 2020 19:53:49 +0000</pubDate>
      <link>https://dev.to/cathzchen/what-i-learned-from-finishing-udacity-s-four-month-blockchain-nanodegree-in-one-month-5994</link>
      <guid>https://dev.to/cathzchen/what-i-learned-from-finishing-udacity-s-four-month-blockchain-nanodegree-in-one-month-5994</guid>
      <description>&lt;p&gt;Udacity was offering a one month free promotion due to the coronavirus, and I wanted to take advantage of it.  I signed up on the website, entered my credit card info, and took note that I would have $400 dollars charged to my account if I didn't graduate (finish the program) or cancel my subscription before my month was up.  (To put things into perspective, the program is designed to take four months to complete.)&lt;/p&gt;

&lt;p&gt;Perhaps Udacity was looking to build their customer base, but renewing my subscription was not a viable option for me.  I couldn't spare four hundred dollars when the same amount would pay for eight units of college tuition.  &lt;/p&gt;

&lt;p&gt;It wasn't really a choice.  I could either go partway through the program and possibly never finish it, or I could try to complete it in a month.&lt;/p&gt;

&lt;p&gt;Since I can't live without challenges, I chose the latter.  And here's what I learned from it.&lt;/p&gt;

&lt;h1&gt;
  
  
  The beginning may be easy, but it's the end that counts.
&lt;/h1&gt;

&lt;p&gt;At first, putting in three to six hours a day, six days a week in this one thing was &lt;em&gt;fun&lt;/em&gt;.  But after the first or second week, I began to feel drained.  &lt;/p&gt;

&lt;p&gt;The content became more difficult.  The projects took a lot of time.  I had midterms for school coming up, and a magazine design deadline to meet.  I had so much on my hands - but then I learned my second lesson.&lt;/p&gt;

&lt;h1&gt;
  
  
  You have to push yourself.  No one else is going to do it for you.
&lt;/h1&gt;

&lt;p&gt;I wanted to do this.  So I had to force myself to sit back, watch hours of videos on blockchain, and work through debugging a bunch of errors (many due to old code).  My brain literally felt dead in the middle of the afternoon.&lt;/p&gt;

&lt;p&gt;What got me through was the knowledge that &lt;em&gt;I wanted this&lt;/em&gt; and could do it, and the fact that I wasn't going to get anywhere if I didn't tell myself to start working.  &lt;em&gt;I&lt;/em&gt; had to push myself.&lt;/p&gt;

&lt;h1&gt;
  
  
  Sometimes you should take a break...or not
&lt;/h1&gt;

&lt;p&gt;On the third week, I became so exhausted I unintentionally took two days off.  Sure, it was great to have a day when Blockchain wasn't on my mind.  But on the other hand, I lost valuable time.  I ended up having to stay up late to finish the last two projects, which made me pretty sleepy during class those days.  Not ideal, but bearable.&lt;/p&gt;

&lt;h1&gt;
  
  
  Cramming isn't fun
&lt;/h1&gt;

&lt;p&gt;I wished I'd had more time to absorb and explore the material on Solidity, Ehtereum, Truffle, and more I was presented with.  But since I was on a time crunch, I missed out big time.&lt;/p&gt;

&lt;h1&gt;
  
  
  Community matters
&lt;/h1&gt;

&lt;p&gt;My family totally supported me during the whole thing.  They gave me alone time to finish up the projects I needed to submit, encouraged me along the way, and celebrated with me...&lt;/p&gt;

&lt;h1&gt;
  
  
  ...at the end...
&lt;/h1&gt;

&lt;p&gt;I felt absolutely WONDERFUL when I received the completion certificate.  I'd done it!  Maybe I wouldn't start a career in blockchain, but I'd always remember the moment and what it took for me to get there.&lt;/p&gt;

</description>
      <category>blockchain</category>
      <category>motivation</category>
      <category>womenintech</category>
    </item>
    <item>
      <title>Introducing "Anabel": A personal website/resume template</title>
      <dc:creator>Catherine Chen</dc:creator>
      <pubDate>Wed, 15 Apr 2020 22:31:40 +0000</pubDate>
      <link>https://dev.to/cathzchen/introducing-anabel-a-personal-website-resume-template-4hn8</link>
      <guid>https://dev.to/cathzchen/introducing-anabel-a-personal-website-resume-template-4hn8</guid>
      <description>&lt;p&gt;Yesterday, I came up with the idea to build a personal website for my sister's birthday.  Because her birthday is today, I, being the nice sister I am, woke up early to cram in a few hours of work into the project I named after her:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/klickers/anabel" rel="noopener noreferrer"&gt;Anabel Personal Website Template&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It's built on purple because she loves purple.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fklickers%2Fanabel%2Fmaster%2Fdist%2Fanabel.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fklickers%2Fanabel%2Fmaster%2Fdist%2Fanabel.PNG" alt="Anabel homepage"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The website is built on TailwindCSS.  The template colors and fonts can easily be changed from the variables in the &lt;code&gt;src/before.css&lt;/code&gt; file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;:root {

    /* Display &amp;amp; Body */
    --font-display: "Baloo Paaji 2";
    --font-body: "Lato";
    --color-display: theme(colors.gray.700);  /* color of display fonts */
    --color-body: theme(colors.purple.100);  /* body background color */

    ...etc.
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Usage
&lt;/h2&gt;

&lt;p&gt;It's very easy to work with.  After downloading the repository, &lt;code&gt;cd&lt;/code&gt; to the root folder and run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install
npm start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Hot module replacement begins.  Edit any of the files within &lt;code&gt;src/&lt;/code&gt;, then navigate to &lt;a href="http://localhost:1234" rel="noopener noreferrer"&gt;http://localhost:1234&lt;/a&gt; to view the result.s&lt;/p&gt;

&lt;p&gt;(The repository also contains a build within the &lt;code&gt;dist/&lt;/code&gt; folder.  Just load the compiled &lt;code&gt;dist/before.css&lt;/code&gt; file into any webpage you'd like.)&lt;/p&gt;

&lt;h1&gt;
  
  
  Card Components
&lt;/h1&gt;

&lt;p&gt;The template contains two basic types of card components:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fklickers%2Fanabel%2Fmaster%2Fdist%2Fanabel2.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fklickers%2Fanabel%2Fmaster%2Fdist%2Fanabel2.PNG" alt="Anabel page component"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The first is a card-within-the-card style component, best used for the Employment History and Education sections of a resume.&lt;/p&gt;

&lt;p&gt;The second is a list style component, best used for card categories like Skills, Hobbies, Languages, etc.&lt;/p&gt;

&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;This project was fun to build, and I enjoyed it (almost!) every step of the way.  Next, I plan to create a Routify (Svelte) template based on Anabel to make creating a multi-page Anabel website easier.&lt;/p&gt;

&lt;p&gt;That's it for today!  I hope you enjoyed reading this post as much as I enjoyed creating &lt;a href="https://github.com/klickers/anabel" rel="noopener noreferrer"&gt;Anabel&lt;/a&gt;.  Leave comments below to let me know what you think, or alert me to any errors in the code.  ;)&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>tailwindcss</category>
      <category>html</category>
      <category>css</category>
    </item>
  </channel>
</rss>
