<?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: Erin McNulty</title>
    <description>The latest articles on DEV Community by Erin McNulty (@erin2722).</description>
    <link>https://dev.to/erin2722</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%2F455993%2F85eb94f3-939b-4bae-ab72-9dcf8c92f10a.jpeg</url>
      <title>DEV Community: Erin McNulty</title>
      <link>https://dev.to/erin2722</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/erin2722"/>
    <language>en</language>
    <item>
      <title>Managing React Projects with Github Issues</title>
      <dc:creator>Erin McNulty</dc:creator>
      <pubDate>Sun, 04 Oct 2020 18:08:21 +0000</pubDate>
      <link>https://dev.to/erin2722/managing-react-projects-with-github-issues-1o0n</link>
      <guid>https://dev.to/erin2722/managing-react-projects-with-github-issues-1o0n</guid>
      <description>&lt;h1&gt;
  
  
  The Problem
&lt;/h1&gt;

&lt;p&gt;I am currently starting my first management role as an Engineering Manager at Columbia Spectator, a student newspaper that houses a product engineering division to create useful products for the greater Columbia community. This semester, we are creating a Clubs at Columbia web application and using our typical stack of React, Express, Node, and MySQL. I am in charge of leading the React team-- our aim is to create reusable, clean components to build out the frontend of our application. We have beautiful Figma mockups from our design team and are starting to build the application!&lt;/p&gt;

&lt;p&gt;However, I am coordinating a team across various timezones, skill levels, and interests, and so I knew that I had to create a project management system that allowed each engineer to work individually, while still ensuring that our product came together in the end. With this as my goal, I thought about how to leverage Github's incredible project management features in order to ensure that my team could run smoothly.&lt;/p&gt;

&lt;h1&gt;
  
  
  The Solution
&lt;/h1&gt;

&lt;p&gt;I decided to use Github issues along with their project boards to track my team's progress! I created a Github issue template that contained all of the important information about each component so that our team could break up the project into bite-sized pieces while still ensuring that it came together perfectly!&lt;/p&gt;

&lt;h1&gt;
  
  
  Here is my template:
&lt;/h1&gt;

&lt;h4&gt;
  
  
  Component Description and Screenshot
&lt;/h4&gt;

&lt;p&gt;Include a brief description of the component here, including what page(s) it will be on, along with a screenshot of the component from Figma. &lt;br&gt;
&lt;strong&gt;Description:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Screenshot:&lt;/strong&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  Props and State
&lt;/h4&gt;

&lt;p&gt;Note what props will be coming into the component, and what state it will have. Remember to reference React's &lt;a href="https://reactjs.org/docs/thinking-in-react.html#step-4-identify-where-your-state-should-live"&gt;instructions&lt;/a&gt; on how to figure out what state/props should be. Aim to make the component as flexible as possible-- we probably should not be hardcoding in content and instead pass it in as props.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Props:&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;State:&lt;/strong&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  Parents and Children
&lt;/h4&gt;

&lt;p&gt;You do not need to list parents and children all the way through the component tree, but it is helpful to know what the direct parent(s) of each component is so that we can get a big-picture understanding of how the data-flow will work in our application. Feel free to link the issues that contain the info about each referenced component as well!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Parents:&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Children:&lt;/strong&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  Styling Notes
&lt;/h4&gt;

&lt;p&gt;While looking at the component in Figma, note any pieces of styling that you might need here by checking out the CSS preview:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="c"&gt;/* fonts */&lt;/span&gt;
&lt;span class="nt"&gt;font-family&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nt"&gt;Roboto&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="nt"&gt;font-style&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nt"&gt;normal&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="nt"&gt;font-weight&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="err"&gt;500&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="c"&gt;/* colors */&lt;/span&gt;
&lt;span class="nt"&gt;color&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="err"&gt;#9&lt;/span&gt;&lt;span class="nt"&gt;A9A9A&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="nt"&gt;background&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;#FFFFFF&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="c"&gt;/* borders and shadows */&lt;/span&gt;
&lt;span class="nt"&gt;border&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="err"&gt;2&lt;/span&gt;&lt;span class="nt"&gt;px&lt;/span&gt; &lt;span class="nt"&gt;solid&lt;/span&gt; &lt;span class="nf"&gt;#EC6C52&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="nt"&gt;border-radius&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="err"&gt;5&lt;/span&gt;&lt;span class="nt"&gt;px&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="nt"&gt;box-shadow&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="err"&gt;2&lt;/span&gt;&lt;span class="nt"&gt;px&lt;/span&gt; &lt;span class="err"&gt;10&lt;/span&gt;&lt;span class="nt"&gt;px&lt;/span&gt; &lt;span class="err"&gt;30&lt;/span&gt;&lt;span class="nt"&gt;px&lt;/span&gt; &lt;span class="nt"&gt;rgba&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="err"&gt;0&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="err"&gt;0&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="err"&gt;0&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="err"&gt;0&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="err"&gt;05&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Remember not to copy any hardcoded positioning and size values.&lt;/p&gt;

