<?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: Glenn Paquette</title>
    <description>The latest articles on DEV Community by Glenn Paquette (@paqman85).</description>
    <link>https://dev.to/paqman85</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%2F128412%2F43bd433b-1b7f-42c6-aa34-236ee89c9f54.jpg</url>
      <title>DEV Community: Glenn Paquette</title>
      <link>https://dev.to/paqman85</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/paqman85"/>
    <language>en</language>
    <item>
      <title>Wagtail For Fun And Profit #2: Getting Started</title>
      <dc:creator>Glenn Paquette</dc:creator>
      <pubDate>Tue, 08 Dec 2020 21:13:03 +0000</pubDate>
      <link>https://dev.to/paqman85/wagtail-for-fun-and-profit-2-getting-started-1bhn</link>
      <guid>https://dev.to/paqman85/wagtail-for-fun-and-profit-2-getting-started-1bhn</guid>
      <description>&lt;h2&gt;
  
  
  What is Wagtail
&lt;/h2&gt;

&lt;p&gt;Wagtail is a CMS built on top of Python Django. It has a beautiful UI and some wonderful features such as streamfields, intelligent images (choose the focal point of images), built-in A/B testing, a robust API for headless architecture. In my opinion, it's the best CMS for Django out there today. I also believe that it can be a wonderfully profitable CMS for freelancers and agencies who are creating client websites.&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting Started
&lt;/h2&gt;

&lt;p&gt;Getting started in Wagtail can be both difficult and simple at the same time. Wagtail has some great documentation showing how to get started and how to use many of the python CMS's features. The problem that I see most new Wagtail developers run into is that there are no "instructions" to build a website. Wagtail provides web development tools, but not the plan. In this article, I'd like to share with you some ideas on how to create client websites on Wagtail.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Plan
&lt;/h2&gt;

&lt;p&gt;As mentioned above, the docs do not really give you a "plan" per se. So let's lay out it - what do you need to do to build a client website that you can sell.&lt;/p&gt;

&lt;p&gt;1) Plan the layout&lt;br&gt;
The first thing I like to do is to plan my general layout. Is the site full width? Will I need sliders? Testimonials? Animations? Multi-columns? Single page or multipage? You need to make those decisions and have a general idea of what you need build so that you know what kind of CSS/HTML you will need to implement in your templates.&lt;/p&gt;

&lt;p&gt;2) Select the right tools for the project&lt;br&gt;
Wagtail is a wonderful CMS on Django, but it is just a CMS. You'll need to bring in some additional tools if you want to make your development process easier. I like to use Bootstrap 5 or Bulma CSS on most projects. This gives me the prebuilt CSS grids, CSS classes, and general styling that I can use to build client sites faster. Both of these CSS libraries are flexible, I can overwrite and adapt the style easily. This is important since I do not want to learn new classes for styles every time I build a site - repeatability is good for profitability.&lt;/p&gt;

&lt;p&gt;3) Create Steamblocks&lt;br&gt;
I recommend building Wagtail sites with Steamblocks. These are smaller chunks of code that you can template and pull into the page builder as you need them. Kalob at &lt;a href="https://learnwagtail.com/"&gt;LearnWagtail.com&lt;/a&gt; has some great videos on how to implement this but here is the idea: Think of a section of the website that you need - let's start with the Hero section of the landing page. You'll need a full-width section, with a large image background, maybe an overlay, some text on the one side and a button below it. With Steamblocks, you can create this template of code - using wagtail tags for each variable (text content, images, section id, additional classes). These will be filled out in the wagtail backend, so the code will be reusable in other sections of the website. Can you see the power in doing things this way?&lt;/p&gt;

&lt;h2&gt;
  
  
  But What About Profit?
&lt;/h2&gt;

&lt;p&gt;Building client websites with reusable blocks of code, and common CSS libraries will lead to profit due to the ability to repeat your work. The next website can use the same code blocks, and you'll only need to code the sections which are different. Over time, you'll be coding less and less, and instead, be reusing work you've already done. This lets you create custom wagtail websites faster.&lt;/p&gt;

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

