21 | If you have browsed around enough on the internet, you'll see that
22 | many sites have a banner that pops up explaining the use of cookies
23 | on their site. It seems annoying, but did you know that there are
24 | laws in the EU trying to protect citizens from having their
25 | information gathered without their consent?
26 |
27 |
28 |
29 | I've always worked on internal applications for companies or sites
30 | used only by the US, which means I never really took the time to
31 | understand the purpose of these banners. But since I've recently
32 | been working on my
33 | https://icongeneratorai.com
36 | SaaS product, and I've had many users from the EU try to generate
37 | icons, I decided it was time to add in a cookie banner.
38 |
39 |
40 |
When do you need a cookie banner?
41 |
42 |
43 | If your application uses cookies to track a user, such as using
44 | google analytics, you will need a cookie banner. You should never
45 | inject the google analytics scripts without the user's consent,
46 | which means your "accept all cookies" button should do that google
47 | analytics setup. If the user denies those cookies, you should never
48 | inject those scripts either. You also need to provide a page that
49 | allows users to change their preferences at any time and also a way
50 | for them to clear those cookies from their browser when they decide
51 | they don't want to be tracked.
52 |
53 |
54 |
How can you easily implement a cookie banner?
55 |
56 |
57 | Recently I found a react library which I imported into my _app.tsx
58 | file in next.js called
59 | https://www.npmjs.com/package/react-cookie-consent. It works pretty well, but honestly if you wanted to build your
64 | own banner it isn't too hard to do. In the banner, you'll want to
65 | make sure the text explains why exactly you are using cookies on
66 | this site and how you may be tracking their information. You will
67 | want a button for them to accept your cookies, and a button for them
68 | to prevent the tracking cookies. Note that authentication-related
69 | cookies are unrelated to this banner. If your site doesn't track
70 | anyone, you don't need a banner because those authentication cookies
71 | are essential for the site to work.
72 |
73 |
74 |
75 | I hope you found this little snippet of information useful. Remember
76 | to abide by the laws of your country, and be courteous to your
77 | users; don't just track them without giving them consent.
78 |
79 |
80 |
Have a good day, and happy coding!
81 |
82 |
83 |
84 |
85 |
86 |
--------------------------------------------------------------------------------
/data/emails/cookie-banner.txt:
--------------------------------------------------------------------------------
1 | Why do sites have Cookie Banners?
2 | If you have browsed around enough on the internet, you'll see that many sites have a banner that pops up explaining the use of cookies on their site. It seems annoying, but did you know that there are laws in the EU trying to protect citizens from having their information gathered without their consent?
3 |
4 | I've always worked on internal applications for companies or sites used only by the US, which means I never really took the time to understand the purpose of these banners. But since I've recently been working on my https://icongeneratorai.com SaaS product, and I've had many users from the EU try to generate icons, I decided it was time to add a cookie banner.
5 |
6 | When do you need a cookie banner?
7 | If your application uses cookies to track a user, such as using google analytics, you will need a cookie banner. You should never inject the google analytics scripts without the user's consent, which means your "accept all cookies" button should do that google analytics setup. If the user denies those cookies, you should never inject those scripts either. You also need to provide a page that allows users to change their preferences at any time and also a way for them to clear those cookies from their browser when they decide they don't want to be tracked.
8 |
9 | How can you easily implement a cookie banner?
10 | Recently I found a react library which I imported into my _app.tsx file in next.js called https://www.npmjs.com/package/react-cookie-consent. It works pretty well, but honestly, if you wanted to build your own banner it isn't too hard to do. In the banner, you'll want to make sure the text explains why exactly you are using cookies on this site and how you may be tracking their information. You will want a button for them to accept your cookies, and a button for them to prevent the tracking cookies. Note that authentication-related cookies are unrelated to this banner. If your site doesn't track anyone, you don't need a banner because those authentication cookies are essential for the site to work.
11 |
12 | I hope you found this little snippet of information useful. Remember to abide by the laws of your country, and be courteous to your users; don't just track them without giving them consent.
13 |
14 | Have a good day and happy coding!
15 |
16 |
--------------------------------------------------------------------------------
/data/emails/feb5.mjml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
10 |
11 |
12 |
13 |
19 |
4 Great Node CLI Ideas to Practice Coding
20 |
21 | Many beginners are hyper-focused on learning react and building out
22 | user interfaces, but trying to build our command line tools is an
23 | alternative approach to solidify your knowledge with javascript,
24 | node, and asynchronous programming. CLI tools might sound simple,
25 | but they can easily get complex as well. You need to read from the
26 | user input using command line arguments, you need to run complex
27 | logic using that initial input, and you often ended to write to the
28 | disk or make API requests. By taking the focus away from the UI, you
29 | can focus more on the fundamentals of coding.
30 |
31 |
32 |
33 | I wanted to provide you with four intermediate CLI project ideas you
34 | can try building for yourself. I promise to try to build these tools
35 | yourself will make you an overall better problem solver and
36 | javascript developer, and the things learned WILL transfer over to
37 | the front-end side of web development.
38 |
39 |
40 |
Converting a CSV file to JSON
41 |
42 |
43 | Doing file reading and writing is critical for all programming
44 | languages. Getting better at using node’s standard library for
45 | parsing files will help you understand asynchronous code and maybe
46 | even a little bit more about content types such as utf-8 or binary
47 | you’ll need to understand when writing and reading files. Next,
48 | you’ll need to figure out how to parse the CSV file after you read
49 | it, which you could do by googling around for an existing npm
50 | library or you could try to really stress your fundamental
51 | javascript knowledge by looping over every line in the CSV,
52 | splitting it by comma, and converting it to JSON objects. Finally,
53 | you’ll want to track all of those rows inside an array so that you
54 | can JSON.stringify the array out to a .json file. A lot to learn
55 | from a simple CLI tool. Add in support for command line arguments if
56 | you’re feeling adventurous.
57 |
58 |
59 |
CLI Email Sender Tool
60 |
61 |
62 | Write a CLI tool that takes in an email address, a subject, and your
63 | email body command line arguments. You could also have the email
64 | addresses or email content come from a file if you are feeling
65 | adventurous. The goal is to write a tool that uses a tool such as
66 | nodemailer to use your Gmail account to send out an email. Learning
67 | this will help you understand how to use third-party npm
68 | dependencies, how to read their documentation, how to use command
69 | line arguments, and a little bit more about how emails work, and
70 | it’s something you can at some point add to the business logic of
71 | your API when people register or forget their password.
72 |
73 |
74 |
CLI Hangman Game
75 |
76 |
77 | This is a fun project for beginners because it stresses your
78 | knowledge of how you can continuously read and wait for command line
79 | input from the user. You’ll also have to learn how to use the
80 | console log to print out designs and guessed letters to the console.
81 | You’ll need to keep track of which letters the user guessed and
82 | which ones they got correct. You can also take it to the next level
83 | by connecting to an API to fetch a random word that the user will
84 | have to guess. A simple game like this is great practice for various
85 | fundamental things you’ll encounter in the real world like arrays,
86 | looping, promises, API requests, console logging, etc.
87 |
88 |
89 |
Image Scaling CLI Tool
90 |
91 |
92 | This is a CLI tool that will take in a path to an image file and
93 | scale it down to various smaller device sizes which will allow you
94 | to make more performant websites. Some tools do this for us already,
95 | but learning how to make one yourself using graphicsmagick to load
96 | in images and scale them is good practice with learning how to use
97 | third-party machine dependencies you’d need to set up for node to
98 | invoke. To practice your node sdk skills, use the node’s exec_child
99 | commands to spawn up child processes that can invoke other command
100 | line tools installed on the machine. You’ll also need to learn how
101 | to write these images to the disk.
102 |
103 |
104 |
Conclusion
105 |
106 | I hope you try to implement these ideas because I do feel they are
107 | great practice. Stay in touch because I plan to make a small paid
108 | course for maybe $2-3 that might build some of these tools and walk
109 | you through how I’d do it.
110 |
111 |
112 |
Have a good day, and happy coding!
113 |
114 |
115 |
116 |
117 |
118 |
--------------------------------------------------------------------------------
/data/emails/feb5.txt:
--------------------------------------------------------------------------------
1 | 4 Great Node CLI Ideas to Practice Coding
2 |
3 | Many beginners are hyper-focused on learning react and building out user interfaces, but trying to build our command line tools is an alternative approach to solidify your knowledge with javascript, node, and asynchronous programming. CLI tools might sound simple, but they can easily get complex as well. You need to read from the user input using command line arguments, you need to run complex logic using that initial input, and you often ended to write to the disk or make API requests. By taking the focus away from the UI, you can focus more on the fundamentals of coding.
4 |
5 | I wanted to provide you with four intermediate CLI project ideas you can try building for yourself. I promise to try to build these tools yourself will make you an overall better problem solver and javascript developer, and the things learned WILL transfer over to the front-end side of web development.
6 |
7 | Converting a CSV file to JSON
8 |
9 | Doing file reading and writing is critical for all programming languages. Getting better at using node’s standard library for parsing files will help you understand asynchronous code and maybe even a little bit more about content types such as utf-8 or binary you’ll need to understand when writing and reading files. Next, you’ll need to figure out how to parse the CSV file after you read it, which you could do by googling around for an existing npm library or you could try to really stress your fundamental javascript knowledge by looping over every line in the CSV, splitting it by comma, and converting it to JSON objects. Finally, you’ll want to track all of those rows inside an array so that you can JSON.stringify the array out to a .json file. A lot to learn from a simple CLI tool. Add in support for command line arguments if you’re feeling adventurous.
10 |
11 |
12 | CLI Email Sender Tool
13 |
14 | Write a CLI tool that takes in an email address, a subject, and your email body command line arguments. You could also have the email addresses or email content come from a file if you are feeling adventurous. The goal is to write a tool that uses a tool such as nodemailer to use your Gmail account to send out an email. Learning this will help you understand how to use third-party npm dependencies, how to read their documentation, how to use command line arguments, and a little bit more about how emails work, and it’s something you can at some point add to the business logic of your API when people register or forget their password.
15 |
16 | CLI Hangman Game
17 |
18 | This is a fun project for beginners because it stresses your knowledge of how you can continuously read and wait for command line input from the user. You’ll also have to learn how to use the console log to print out designs and guessed letters to the console. You’ll need to keep track of which letters the user guessed and which ones they got correct. You can also take it to the next level by connecting to an API to fetch a random word that the user will have to guess. A simple game like this is great practice for various fundamental things you’ll encounter in the real world like arrays, looping, promises, API requests, console logging, etc.
19 |
20 | Image Scaling CLI Tool
21 |
22 | This is a CLI tool that will take in a path to an image file and scale it down to various smaller device sizes which will allow you to make more performant websites. Some tools do this for us already, but learning how to make one yourself using graphicsmagick to load in images and scale them is good practice with learning how to use third-party machine dependencies you’d need to set up for node to invoke. To practice your node sdk skills, use the node’s exec_child commands to spawn up child processes that can invoke other command line tools installed on the machine. You’ll also need to learn how to write these images to the disk.
23 |
24 |
25 | I hope you try to implement these ideas because I do feel they are great practice. Stay in touch because I plan to make a small paid course for maybe $2-3 that might build some of these tools and walk you through how I’d do it.
26 |
27 | Have a good day, and happy coding!
28 |
--------------------------------------------------------------------------------
/data/emails/jan29.mjml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
10 |
11 |
12 |
13 |
19 |
The First Email
20 |
21 | Since this is my first newsletter email, I want to start by saying
22 | thank you all so much for subscribing to my channel. I'm happy to
23 | know that my content has not only helped many of you learn to code
24 | but also some have said they have landed internships and jobs from
25 | watching my videos.
26 |
27 |
28 |
29 | So what is the purpose of this newsletter? To be honest, I don't
30 | know yet, but I plan to hopefully use it as another way to send you
31 | all updates on my channel, links to useful resources, maybe links to
32 | exclusive videos I may record, and also maybe some little tips and
33 | tricks related to coding or the tech stack I'm currently using
34 | (typescript, tailwind, next, react, etc).
35 |
36 |
37 | If you don't find this content useful, you can unsubscribe using the
38 | link at the bottom of this email, but I would ask you to give me
39 | some feedback if you think of ways I could provide more value to
40 | y'all using this newsletter.
41 |
42 |
43 |
What have I been up to?
44 |
45 |
46 | This week I've been focusing on building up my brand and trying to
47 | put more effort into marketing my channel. I set up a
48 | twitch channel
51 | channel which I've been multicast streaming to when I do my normal
52 | youtube streams, so be sure to follow if you like watching streams
53 | on twitch.
54 |
55 |
56 |
57 | As you already know, I recently changed my channel brand from Web
58 | Dev Junkie to Web Dev Cody. The main reason was I wanted to get my
59 | name in my channel and decided to do it before I got to 100k
60 | subscribers. Also, the word Junkie doesn't have the best connotation
61 | and isn't that respectful for people will real drug addiction
62 | issues.
63 |
64 |
65 |
66 | Another approach I'm taking to growing my brand is working on a
67 | personal website which I may use as a portfolio and maybe adding a
68 | blog where I can also publish some of these newsletter updates if
69 | that might be interesting to read for y'all.
70 |
71 |
72 |
My personal site using Astro
73 |
74 |
75 | I've been hearing some good things about Astro, so I decided to set
76 | up a personal website using Astro. I will be honest, I only created
77 | a single page with the Astro site, but overall I think this
78 | framework is easier to work with compared to Next.js. Don't get me
79 | wrong, next.js is a great framework, but it can be a little
80 | confusing to learn at first. If you're looking into a simple way to
81 | create statically generated sites, Astro might be your solution. It
82 | has the power to create minimal webpages that contain zero
83 | javascript unless you manually add in interactivity.
84 |
85 |
86 |
87 | I also decided to deploy this site using AWS Amplify. Amplify is
88 | another piece of technology I hear a lot about, and I use many AWS
89 | services at work so I figured I'd give it a try. Amplify isn't as
90 | user-friendly as something like vercel or railway, but it will build
91 | and deploy your next application to the CloudFront CDN which means
92 | your static files will load fast for your users. It's also really
93 | cheap to deploy using amplify.
94 |
95 |
96 |
97 | You can watch
98 |
102 | my video
103 |
104 | of me talking about how I hosted my astro site using AWS amplify the
105 | following video
106 |
107 |
111 |
116 |
117 |
118 |
119 |
Making my newsletter production ready
120 |
121 |
122 | I published two live streams this week where I worked on adding some
123 | integration and e2e cypress tests on my newsletter application.
124 |
125 |
126 |
127 | Learning how to write tests is critical for building quality
128 | software applications. When you're on a large team of engineers who
129 | are committing code multiple times daily, it is very easy to
130 | accidentally break a feature for your users. Some projects may have
131 | a dedicated QA team to review changes, but this can often cause
132 | slowdowns in your deployment process. Automated tests, written by
133 | the developers who add the features, intend to run similar checks
134 | against a local or deployed application to verify the correctness of
135 | the website.
136 |
137 |
138 |
139 | I use cypress at work since I find it easy to use, but there is also
140 | another testing framework called playwright which I hear great
141 | things about. I'll try to experiment with playwright testing when I
142 | get some time. For my integration and unit tests, I plan to use Jest
143 | since that is what I'm used to, but I also hear vitest is a very
144 | fast testing framework that might be worth transitioning to due to
145 | performance reasons.
146 |
147 |
148 |
149 | If you are interested in learning more about testing with jest or
150 | cypress, be sure to check out my
151 | first live stream.
156 |
186 | When you are first learning how to code, there are many challenges
187 | you will have to overcome. For example, there are new things I
188 | encountered while trying to build out this newsletter application.
189 | Styling HTML emails is very difficult, so thankfully I stumbled upon
190 | something called MJML which helps you write email templates that
191 | convert to HTML. A lot of the problems I encountered can be solved
192 | by following a simple approach of breaking the problem down into
193 | small problems.
194 |
195 |
196 |
197 | All software involves problem-solving. Some of the problems have
198 | been solved by others, but you'll still need to search google for
199 | those solutions and piece the puzzles together. Sometimes you'll run
200 | into problems you have to solve yourself. Overall, the only way to
201 | get great at coding is to practice solving more and more problems
202 | until most problems you encounter are ones you've solved in the
203 | past.
204 |
205 |
206 |
207 | Most larger problems are made up of smaller sub-problems. Check out
208 | the following
209 | video
214 | to get a better understanding of how to break down a problem
215 |
228 | For those who don't know, I've been trying to spend some time this
229 | week working on a dungeon crawler game with some other discord
230 | users. I've always wanted to finish one game, so I'm hoping this
231 | project can at least get to an MVP state where some subscribers can
232 | play and have some fun playing. The main focus I've been working on
233 | is the inventory system to allow users to pick up items, drop items,
234 | use items, and equip items. I plan to add in the ability for players
235 | to equip certain types of items this week, so stay tuned for an
236 | updated video related.
237 |
238 |
239 |
240 | To follow along with this project, be sure to check out my
241 | video
246 | where I start working on the inventory system
247 |
259 | That was a short update with the things I've been working on and
260 | just some random thoughts on the software. If you have feedback for
261 | me regarding this newsletter, feel free to join my discord and send
262 | me a message.
263 |
264 |
265 |
Have a good day and happy coding!
266 |
267 |
268 |
269 |
270 |
271 |
--------------------------------------------------------------------------------
/data/emails/jan29.txt:
--------------------------------------------------------------------------------
1 | The First Email
2 | Since this is my first newsletter email, I want to start by saying thank you all so much for subscribing to my channel. I'm happy to know that my content has not only helped many of you learn to code but also some have said they have landed internships and jobs from watching my videos.
3 |
4 | So what is the purpose of this newsletter? To be honest, I don't know yet, but I plan to hopefully use it as another way to send you all updates on my channel, links to useful resources, maybe links to exclusive videos I may record, and also maybe some little tips and tricks related to coding or the tech stack I'm currently using (typescript, tailwind, next, react, etc).
5 |
6 | If you don't find this content useful, you can unsubscribe using the link at the bottom of this email, but I would ask you to give me some feedback if you think of ways I could provide more value to y'all using this newsletter.
7 |
8 | What have I been up to?
9 | This week I've been focusing on building up my brand and trying to put more effort into marketing my channel. I set up a twitch channel channel which I've been multicast streaming to when I do my normal youtube streams, so be sure to follow if you like watching streams on twitch.
10 |
11 | As you already know, I recently changed my channel brand from Web Dev Junkie to Web Dev Cody. The main reason was I wanted to get my name in my channel and decided to do it before I got to 100k subscribers. Also, the word Junkie doesn't have the best connotation and isn't that respectful for people will real drug addiction issues.
12 |
13 | Another approach I'm taking to growing my brand is working on a personal website which I may use as a portfolio and maybe adding a blog where I can also publish some of these newsletter updates if that might be interesting to read for y'all.
14 |
15 | My personal site using Astro
16 | I've been hearing some good things about Astro, so I decided to set up a personal website using Astro. I will be honest, I only created a single page with the Astro site, but overall I think this framework is easier to work with compared to Next.js. Don't get me wrong, next.js is a great framework, but it can be a little confusing to learn at first. If you're looking into a simple way to create statically generated sites, Astro might be your solution. It has the power to create minimal webpages that contain zero javascript unless you manually add in interactivity.
17 |
18 | I also decided to deploy this site using AWS Amplify. Amplify is another piece of technology I hear a lot about, and I use many AWS services at work so I figured I'd give it a try. Amplify isn't as user-friendly as something like vercel or railway, but it will build and deploy your next application to the CloudFront CDN which means your static files will load fast for your users. It's also really cheap to deploy using amplify.
19 |
20 | You can watch my video of me talking about how I hosted my astro site using AWS amplify the following video
21 |
22 | Making my newsletter production ready
23 | I published two live streams this week where I worked on adding some integration and e2e cypress tests on my newsletter application.
24 |
25 | Learning how to write tests is critical for building quality software applications. When you're on a large team of engineers who are committing code multiple times daily, it is very easy to accidentally break a feature for your users. Some projects may have a dedicated QA team to review changes, but this can often cause slowdowns in your deployment process. Automated tests, written by the developers who add the features, intend to run similar checks against a local or deployed application to verify the correctness of the website.
26 |
27 | I use cypress at work since I find it easy to use, but there is also another testing framework called playwright which I hear great things about. I'll try to experiment with playwright testing when I get some time. For my integration and unit tests, I plan to use Jest since that is what I'm used to, but I also hear vitest is a very fast testing framework that might be worth transitioning to due to performance reasons.
28 |
29 | If you are interested in learning more about testing with jest or cypress, be sure to check out my first live stream.
30 |
31 |
32 | and second live stream.
33 |
34 |
35 | The Importance of Problem Solving
36 | When you are first learning how to code, there are many challenges you will have to overcome. For example, there are new things I encountered while trying to build out this newsletter application. Styling HTML emails is very difficult, so thankfully I stumbled upon something called MJML which helps you write email templates that convert to HTML. A lot of the problems I encountered can be solved by following a simple approach of breaking the problem down into small problems.
37 |
38 | All software involves problem-solving. Some of the problems have been solved by others, but you'll still need to search google for those solutions and piece the puzzles together. Sometimes you'll run into problems you have to solve yourself. Overall, the only way to get great at coding is to practice solving more and more problems until most problems you encounter are ones you've solved in the past.
39 |
40 | Most larger problems are made up of smaller sub-problems. Check out the following video to get a better understanding of how to break down a problem
41 |
42 |
43 | Our community Dungeon Crawler is coming along
44 | For those who don't know, I've been trying to spend some time this week working on a dungeon crawler game with some other discord users. I've always wanted to finish one game, so I'm hoping this project can at least get to an MVP state where some subscribers can play and have some fun playing. The main focus I've been working on is the inventory system to allow users to pick up items, drop items, use items, and equip items. I plan to add in the ability for players to equip certain types of items this week, so stay tuned for an updated video related.
45 |
46 | To follow along with this project, be sure to check out my video where I start working on the inventory system
47 |
48 |
49 | Stay tuned for updates
50 | That was a short update with the things I've been working on and just some random thoughts on the software. If you have feedback for me regarding this newsletter, feel free to join my discord and send me a message.
51 |
52 | Have a good day and happy coding!
--------------------------------------------------------------------------------
/data/emails/rating-html-tips.mjml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
Just Learn HTML and CSS!
11 |
12 |
So, you're new to web development and overwhelmed with how much there is to learn. Many people online regurgitate the same "just learn HTML and CSS." How much should you learn? When do you know you've learned enough before progressing to complex topics like vanilla javascript and front-end frameworks like React?
13 |
14 |
15 | My rule of thumb for when you know enough HTML and CSS is pretty simple: when you can look at many websites or even the widgets that make up the website and confidently state, "yeah, I can build this," then you're at the point where it's time to progress into more complex topics.
16 |
Why do I say this should be your goal? Well, when working as a professional web developer, you'll often work with graphic designers or user experience members who create design mock-ups or design proofs. Your job is to take these designs and convert them to code. The more efficient you can get at doing a task like this, the better you'll become as a front-end developer.
17 |
18 |
19 |
20 | A great way to improve with HTML and CSS is to follow this same pattern done in the industry by trying to replicate existing designs. Let's take this rating widget as an example below taken from frontendmentor.io:
21 |
22 |
23 |
24 |
25 |
26 |
27 |
This widget is pretty simple, but for a beginner, there are many new things you'll need to understand. How do you evenly space out buttons? How do I add hover effects on these buttons? How do I add a rounded gray background to images? How do I make a panel with rounded corners?
28 |
29 |
30 | Figuring out how to build these widgets usually always breaks down to knowing how to solve the smaller individual questions we talked about above. For example, the better you get at identifying you can use border-radius to round corners or make circles, creating this panel becomes less intimidating.
31 |
32 |
33 |
34 | Since this is a newsletter to help give tips related to web development, I might as well explain some of the css properties you can use to style this widget:
35 |
36 |
37 |
38 |
border-radius: 50% - a great way to make elements circle
39 |
border-radius: 20px - a way to round the edges on elements
40 |
:hover - a pseudo-class styling a elements on hover
41 |
:focus - a pseudo-class for changing the style of elements when focused
42 |
padding: 20px - add some internal padding to the element to move content away from the edges
43 |
background: blue - to make an elements background color blue
44 |
display: flex - a way to change the layout of children inside an container
45 |
justify-content: space-between - a way to add equal space between the children of the flex container
46 |
flex-direction: column - change the axis of the flex container to instead be verical
47 |
text-align: center - center all text and images in the center of the container
48 |
49 |
50 |
51 | Those are just a few of the css properties needed to build out this widget, but the point I'm trying to make is this: solve more problems. It'll help you improve at identifying which properties and pseudo-classes you can use style your widgets and webpages. The more things you build, the more of these properties you will commit to memory so that the next time you need to center an element or round a corner it'll be muscle memory.
52 |
53 | If you're interested in watching me implement this widget myself, be sure to checkout my youtube video and my channel webdevcody
54 |
55 |
56 |
57 |
58 |
59 |
--------------------------------------------------------------------------------
/data/emails/rating-html-tips.txt:
--------------------------------------------------------------------------------
1 | Just Learn HTML and CSS!
2 |
3 | So, you're new to web development and overwhelmed with how much there is to learn. Many people online regurgitate the same "just learn HTML and CSS." How much should you learn? When do you know you've learned enough before progressing to complex topics like vanilla javascript and front-end frameworks like React?
4 |
5 | My rule of thumb for when you know enough HTML and CSS is pretty simple: when you can look at many websites or even the widgets that make up the website and confidently state, "yeah, I can build this," then you're at the point where it's time to progress into more complex topics.
6 |
7 | Why do I say this should be your goal? Well, when working as a professional web developer, you'll often work with graphic designers or user experience members who create design mock-ups or design proofs. Your job is to take these designs and convert them to code. The more efficient you can get at doing a task like this, the better you'll become as a front-end developer.
8 |
9 | A great way to improve with HTML and CSS is to follow this same pattern done in the industry by trying to replicate existing designs. Let's take this rating widget as an example below taken from frontendmentor.io:
10 |
11 | This widget is pretty simple, but for a beginner, there are many new things you'll need to understand. How do you evenly space out buttons? How do I add hover effects on these buttons? How do I add a rounded gray background to images? How do I make a panel with rounded corners?
12 |
13 | Figuring out how to build these widgets usually always breaks down to knowing how to solve the smaller individual questions we talked about above. For example, the better you get at identifying you can use border-radius to round corners or make circles, creating this panel becomes less intimidating.
14 |
15 | Since this is a newsletter to help give tips related to web development, I might as well explain some of the css properties you can use to style this widget:
16 |
17 | border-radius: 50% - a great way to make elements circle
18 | border-radius: 20px - a way to round the edges on elements
19 | :hover - a pseudo-class styling a elements on hover
20 | :focus - a pseudo-class for changing the style of elements when focused
21 | padding: 20px - add some internal padding to the element to move content away from the edges
22 | background: blue - to make an elements background color blue
23 | display: flex - a way to change the layout of children inside an container
24 | justify-content: space-between - a way to add equal space between the children of the flex container
25 | flex-direction: column - change the axis of the flex container to instead be verical
26 | text-align: center - center all text and images in the center of the container
27 | Those are just a few of the css properties needed to build out this widget, but the point I'm trying to make is this: solve more problems. It'll help you improve at identifying which properties and pseudo-classes you can use style your widgets and webpages. The more things you build, the more of these properties you will commit to memory so that the next time you need to center an element or round a corner it'll be muscle memory.
28 |
29 | If you're interested in watching me implement this widget myself, be sure to checkout my youtube video: https://www.youtube.com/watch?v=mp1-HUjZE0o and my channel https://youtube.com/@webdevcody
--------------------------------------------------------------------------------
/data/emails/t3-course.mjml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
10 |
11 |
12 |
13 |
19 |
My T3 Stack Course
20 |
Hey subscribers!
21 |
22 |
23 | Those of you who have been watching my channel will know that one of
24 | the recent projects I've worked on was a full-stack SaaS that
25 | generated icons using artificial intelligence. I really enjoyed
26 | working on this side project and it uses many useful technologies
27 | that I feel others should learn if trying to become a web developer.
28 |
29 |
30 |
31 | As I mentioned in my channel, I've been working on a short course to
32 | help teach others how to build out a similar application that uses
33 | the same technologies that I used on my production-ready
34 | application.
35 |
36 |
37 |
38 | Well, great news! I've finally managed to finish my course that
39 | you're welcome to go purchase if learning the same technologies I
40 | used sounds interesting to you.
41 |
54 | As mentioned, the following technologies are used in this course.
55 |
56 |
57 |
58 |
T3 Stack
59 |
Typescript
60 |
Prisma
61 |
tRPC
62 |
Tailwind CSS
63 |
Next Auth
64 |
AWS S3
65 |
AWS Amplify
66 |
Dall-e API
67 |
Stripe
68 |
and probably more...
69 |
70 |
71 |
72 | The course contains 6 hours of content which is split up
73 | between 32 videos. I provide high level diagrams in the
74 | course to really help explain what we will build and how we will
75 | build it out. It has a 30 day return policy, so feel free to contact
76 | me if you are not happy with the course.
77 |
78 |
79 |
Who is this course made for?
80 |
81 |
82 | As mentioned on the course page, this course isn't for complete
83 | beginners. I expect you have some knowledge of using javascript and
84 | maybe understand how to create react components. Having some
85 | exposure to tailwind css might help as well. The way I teach this
86 | course is very similar to how I make my youtube videos, so please go
87 | watch some of my free T3 stack videos on my youtube channel to get
88 | an idea of the teaching style.
89 |
100 |
101 |
102 |
103 |
104 |
105 |
--------------------------------------------------------------------------------
/data/emails/t3-course.txt:
--------------------------------------------------------------------------------
1 | My T3 Stack Course
2 | Hey subscribers!
3 |
4 | Those of you who have been watching my channel will know that one of the recent projects I've worked on was a full-stack SaaS that generated icons using artificial intelligence. I really enjoyed working on this side project and it uses many useful technologies that I feel others should learn if trying to become a web developer.
5 |
6 | As I mentioned in my channel, I've been working on a short course to help teach others how to build out a similar application that uses the same technologies that I used on my production-ready application.
7 |
8 | Well, great news! I've finally managed to finish my course that you're welcome to go purchase if learning the same technologies I used sounds interesting to you.
9 |
10 | Here is the link to the course: https://1017897100294.gumroad.com/l/jipjfm
11 | . Be sure to use the following code of 9LX2QSM to get a 30% discount.
12 |
13 | What's Will You Learn?
14 |
15 | As mentioned, the following technologies are used in this course.
16 |
17 | T3 Stack
18 | Typescript
19 | Prisma
20 | tRPC
21 | Tailwind CSS
22 | Next Auth
23 | AWS S3
24 | AWS Amplify
25 | Dall-e API
26 | Stripe
27 | and probably more...
28 |
29 | The course contains6 hours of content which is split up between 32 videos. I provide high level diagrams in the course to really help explain what we will build and how we will build it out. It has a 30 day return policy, so feel free to contact me if you are not happy with the course.
30 |
31 | Who is this course made for?
32 |
33 | As mentioned on the course page, this course isn't for complete beginners. I expect you have some knowledge of using javascript and maybe understand how to create react components. Having some exposure to tailwind css might help as well. The way I teach this course is very similar to how I make my youtube videos, so please go watch some of my free T3 stack videos on my youtube channel to get an idea of the teaching style.
34 |
35 | Have a good day and happy coding!
--------------------------------------------------------------------------------
/data/emails/welcome.mjml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
10 |
11 |
12 |
13 |
19 |
20 | Welcome to the WebDevCody Newsletter!
21 |
22 |
23 |
24 | If you received this email, you're all set to get future emails when
25 | I publish weekly content updates, new courses, or useful learning
26 | materials.
27 |
28 |
29 |
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/data/emails/welcome.txt:
--------------------------------------------------------------------------------
1 | Thank you for subscribing to the WebDevCody Newsletter. Be on the lookout for updates in the future about my channel, tips and tricks on web development, links to useful learning resources, and more!
--------------------------------------------------------------------------------
/data/welcome.ts:
--------------------------------------------------------------------------------
1 | export const welcome = `
Welcome to the WebDevCody Newsletter!
If you received this email, you're all set to get future emails when I publish weekly content updates, new courses, or useful learning materials.
52 | Subscribe to the
53 | WebDevCody Newsletter
54 |
55 |
56 | Subscribe to my newsletter and receive weekly updates on any community
57 | projects we are starting, recently published videos, and updates on
58 | new tutorials and courses.
59 |