&lt;h4&gt;
  
  
  Additional Notes
&lt;/h4&gt;

&lt;p&gt;Are there any icons you will need? Images? Written content? Note that here so that we can get it from Product Design before we start!&lt;/p&gt;

&lt;h1&gt;
  
  
  Feedback?
&lt;/h1&gt;

&lt;p&gt;I would love feedback on my React component template! How have other managers of React projects organized their team, especially remotely?&lt;/p&gt;

</description>
      <category>react</category>
      <category>github</category>
      <category>management</category>
      <category>feedback</category>
    </item>
    <item>
      <title>Contributing to n8n through the MLH Fellowship</title>
      <dc:creator>Erin McNulty</dc:creator>
      <pubDate>Thu, 20 Aug 2020 20:34:42 +0000</pubDate>
      <link>https://dev.to/erin2722/contributing-to-n8n-through-the-mlh-fellowship-3bl2</link>
      <guid>https://dev.to/erin2722/contributing-to-n8n-through-the-mlh-fellowship-3bl2</guid>
      <description>&lt;p&gt;This summer, I was lucky enough to be connected to the Major League Hacking fellowship and contribute to open-source software for 12 weeks this summer. I wanted to share a bit about what I have learned this summer, and I hope that sharing my experience will encourage you to &lt;a href="https://fellowship.mlh.io/" rel="noopener noreferrer"&gt;apply&lt;/a&gt; for upcoming sessions!&lt;/p&gt;

&lt;p&gt;This is the first part of a series about what I have learned this summer, and here I am focusing on my contributions to my open-source project, n8n.&lt;/p&gt;

&lt;h1&gt;
  
  
  My Project
&lt;/h1&gt;

&lt;p&gt;I was paired with &lt;a href="https://n8n.io" rel="noopener noreferrer"&gt;n8n&lt;/a&gt;, a fair-code licensed startup providing an easily extendable workflow automation tool. &lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fs1st2luihkd2yn5m4tk3.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%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fs1st2luihkd2yn5m4tk3.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Initially, my team and I set out to create new integrations (nodes) for n8n in response to requests on their community forums. I created Spotify, Gmail, and ConvertKit integrations for n8n in Typescript, and gained valuable experience working with new API and webhooks services. &lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ffnme9s706jlkj0504f89.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%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ffnme9s706jlkj0504f89.png" alt="Alt Text"&gt;&lt;/a&gt; In addition to creating Regular Nodes (simple API integrations) for all three projects, I also created Trigger Nodes (with webhooks or pooling scripts) for Spotify and ConvertKit.&lt;/p&gt;

&lt;p&gt;I also dove into the n8n frontend and laid the groundwork for a feature to prompt users to save their changes before navigating away from their workflow.&lt;/p&gt;

&lt;h3&gt;
  
  
  Capstone Project
&lt;/h3&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%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fjo3e6428nd29v9y5pb0s.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%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fjo3e6428nd29v9y5pb0s.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;br&gt;
After creating new nodes for the first 8 weeks, my teammates and I realized n8n's standardized method of programming new nodes could be automated. We spent the last 4 weeks of our fellowship creating the &lt;a href="https://github.com/MLH-Fellowship/nodemaker" rel="noopener noreferrer"&gt;Nodemaker&lt;/a&gt;, a tool for n8n developers to quickly create new nodes without worrying about the details of node creation and focus on the tricky final steps for each integration. &lt;/p&gt;

&lt;p&gt;By automating this process, the Nodemaker frees developers from the work of writing structural code for nodes—especially for various endpoints and request methods—, writing docs for the nodes and generating images for the docs, updating the package.json listing, fixing node formatting issues and enforcing code style guidelines, finding a relevant and properly sized node icon, placing all output files in the official repos, and uploading a sample workflow to the n8n collection. In turn, Nodemaker also frees maintainers from the work of reviewing to ensure that pull requests made by the community conform to the official n8n standards.&lt;/p&gt;

&lt;p&gt;I led the user research and frontend development for this project, learning Vue and refining my design skills in the process.&lt;/p&gt;

&lt;p&gt;We have &lt;a href="https://community.n8n.io/t/nodemaker-launch/2097" rel="noopener noreferrer"&gt;launched&lt;/a&gt; the Nodemaker and are looking forward to community use and feedback!&lt;/p&gt;

&lt;h3&gt;
  
  
  Summary
&lt;/h3&gt;

&lt;p&gt;In addition to learning about Typescript through creating nodes, I learned about design, UI/UX, and Vue through ideating, prototyping, coding, and launching the Nodemaker.&lt;/p&gt;

&lt;p&gt;I am extremely grateful to MLH for the opportunity to work with n8n, and to the n8n maintainers for their code reviews and feedback on the Nodemaker.&lt;/p&gt;

&lt;p&gt;I will be focusing on the incredible mentorship I received through MLH in my next post!&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>career</category>
      <category>mlhgrad</category>
    </item>
  </channel>
</rss>