&lt;p&gt;Wagtail can be used to create a profitable business for freelance developers or agencies. It's a wonderful alternative to WordPress, for those of us who love working in Python and Django instead of PHP. The key to creating wonderful customer websites that are profitable is to build the website with a bit of planning - remember that any stream block you create can be used again in future pages of the site, or in future projects and by using a common CSS library like Bootstrap, Bulma, etc - you get more proficient and can adapt the styling of your work more quickly.&lt;/p&gt;

</description>
      <category>django</category>
      <category>wagtail</category>
      <category>cms</category>
      <category>freelance</category>
    </item>
    <item>
      <title>Wagtail For Fun and Profit #1: The Story So Far</title>
      <dc:creator>Glenn Paquette</dc:creator>
      <pubDate>Wed, 23 Sep 2020 17:12:53 +0000</pubDate>
      <link>https://dev.to/paqman85/wagtail-for-fun-and-profit-1-the-story-so-far-1l07</link>
      <guid>https://dev.to/paqman85/wagtail-for-fun-and-profit-1-the-story-so-far-1l07</guid>
      <description>&lt;h2&gt;
  
  
  What is Wagtail
&lt;/h2&gt;

&lt;p&gt;Wagtail is a CMS built on top of Python Django. It has a beautiful UI and some wonderful features such as streamfields, intelligent images (choose the focal point of images), built-in A/B testing, a robust API for headless architecture. In my opinion, it's the best CMS for Django out there today. &lt;/p&gt;

&lt;h2&gt;
  
  
  For fun and Profit?
&lt;/h2&gt;

&lt;p&gt;As a web developer, I create websites and web applications for my clients. Much of my work has revolved around WordPress sites over the years, and while I know that many people love WordPress and create wonderful sites with it, I've realized it's not the CMS for me. This realization has lead to my decision to stop creating new WordPress websites.&lt;/p&gt;

&lt;p&gt;This decision felt right, but I was left with some things to figure out:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;So do I just make static websites?

&lt;ul&gt;
&lt;li&gt;I could just focus on static websites, but is it the best choice? It won't be easy to sell to a client that has been in WordPress for years. They'll want something that has a similar CMS system.&lt;/li&gt;
&lt;li&gt;I prefer a hybrid approach, not 100% static code, but something in the middle, a templating system.&lt;/li&gt;
&lt;li&gt;Static websites won't be a solution that I can use for larger projects with business logic; I'll need a database and a backend for handling business logic.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;CMS

&lt;ul&gt;
&lt;li&gt;Some of my clients will still want a content management system&lt;/li&gt;
&lt;li&gt;It will need to look professional and well-made&lt;/li&gt;
&lt;li&gt;It would need to be flexible and adaptable to work with complex projects&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;What language or stacks do I want to work in?

&lt;ul&gt;
&lt;li&gt;I want to play to my strengths, which is in Python. &lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;And with these criteria in mind, my search for a new solution that can provide my clients with an easy to use content CMS, while being a better developer experience for me began. &lt;/p&gt;

&lt;p&gt;When I began testing Wagtail, I realized it was the ideal solution for me. It's a robust CMS, with the control placed with the developer. Clients get editor rights for content but have zero access to code and no "plugins" options that add 3rd party code or other code access to break the site. It's built on top of Django, with which I'm familiar. Wagtail checked all of my boxes! :D&lt;/p&gt;

&lt;h2&gt;
  
  
  But What About Profit?
&lt;/h2&gt;

&lt;p&gt;I made the decision to try to build clients' sites on Wagtail about a month ago. In that time, I convinced three clients to let me build their websites on Wagtail, and I'm trying a few different approaches on how to create sites for clients using Wagtail as the CMS.&lt;/p&gt;

&lt;p&gt;1) Static site with dynamic content:&lt;br&gt;
I created a working static website first; and then replaced all of the different text with Wagtail tags to populate that content through the CMS. The result is a custom-designed HTML website with dynamic content that the client can handle through the CMS - but only the text portions. So the structure and style stay static, but the text itself can be updated. I also added a few additional dynamic pieces to the site, a testimonial section where the client can add new testimonials from the cms, a working blog (blog posts are using the streamfield builder) to add new content and a "latest posts" section that auto-updates to show the latest three posts.&lt;/p&gt;

&lt;p&gt;This method only uses the streamfield content on blog posts. The other aspects of the site are mostly simple rich text inputs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pros:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The site is fast, beautiful, and the client loves it. &lt;/li&gt;
&lt;li&gt;I enjoyed coding it. &lt;/li&gt;
&lt;li&gt;The static nature of the site makes it pretty stable.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cons:&lt;/strong&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It's not very adaptable, consider that if the client wants changes to the site structure like add any new pages or new sections, I would need to edit the HTML templates directly.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;2) Leveraging Streamfields for Custom pages:&lt;/p&gt;

&lt;p&gt;One this second site, I took a different approach. I decided to use Bootstrap 5 Alpha as a CSS/JS framework and build out modulated sections that I would need on a few separate pages. So I focused on building the following sections: hero, testimonials, team, a FAQ with accordion dropdowns.&lt;/p&gt;

&lt;p&gt;Now that I have these done and working correctly, I decided to add them to Wagtail's streamfields builder as custom blocks. This gives me the ability to reuse the code wherever I like and add in the text components, ids and classes through the cms. &lt;/p&gt;

&lt;p&gt;This is powerful. Wagtail has basically given me the tools to create my own component library. And every client project I build can add to this "component library" and make the next site easier/faster to code. All of these components can be styled by assigning a unique id or class, just as you would typically do - but that code structure can stay the same through each project. And it's all in Python and simple HTML. As I'm writing this article, I'm currently still developing this website. So far, It's been more manageable than the first wagtail site -  this approach gives more flexibility and makes the HTML templating easier.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pros:&lt;/strong&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Easier to build, reusable components, good developer experience.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cons:&lt;/strong&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;To create a true "Page Builder" with streamfields ends up giving the user a complex feel to the on the CMS page editor. Focusing instead on using custom blocks for any complex section is better, but adds to the initial workload.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;3) Headless CMS to Vue.js:&lt;/p&gt;

&lt;p&gt;This will be my next client project, slotted to start next week. I'll be using the Wagtail CMS as the client admin section for a vue.js landing page and intake form. The Vue frontend will provide that beautiful user experience while my Django/Wagtail backend will handle the business logic and my client's admin interface. I'm excited to get this one going and will make a post in the future on how to build this kind of application.&lt;/p&gt;

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

&lt;p&gt;My goal for this article was to document my thought process and journey migrating from working with WordPress to Wagtail, and how I've made that fit into my business. It was successful for me; in the sense that my clients are still happy and I have profited financially from using Wagtail as a CMS for my clients. Will this work for everyone? of course not, but for those who don't want to work with WordPress, but feel stuck - there are some great options for you; you simply need to have the courage to look and try new things. If you like working in Python, be sure to give Wagail a try, but if you don't, there are plenty of other options out there!&lt;/p&gt;

</description>
      <category>django</category>
      <category>codenewbie</category>
      <category>python</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Wordpress Sucks. Let's Switch to Static Site Generators!</title>
      <dc:creator>Glenn Paquette</dc:creator>
      <pubDate>Wed, 27 May 2020 14:26:30 +0000</pubDate>
      <link>https://dev.to/paqman85/wordpress-sucks-let-s-switch-to-static-site-generators-1in8</link>
      <guid>https://dev.to/paqman85/wordpress-sucks-let-s-switch-to-static-site-generators-1in8</guid>
      <description>&lt;h2&gt;
  
  
  What's All This Fuss About Static Site Generators?
&lt;/h2&gt;

&lt;p&gt;As a web developer, it has been impossible not to notice all of the excitement on the internet around static site generators and JAMStack. Static Site Generators are used to create static sites, usually by leveraging a templating engine, which allows the developer to create site content quickly in formats like markdown. Some of the benefits of these types of websites in production are that they're incredibly fast, and can be served by CDN's instead of traditional servers, which means little to no hosting costs.&lt;/p&gt;

&lt;p&gt;So to sum up, we can update the content faster; the site itself performs faster, and the costs are lower.&lt;/p&gt;

&lt;h2&gt;
  
  
  But Clients Want Wordpress! Right?
&lt;/h2&gt;

&lt;p&gt;As a freelance web developer, most of my work revolves around WordPress websites. I'm not much of a fan of WordPress, but almost all small business clients I meet, want or have a WordPress website. When I ask them why they chose WordPress, the answers usually boil down to "I want to be able to update the website myself." Well, the reality is that out of the 40 clients I've worked with during the last couple of years, not a single one does their own updates.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--tuJdbKzp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/6g5k39f8dka17hn008rv.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--tuJdbKzp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/6g5k39f8dka17hn008rv.gif" alt="Alt Text"&gt;&lt;/a&gt;&lt;br&gt;
Wordpress is &lt;em&gt;slooooowww&lt;/em&gt;. Wordpress is &lt;strong&gt;bulky&lt;/strong&gt;. I want out!&lt;/p&gt;

&lt;p&gt;And then I read this post.&lt;/p&gt;


&lt;div class="ltag__link"&gt;
  &lt;div class="ltag__link__content"&gt;
    &lt;div class="missing"&gt;
      &lt;h2&gt;Article No Longer Available&lt;/h2&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;OMG, he's right. Clients hardly care about how I make the website, they just come to me yelling "WORDPRESS" because they don't know of anything else. It's just a buzz word to them. Plus, he managed to drop Wordpress for static site generators on these simple sites. AMAZING!&lt;/p&gt;

&lt;h2&gt;
  
  
  The Idea
&lt;/h2&gt;

&lt;p&gt;What if I started making the sites with a static site generator? The updates would be faster. I wouldn't have to mess around with servers and hosting anymore. The site is static, so no more Wordpress updates, plugin updates, etc. I could keep things simple ... wait... &lt;em&gt;NO MORE WORDPRESS PUGINS AND PHP?!?!?&lt;/em&gt; Sign me up. &lt;/p&gt;

&lt;h2&gt;
  
  
  The Plan
&lt;/h2&gt;

&lt;p&gt;So the concept is there - I should be able to create simple business and professional "brochure" sites with a static site generator. So no e-commerce or anything that needs dynamic logic, but more the simple "hey, this is what we do, please contact us" kind of websites.&lt;br&gt;
There are still a few problems to sort out.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;I don't know how to use a static site generator. I don't even know which one I want to use.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;I still have to convince my clients to let go of Wordpress.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;I need to show some portfolio projects built with static site generators.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I plan to crush all of these problems at once. I can learn how to use static site generators, and I can create portfolio projects simultaneously. I'll try out several different static site generators, and the sites I build I can use as part of my portfolio to show clients that A) &lt;em&gt;I can do nice work&lt;/em&gt;, &amp;amp;  B) &lt;em&gt;Performance difference between a Wordpress site and Static Site&lt;/em&gt;. I think once I breakdown the cost difference just in maintenance (hosting, updating, de-bugging Wordpress vs Static Site) -- convincing my small business clients &lt;em&gt;may&lt;/em&gt; not be too difficult.&lt;/p&gt;

&lt;h2&gt;
  
  
  So What's Next?
&lt;/h2&gt;

&lt;p&gt;Well, I'll be doing a bit of research and choose 3-5 different options for static site generators to try out. Once I've built a website with each of them - I'll do a head to head comparison and I'll make a choice to stick with for client work. &lt;/p&gt;

&lt;p&gt;I'd love some recommendations on where to start and which to try, &lt;strong&gt;please leave your suggestions for best static site generators below!&lt;/strong&gt; I will be writing about my experience with each one and posting it here on Dev.to as part of a series.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>codenewbie</category>
      <category>webdev</category>
      <category>freelance</category>
    </item>
    <item>
      <title>Monitoring Celery on Heroku with Flower</title>
      <dc:creator>Glenn Paquette</dc:creator>
      <pubDate>Tue, 26 May 2020 04:38:57 +0000</pubDate>
      <link>https://dev.to/paqman85/monitoring-celery-on-heroku-with-flower-2je8</link>
      <guid>https://dev.to/paqman85/monitoring-celery-on-heroku-with-flower-2je8</guid>
      <description>&lt;h2&gt;
  
  
  The Setting
&lt;/h2&gt;

&lt;p&gt;I built a small Django application for a client and launched it on Heroku. It takes posted data from a legacy application that the client is using for inventory management and sends it to their Shopify E-commerce store to keep everything in sync. To keep things running smoothly, I included a Celery worker to have a queue in place and speed up the post calls.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;When it came time to test that all was working as it should in production - I realize that Celery's monitoring add-on -- Flower -- will not function on the same Heroku instance... which is unfortunate.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Idea
&lt;/h2&gt;

&lt;p&gt;Heroku has a generous free tier -- I thought I could launch Flower on a separate free Heroku instance and connect the Redis broker URL from the Django application.&lt;/p&gt;

&lt;p&gt;In my search on Heroku and Github - I did not find a working solution for my situation. While there are a few Flower &amp;amp; Heroku setups, they all had bugs that crashed the application on deployment or simply had vague instructions.&lt;/p&gt;

&lt;p&gt;I managed to write a simple solution that worked perfectly for my project. Since I have been thinking of how to contribute to open source lately, so I thought I'd re-write my Heroku-Flower project and share it with the world.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Solution
&lt;/h2&gt;

&lt;p&gt;All in all, launching Flower to monitor your Celery worker on Heroku is simple. Flower can be installed by pip; it simply needs to be included on your &lt;em&gt;requirements.txt&lt;/em&gt; file. &lt;/p&gt;

&lt;p&gt;The tricky part comes in when you need to adapt the Flower app to your own needs. Does your Celery instance run on RabbitMQ or Redis? Do you need persistent storage? What about authentication?&lt;/p&gt;

&lt;p&gt;Here's the solution for you -- &lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vJ70wriM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/github-logo-ba8488d21cd8ee1fee097b8410db9deaa41d0ca30b004c0c63de0a479114156f.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/paqman85"&gt;
        paqman85
      &lt;/a&gt; / &lt;a href="https://github.com/paqman85/simple-celery-flower-on-heroku"&gt;
        simple-celery-flower-on-heroku
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      A simple Celery Flower project to use on Heroku with Redis.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
Monitoring Celery with Flower on Heroku&lt;/h1&gt;
&lt;p&gt;&lt;a href="https://flower.readthedocs.io/en/latest/" rel="nofollow"&gt;Flower&lt;/a&gt; is a great tool for monitoring &lt;a href="https://docs.celeryproject.org/en/stable/django/first-steps-with-django.html" rel="nofollow"&gt;Celery&lt;/a&gt; processes but sadly cannot be deployed in the same instance as your primary &lt;a href="https://heroku.com" rel="nofollow"&gt;Heroku application&lt;/a&gt;. A simple solution is to run Flower on a seperate Heroku instance. This simple project will launch Flower with Redis to monitor your Celery processes from another project.&lt;/p&gt;
&lt;p&gt;It's so simple, we can do it in only a few easy steps:&lt;/p&gt;
&lt;h2&gt;
Step 1 - Get the code!&lt;/h2&gt;
&lt;p&gt;Clone this repo!&lt;/p&gt;
&lt;p&gt;&lt;code&gt;git clone https://gihub.com/paqman85/simple-celery-flower-on-heroku.git&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;
Step 2 - Give it a home! Create a new Heroku application&lt;/h2&gt;
&lt;p&gt;Create a Heroku app for Flower:&lt;/p&gt;
&lt;h3&gt;
On the command line:&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Login to Herku:&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;code&gt;heroku login&lt;/code&gt;&lt;/p&gt;
&lt;ol start="2"&gt;
&lt;li&gt;Create a new app for Flower:&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;code&gt;heroku create YOUR-DESIRED-APP-NAME-HERE&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;
On Heroku's website&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Login to your Heroku account&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Create a new application instance from your dashboard&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;
Step 3 - Make the Roots! Set your Broker url.&lt;/h2&gt;
&lt;p&gt;Flower needs to conenct to…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/paqman85/simple-celery-flower-on-heroku"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;It has everything you need to launch a Flower Celery monitor on Heroku, with a Redis broker and basic authentication. I also did my best to cover every step of how to launch on Heroku, so it's beginner-friendly.&lt;/p&gt;

</description>
      <category>django</category>
      <category>beginners</category>
      <category>devops</category>
    </item>
    <item>
      <title>TxtJokes - A Twilio Hackathon project</title>
      <dc:creator>Glenn Paquette</dc:creator>
      <pubDate>Thu, 23 Apr 2020 19:05:11 +0000</pubDate>
      <link>https://dev.to/paqman85/txtjokes-a-twilio-hackathon-project-4d92</link>
      <guid>https://dev.to/paqman85/txtjokes-a-twilio-hackathon-project-4d92</guid>
      <description>&lt;p&gt;Let's be honest, the world is a pretty lonely and sad place for most of us during the COVID-19 pandemic. Self-isolation sucks, Quarantines suck, etc. I thought it would be fun to get a few laughs while creating a project for the #twiliohackathon&lt;/p&gt;

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

&lt;p&gt;&lt;a href="txtjokes.herokuapp.com"&gt;txtjokes.herokuapp.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Send nerdy jokes by SMS. Just create an account, login, and put in your number and get a joke text on your phone!&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo Link
&lt;/h2&gt;

&lt;p&gt;&lt;a href="txtjokes.herokuapp.com"&gt;txtjokes.herokuapp.com&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Link to Code
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/paqman85/txtjokes"&gt;https://github.com/paqman85/txtjokes&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How I built it (what's the stack? did I run into issues or discover something new along the way?)
&lt;/h2&gt;

&lt;p&gt;I built this project using Django as my backend and the built-in templating engine paired with a bootstrap 4 template (&lt;a href="https://bootswatch.com/minty/"&gt;bootswatch minty&lt;/a&gt;) as a stylish front end.&lt;/p&gt;

&lt;p&gt;I'm using several libraries in this build: &lt;a href="https://www.twilio.com/docs/libraries/python"&gt;Twilio's python package&lt;/a&gt; to facilitate sending SMS, &lt;a href=""&gt;Pyjokes&lt;/a&gt; as a joke library, Docker, Pipenv, and the demo is running on Heroku.&lt;/p&gt;

&lt;p&gt;I ran into several issues that had me pulling out some hair. Dealing with phone numbers in a Django form and converting the input into a usable number for Twilio was a bit of a hurdle. I found &lt;a href="https://github.com/stefanfoulis/django-phonenumber-field"&gt;Django-Phonenumber-Field&lt;/a&gt;; which uses Google's phone number library. I was able to leverage this package to help parse the input into the right format for Twilio.&lt;/p&gt;

&lt;p&gt;I added user registration and forced the user to be logged in to send SMS msgs.&lt;/p&gt;

&lt;p&gt;Email transactions for authentication are sent via &lt;a href="https://www.twilio.com/sendgrid&amp;gt;Twilio%20SendGrid&amp;lt;/a&amp;gt;%20-%20using%20their%20API%20and%20the%20&amp;lt;a%20href="&gt;SendGrid-Django package&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Additional Resources/Info
&lt;/h2&gt;

&lt;p&gt;Find the app live at &lt;a href="txtjokes.heroku.com"&gt;txtjokes.heroku.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This project was a fun one day build. I found Twilio's tech and docs pretty user friendly for python.&lt;/p&gt;

&lt;h3&gt;
  
  
  I have ideas to expand the project:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Txt counter to show how many jokes were sent.&lt;/li&gt;
&lt;li&gt;Notification bubble to show the joke sent&lt;/li&gt;
&lt;li&gt;Expanding joke library&lt;/li&gt;
&lt;li&gt;Subscription service for daily jokes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And I also think that this project would be a great base for many spin-off ideas such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Daily motivation messenger (Don't give up!)&lt;/li&gt;
&lt;li&gt;Reminder service ("Don't forget the milk" - texted as you finish your workday)&lt;/li&gt;
&lt;li&gt;COVID-19 daily info msgs (Daily stats send in brief to your phone)&lt;/li&gt;
&lt;li&gt;Daily Gifs -- Combine this service with Giphy API&lt;/li&gt;
&lt;li&gt;Anonymous SMS service&lt;/li&gt;
&lt;li&gt;Daily riddles (24 hours to solve before the answer is sent)&lt;/li&gt;
&lt;li&gt;Chess by SMS - learn to play blind chess with notations&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If I get a lull in dev work, I'll be sure to pick one of these great projects to expand on Twilio's tech - I especially love the chess one. :D&lt;/p&gt;

&lt;p&gt;You can find me typically lurking here on Dev, or &lt;a href="https://atomicgrowth.co"&gt;developing web applications&lt;/a&gt; for money! I love working with &lt;a href="https://www.djangoproject.com/"&gt;Django&lt;/a&gt;. Currently also learning some &lt;a href="https://nim-lang.org/"&gt;Nim&lt;/a&gt;. Always happy to make new friends, collaborate, and talk shop. &lt;/p&gt;

</description>
      <category>twiliohackathon</category>
      <category>django</category>
      <category>python</category>
    </item>
  </channel>
</rss>
