<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[J Lyons]]></title><description><![CDATA[Web developer and Python expert with a penchant for 3D design]]></description><link>https://jlyons.me/</link><image><url>https://jlyons.me/favicon.png</url><title>J Lyons</title><link>https://jlyons.me/</link></image><generator>Ghost 1.24</generator><lastBuildDate>Wed, 08 Apr 2026 10:44:13 GMT</lastBuildDate><atom:link href="https://jlyons.me/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[NILX]]></title><description><![CDATA[<div class="kg-card-markdown"><p>The recently founded <a href="http://www.nilx.com">NILX Management Group</a> recruited me as a developer to construct their online presence and tech stack for overseeing nationwide NIL athletes and contracts, including landing pages, custom CRM, athlete recruiting profiles, etc.  I custom built sleek, modern, dynamic UIs in ReactJS and accompanying Python backend. Through test</p></div>]]></description><link>https://jlyons.me/2024/07/22/nilx/</link><guid isPermaLink="false">669ed591aa4813001e79d378</guid><dc:creator><![CDATA[J Lyons]]></dc:creator><pubDate>Mon, 22 Jul 2024 21:58:28 GMT</pubDate><media:content url="https://s3-us-east-2.amazonaws.com/jlyons-blog/2024/07/Untitled-4.png" medium="image"/><content:encoded><![CDATA[<div class="kg-card-markdown"><img src="https://s3-us-east-2.amazonaws.com/jlyons-blog/2024/07/Untitled-4.png" alt="NILX"><p>The recently founded <a href="http://www.nilx.com">NILX Management Group</a> recruited me as a developer to construct their online presence and tech stack for overseeing nationwide NIL athletes and contracts, including landing pages, custom CRM, athlete recruiting profiles, etc.  I custom built sleek, modern, dynamic UIs in ReactJS and accompanying Python backend. Through test driven development I was able to prototype, develop, and publish this feature-rich custom CRM in exceptional turnaround time.</p>
</div>]]></content:encoded></item><item><title><![CDATA[OppText]]></title><description><![CDATA[<div class="kg-card-markdown"><p>OppText is an automated and optomized SMS communication platform for medical offices. Build your clean and consice content in our editor and send it to a your clients. Get important updates as they progress through your content. Use an OppText landing page to handle opt-ins and consent. Enter appointment times</p></div>]]></description><link>https://jlyons.me/2023/09/08/opptext/</link><guid isPermaLink="false">64fb80b44165ad001e0e895d</guid><category><![CDATA[Portfolio]]></category><category><![CDATA[web development]]></category><category><![CDATA[python]]></category><category><![CDATA[NodeJS]]></category><dc:creator><![CDATA[J Lyons]]></dc:creator><pubDate>Fri, 08 Sep 2023 20:20:01 GMT</pubDate><media:content url="https://s3-us-east-2.amazonaws.com/jlyons-blog/2024/07/Untitled-1.png" medium="image"/><content:encoded><![CDATA[<div class="kg-card-markdown"><img src="https://s3-us-east-2.amazonaws.com/jlyons-blog/2024/07/Untitled-1.png" alt="OppText"><p>OppText is an automated and optomized SMS communication platform for medical offices. Build your clean and consice content in our editor and send it to a your clients. Get important updates as they progress through your content. Use an OppText landing page to handle opt-ins and consent. Enter appointment times and OppText will automatically schedule out your pre-configured content right when they need it. Send out reminders to ensure preparations for their important, or post-appointment notifications to remind them how to handle their after care.</p>
<h3 id="tools">Tools</h3>
<ul>
<li>Frontend: ReactJS, Node, StorybookJS, AWS Amplify</li>
<li>Backend: Python-Flask, PostgreSQL, Docker, AWS Elastic Beanstalk</li>
<li>Async Task Server: Python, Docker, Systemctl, AWS EC2</li>
</ul>
<h3 id="images">Images</h3>
<p><img src="https://s3-us-east-2.amazonaws.com/jlyons-blog/2023/09/DashboardOT.png" alt="OppText"><br>
<img src="https://s3-us-east-2.amazonaws.com/jlyons-blog/2024/07/Untitled.png" alt="OppText"><br>
<img src="https://s3-us-east-2.amazonaws.com/jlyons-blog/2024/07/Untitled-5.png" alt="OppText"></p>
</div>]]></content:encoded></item><item><title><![CDATA[WhistlePitch]]></title><description><![CDATA[<div class="kg-card-markdown"><p>WhistlePitch is an automated and optomized elevator pitch platform. Build your clean and consice pitch in our editor and send it to a potential lead. Get text or email updates and they progress through your pitch. Connect your calendar for automated scheduling of follow up calls. Currently under construction and</p></div>]]></description><link>https://jlyons.me/2019/12/18/whistlepitch/</link><guid isPermaLink="false">5dfa6ddb7d2b360020582d77</guid><category><![CDATA[Portfolio]]></category><category><![CDATA[web development]]></category><category><![CDATA[python]]></category><category><![CDATA[bootstrap]]></category><dc:creator><![CDATA[J Lyons]]></dc:creator><pubDate>Wed, 18 Dec 2019 18:26:13 GMT</pubDate><media:content url="https://s3-us-east-2.amazonaws.com/jlyons-blog/2019/12/overview-1.png" medium="image"/><content:encoded><![CDATA[<div class="kg-card-markdown"><img src="https://s3-us-east-2.amazonaws.com/jlyons-blog/2019/12/overview-1.png" alt="WhistlePitch"><p>WhistlePitch is an automated and optomized elevator pitch platform. Build your clean and consice pitch in our editor and send it to a potential lead. Get text or email updates and they progress through your pitch. Connect your calendar for automated scheduling of follow up calls. Currently under construction and launching mid-January!</p>
<h3 id="tools">Tools</h3>
<p>Built with a Python Flask backend with a PostgreSQL database, HTML, Bootstrap 4, jQuery frontend. Integrated with Twilio for text updates and text pitches.</p>
<h3 id="images">Images</h3>
<p><img src="https://s3-us-east-2.amazonaws.com/jlyons-blog/2019/12/crm.png" alt="WhistlePitch"><br>
<img src="https://s3-us-east-2.amazonaws.com/jlyons-blog/2019/12/scheduler.png" alt="WhistlePitch"><br>
<img src="https://s3-us-east-2.amazonaws.com/jlyons-blog/2019/12/pitchee.png" alt="WhistlePitch"><br>
<img src="https://s3-us-east-2.amazonaws.com/jlyons-blog/2019/12/moverview.png#small" alt="WhistlePitch"><br>
<img src="https://s3-us-east-2.amazonaws.com/jlyons-blog/2019/12/meditor.png#small" alt="WhistlePitch"><br>
<img src="https://s3-us-east-2.amazonaws.com/jlyons-blog/2019/12/mpitchee.png#small" alt="WhistlePitch"></p>
</div>]]></content:encoded></item><item><title><![CDATA[DistroTeam]]></title><description><![CDATA[<div class="kg-card-markdown"><p>DistroTeam connects musicians to Instagram influencers for marketing and audience building. Musicians select influencers that match their music and pay them to post a promotional clip to their Story. The site is built with the Python Flask library, Bootstrap 4, and jQuery. The app for influencers is cross-platform compatible, built</p></div>]]></description><link>https://jlyons.me/2019/12/18/distroteam/</link><guid isPermaLink="false">5dfa64137d2b360020582d70</guid><category><![CDATA[Portfolio]]></category><category><![CDATA[web development]]></category><category><![CDATA[python]]></category><category><![CDATA[bootstrap]]></category><category><![CDATA[Mobile]]></category><dc:creator><![CDATA[J Lyons]]></dc:creator><pubDate>Wed, 18 Dec 2019 17:43:47 GMT</pubDate><media:content url="https://s3-us-east-2.amazonaws.com/jlyons-blog/2019/12/android_feature.png" medium="image"/><content:encoded><![CDATA[<div class="kg-card-markdown"><img src="https://s3-us-east-2.amazonaws.com/jlyons-blog/2019/12/android_feature.png" alt="DistroTeam"><p>DistroTeam connects musicians to Instagram influencers for marketing and audience building. Musicians select influencers that match their music and pay them to post a promotional clip to their Story. The site is built with the Python Flask library, Bootstrap 4, and jQuery. The app for influencers is cross-platform compatible, built in React Native/Expo.</p>
<h3 id="images">Images</h3>
<p><img src="https://s3-us-east-2.amazonaws.com/jlyons-blog/2019/12/Annotation-2019-12-18-104212.png" alt="DistroTeam"><br>
<img src="https://s3-us-east-2.amazonaws.com/jlyons-blog/2019/12/iphonex1.png#small" alt="DistroTeam"><br>
<img src="https://s3-us-east-2.amazonaws.com/jlyons-blog/2019/12/iphonex2.png#small" alt="DistroTeam"><br>
<img src="https://s3-us-east-2.amazonaws.com/jlyons-blog/2019/12/iphonex3.png#small" alt="DistroTeam"></p>
</div>]]></content:encoded></item><item><title><![CDATA[Gessi]]></title><description><![CDATA[<div class="kg-card-markdown"><p>Gessi is a business management and optimization tool. It's LMS meets Onboarding meets automated management that streamlines all of your document retrieval, information distributions and requests, and more, to all your customers or employees. Recently finished our first round of beta testers and are closed to new accounts while we</p></div>]]></description><link>https://jlyons.me/2019/12/18/gessi/</link><guid isPermaLink="false">5dfa61697d2b360020582d69</guid><category><![CDATA[Portfolio]]></category><category><![CDATA[web development]]></category><category><![CDATA[python]]></category><category><![CDATA[bootstrap]]></category><category><![CDATA[Mobile]]></category><dc:creator><![CDATA[J Lyons]]></dc:creator><pubDate>Wed, 18 Dec 2019 17:32:23 GMT</pubDate><media:content url="https://s3-us-east-2.amazonaws.com/jlyons-blog/2019/12/Annotation-2019-12-18-103139.png" medium="image"/><content:encoded><![CDATA[<div class="kg-card-markdown"><img src="https://s3-us-east-2.amazonaws.com/jlyons-blog/2019/12/Annotation-2019-12-18-103139.png" alt="Gessi"><p>Gessi is a business management and optimization tool. It's LMS meets Onboarding meets automated management that streamlines all of your document retrieval, information distributions and requests, and more, to all your customers or employees. Recently finished our first round of beta testers and are closed to new accounts while we finish implementing the feedback! In the meantime, check out our <a href="https://www.meetgessi.com/">landing page</a> for more information.</p>
<h3 id="tools">Tools</h3>
<p>As CTO I built the site with a Python Flask backend and HTML frontend with custom stylesheets and significant jQuery tools. We also built an app for employees and customers to complete workflows. This app was built in React Native with the Expo framework, optimized for cross-platform support and published to both the Apple App Store and the Google Play Store.</p>
<h3 id="images">Images</h3>
<p><img src="https://s3-us-east-2.amazonaws.com/jlyons-blog/2019/12/landing-image.png" alt="Gessi"><br>
<img src="https://s3-us-east-2.amazonaws.com/jlyons-blog/2019/12/manage_shot.png" alt="Gessi"><br>
<img src="https://s3-us-east-2.amazonaws.com/jlyons-blog/2019/12/report_shot.png" alt="Gessi"></p>
</div>]]></content:encoded></item><item><title><![CDATA[Pass 360]]></title><description><![CDATA[<div class="kg-card-markdown"><p>As CTO of <a href="https://home.passthreesixty.com">Pass 360</a> I've developed and maintained a cross-platform app build with Expo and React Native as well as a VueJS landing page and Python-Flask backend/API. Available on <a href="https://apps.apple.com/us/app/pass-360/id1363599130">iOS</a> and <a href="https://play.google.com/store/apps/details?id=com.grubpass.crown&amp;hl=en_US">Android.</a></p>
<h1 id="images">Images</h1>
<p><img src="https://home.passthreesixty.com/static/img/how_to_redeem.svg" alt="IMG_5476"></p>
</div>]]></description><link>https://jlyons.me/2019/03/27/pass360/</link><guid isPermaLink="false">5c9ba46a89a9100020eb65ec</guid><category><![CDATA[Portfolio]]></category><category><![CDATA[NodeJS]]></category><category><![CDATA[Mobile]]></category><dc:creator><![CDATA[J Lyons]]></dc:creator><pubDate>Wed, 27 Mar 2019 16:34:48 GMT</pubDate><media:content url="https://s3-us-east-2.amazonaws.com/jlyons-blog/2024/07/android_Banner.png" medium="image"/><content:encoded><![CDATA[<div class="kg-card-markdown"><img src="https://s3-us-east-2.amazonaws.com/jlyons-blog/2024/07/android_Banner.png" alt="Pass 360"><p>As CTO of <a href="https://home.passthreesixty.com">Pass 360</a> I've developed and maintained a cross-platform app build with Expo and React Native as well as a VueJS landing page and Python-Flask backend/API. Available on <a href="https://apps.apple.com/us/app/pass-360/id1363599130">iOS</a> and <a href="https://play.google.com/store/apps/details?id=com.grubpass.crown&amp;hl=en_US">Android.</a></p>
<h1 id="images">Images</h1>
<p><img src="https://home.passthreesixty.com/static/img/how_to_redeem.svg" alt="Pass 360"></p>
</div>]]></content:encoded></item><item><title><![CDATA[DNS Management System]]></title><description><![CDATA[<div class="kg-card-markdown"><p>My client needed an integration between phpIPAM and DNSMasq for easier DNS management. I created a watcher that noticed any changes in the phpIPAM database, formatted these changes for DNSMasq syntax, and pushed them to any registered agents. The system was made to maximize security, speed, and ease of scale.</p></div>]]></description><link>https://jlyons.me/2018/07/06/dns-management-system/</link><guid isPermaLink="false">5b400192e74b9b002053ce37</guid><category><![CDATA[web development]]></category><category><![CDATA[Portfolio]]></category><category><![CDATA[python]]></category><dc:creator><![CDATA[J Lyons]]></dc:creator><pubDate>Fri, 06 Jul 2018 23:57:36 GMT</pubDate><media:content url="https://s3-us-east-2.amazonaws.com/jlyons-blog/2018/07/copycat_home-1.png" medium="image"/><content:encoded><![CDATA[<div class="kg-card-markdown"><img src="https://s3-us-east-2.amazonaws.com/jlyons-blog/2018/07/copycat_home-1.png" alt="DNS Management System"><p>My client needed an integration between phpIPAM and DNSMasq for easier DNS management. I created a watcher that noticed any changes in the phpIPAM database, formatted these changes for DNSMasq syntax, and pushed them to any registered agents. The system was made to maximize security, speed, and ease of scale. A new agent could be spun up in a matter of seconds with a simple install script and an encrypted and secured method of self-registration with the watcher. The system could handle a database with hundreds of thousands of records in just a few seconds (with more common use cases requiring the management of only a few thousand records updates were virtually instant).<br>
A system of filtering records to different agents was also added. This allowed multiple networks to run agents against the same watcher and not create conflicting records. Ultimately, a web interface was created to allow even easier management of agents and filters</p>
<h1 id="images">Images</h1>
<p><img src="https://s3-us-east-2.amazonaws.com/jlyons-blog/2018/07/copycat_home.png" alt="DNS Management System"></p>
</div>]]></content:encoded></item><item><title><![CDATA[Offshore Air Inc.]]></title><description><![CDATA[<div class="kg-card-markdown"><p>My client needed their company page rebuilt with a few extra features. I rebuilt their site for them and integrated the updates they desired. This included an employee page that gave employees access to certain company files (basic contract, invoice, etc.). I also added an admin page that allowed my</p></div>]]></description><link>https://jlyons.me/2018/07/06/offshore-air-inc/</link><guid isPermaLink="false">5b40012ce74b9b002053ce31</guid><category><![CDATA[Portfolio]]></category><category><![CDATA[web development]]></category><category><![CDATA[NodeJS]]></category><dc:creator><![CDATA[J Lyons]]></dc:creator><pubDate>Fri, 06 Jul 2018 23:54:50 GMT</pubDate><media:content url="https://s3-us-east-2.amazonaws.com/jlyons-blog/2018/07/site-1.jpg" medium="image"/><content:encoded><![CDATA[<div class="kg-card-markdown"><img src="https://s3-us-east-2.amazonaws.com/jlyons-blog/2018/07/site-1.jpg" alt="Offshore Air Inc."><p>My client needed their company page rebuilt with a few extra features. I rebuilt their site for them and integrated the updates they desired. This included an employee page that gave employees access to certain company files (basic contract, invoice, etc.). I also added an admin page that allowed my client to edit those files as well as edit/add example jobs to be featured on their site, edit the estimate form for potential customers, and edit any images on the site that they wanted to change. These additions to their site have helped improve their ability to capture new leads and will help them sell their company for a higher price when they look to sell in the coming months.</p>
<h1 id="images">Images</h1>
<p><img src="https://s3-us-east-2.amazonaws.com/jlyons-blog/2018/07/site.jpg" alt="Offshore Air Inc."></p>
</div>]]></content:encoded></item><item><title><![CDATA[Fill In The Gap Inc.]]></title><description><![CDATA[<div class="kg-card-markdown"><p>My client needed graphics created and a website for their new nonprofit. I put together all the graphics for their site according to their desires and satisfaction. This included logo design and other graphics for the site. I then built the website with custom bootstrap features and dynamic and responsive</p></div>]]></description><link>https://jlyons.me/2018/07/06/web-development/</link><guid isPermaLink="false">5b4000e1e74b9b002053ce2c</guid><category><![CDATA[Portfolio]]></category><category><![CDATA[web development]]></category><category><![CDATA[bootstrap]]></category><dc:creator><![CDATA[J Lyons]]></dc:creator><pubDate>Fri, 06 Jul 2018 23:54:03 GMT</pubDate><media:content url="https://s3-us-east-2.amazonaws.com/jlyons-blog/2018/07/fitg-1.PNG" medium="image"/><content:encoded><![CDATA[<div class="kg-card-markdown"><img src="https://s3-us-east-2.amazonaws.com/jlyons-blog/2018/07/fitg-1.PNG" alt="Fill In The Gap Inc."><p>My client needed graphics created and a website for their new nonprofit. I put together all the graphics for their site according to their desires and satisfaction. This included logo design and other graphics for the site. I then built the website with custom bootstrap features and dynamic and responsive designs.</p>
<h1 id="images">Images</h1>
<p><img src="https://s3-us-east-2.amazonaws.com/jlyons-blog/2018/07/fitg.PNG" alt="Fill In The Gap Inc."></p>
<p><img src="https://s3-us-east-2.amazonaws.com/jlyons-blog/2018/07/fitg2.PNG" alt="Fill In The Gap Inc."></p>
</div>]]></content:encoded></item><item><title><![CDATA[Radio Management Page]]></title><description><![CDATA[<div class="kg-card-markdown"><p>My client needed their radio management pages updated. They needed new features and a redesign. I was able to build these new features, including a graphical representation of how their titles would look on a user's radio (including accurate scrolling on long titles, etc). The entire site included a custom</p></div>]]></description><link>https://jlyons.me/2018/07/06/radio-management-page/</link><guid isPermaLink="false">5b400058e74b9b002053ce26</guid><category><![CDATA[Portfolio]]></category><category><![CDATA[web development]]></category><category><![CDATA[bootstrap]]></category><dc:creator><![CDATA[J Lyons]]></dc:creator><pubDate>Fri, 06 Jul 2018 23:51:49 GMT</pubDate><media:content url="https://s3-us-east-2.amazonaws.com/jlyons-blog/2018/07/slink_home-1.png" medium="image"/><content:encoded><![CDATA[<div class="kg-card-markdown"><img src="https://s3-us-east-2.amazonaws.com/jlyons-blog/2018/07/slink_home-1.png" alt="Radio Management Page"><p>My client needed their radio management pages updated. They needed new features and a redesign. I was able to build these new features, including a graphical representation of how their titles would look on a user's radio (including accurate scrolling on long titles, etc). The entire site included a custom built back-end that set up UDP packages to be sent to DISH according to their protocols, a secure connection with SiriusXM, and handled incoming track changes to update the streaming titles and information. This then tied into the web page so that information could be updated manually without interrupting the automated system. Uptime was monitored and rebooting/refreshing the system was made easy through the web interface.</p>
<h1 id="images">Images</h1>
<p><img src="https://s3-us-east-2.amazonaws.com/jlyons-blog/2018/07/slink_home.png" alt="Radio Management Page"></p>
</div>]]></content:encoded></item><item><title><![CDATA[File Transfer System and Web Interface]]></title><description><![CDATA[<div class="kg-card-markdown"><p>My client needed a system to handle file transfers between local and offsite storage systems. This needed to be entirely automated but with a web page for management and monitoring. I was able to create this with python, lftp, and .NET for the web page. This system was built with</p></div>]]></description><link>https://jlyons.me/2018/07/06/file-transfer-system-and-web-interface/</link><guid isPermaLink="false">5b3ffe02e74b9b002053ce1e</guid><category><![CDATA[Portfolio]]></category><category><![CDATA[web development]]></category><category><![CDATA[python]]></category><dc:creator><![CDATA[J Lyons]]></dc:creator><pubDate>Fri, 06 Jul 2018 23:45:35 GMT</pubDate><media:content url="https://s3-us-east-2.amazonaws.com/jlyons-blog/2018/07/xfer-1.png" medium="image"/><content:encoded><![CDATA[<div class="kg-card-markdown"><img src="https://s3-us-east-2.amazonaws.com/jlyons-blog/2018/07/xfer-1.png" alt="File Transfer System and Web Interface"><p>My client needed a system to handle file transfers between local and offsite storage systems. This needed to be entirely automated but with a web page for management and monitoring. I was able to create this with python, lftp, and .NET for the web page. This system was built with scalability in mind and I was able to develop it in a way that made spinning up a new file transfer pathway extremely easy and straightforward. An API was also developed for the python scripts, the web page, and the company's monitoring system to interact with. This was all locked down using secure methods.<br>
This went live and was robust enough to be trusted with all of the company's files. The company was a broadcast company and every file that went to air went through this system. The way the company was set up, if there was a local issue, they would air from their offsite storage, putting my system directly at the center of their production cycle. The slightest issue would have had catastrophic failures but they were able to be confident in trusting my application.</p>
<h1 id="images">Images</h1>
<p><img src="https://s3-us-east-2.amazonaws.com/jlyons-blog/2018/07/xfer.png" alt="File Transfer System and Web Interface"></p>
</div>]]></content:encoded></item><item><title><![CDATA[How to Start a Blog For Free in 15 Minutes]]></title><description><![CDATA[These days the blog market is getting quite saturated but people still manage to make six-figure incomes! If you're ready to try your hand in the industry but don't have or want to risk any startup funds do not fret! I'll show you how to put together a blog in no time with virtually no overhead!]]></description><link>https://jlyons.me/2018/06/28/how-to-start-a-blog-for-free-in-15-minutes/</link><guid isPermaLink="false">5b329d16e91d4f0020f61ade</guid><dc:creator><![CDATA[J Lyons]]></dc:creator><pubDate>Fri, 29 Jun 2018 00:18:13 GMT</pubDate><media:content url="https://s3-us-east-2.amazonaws.com/jlyons-blog/2018/06/aerial-background-beverage-1038674---Copy.jpg" medium="image"/><content:encoded><![CDATA[<div class="kg-card-markdown"><h1 id="backgroundinfo">Background Info</h1>
<img src="https://s3-us-east-2.amazonaws.com/jlyons-blog/2018/06/aerial-background-beverage-1038674---Copy.jpg" alt="How to Start a Blog For Free in 15 Minutes"><p>These days the blog market is getting quite saturated but people still manage to make six-figure incomes! If you're ready to try your hand in the industry but don't have or want to risk any startup funds do not fret! There is still a way. I'll show you how to put together a blog in no time with virtually no overhead! We'll use Heroku for hosting, Ghost for the blogging platform, and Amazon S3 for storage space. It's very straight forward and almost no technological competency is required. Anyone could do it!</p>
<h1 id="gettingstarted">Getting Started</h1>
<p>The first thing you will need is a domain name and a DNS provider. These are often combined into one service which makes things a lot easier, but you can use whatever you want. If you don't already have a domain and DNS provider, then this will be the only time you'll need to spend any money -- usually around $12. I use <a href="http://domains.google.com">Google Domains</a> which I have found to be the simplest service like this. So go grab yourself a domain and you'll be all set to start. Do over think this step, however! Your blog's domain will fit right into your brand, which is essentially your entire product.</p>
<p><img src="https://s3-us-east-2.amazonaws.com/jlyons-blog/2018/06/Lets-just-say-its-kind-of-a-big-deal---Copy.jpg#small" alt="How to Start a Blog For Free in 15 Minutes"></p>
<p>Spend some time developing a brand you're comfortable with and will enjoy. When you're all set, buy that domain name and get started!</p>
<h1 id="settinguphosting">Setting Up Hosting</h1>
<p>Next you will need a place to host, or store, your blog so that your visitors can access it. There are a lot of options out there, but for this guide, Heroku is what we will use. They have a free option that is good enough to start with and are easily integrated with the Ghost blogging framework. So head to their <a href="https://signup.heroku.com">sign up page</a> and create an account.</p>
<p><img src="https://s3-us-east-2.amazonaws.com/jlyons-blog/2018/06/001_heroku_signup---Copy.PNG" alt="How to Start a Blog For Free in 15 Minutes"></p>
<h2 id="settingupstorage">Setting Up Storage</h2>
<p>One downside to Heroku is that it doesn't have a permanent storage system. What this means is that you can set up your website to run on their system, but any photos or files you upload will be deleted everytime their system restarts your site. All that Heroku will story for you is the code to your site and database information. There is an easy solution for this, though, which is to connect your blog to a third-party storage service. Because of integrations that are already built and provided by Heroku and Ghost, the best way to do this is with a free tier accound for <a href="https://aws.amazon.com/">Amazon AWS</a>. Follow that link and create an account, but keep in mind that the free tier only lasts 12 months. This isn't a permanent solution, so work hard on you blog and in a year you'll hopefully have made at least a few bucks to keep your AWS account active!<br>
Once you've created your account go to the <a href="https://console.aws.amazon.com">AWS Console</a>. Open the services tab and select the 'S3' option from under storage.</p>
<p><img src="https://s3-us-east-2.amazonaws.com/jlyons-blog/2018/06/002_amazon_s3---Copy.PNG" alt="How to Start a Blog For Free in 15 Minutes"></p>
<p>Now you just need to create a bucket. Unless you know otherwise, you should be just find to leave all the defaults. Just pick a name and write it down. You'll need it in just a sec. Also, make note of the region. It should be something like 'us-east-1' or 'eu-west-1'.<br>
Now you need to generate keys to authenticate your blog, and only your blog, to have access to this bucket so that you'll be able to upload photos, etc. from the Ghost backend. Select your name in the top right corner and select 'My Security Credentials' from the dropdown. On the security page, expand 'Access keys (access key ID and secret access key)' and then press the 'Create New Access Key' button. This will generate the keys you'll need. Select the option to show the keys and leave this tab open. You'll copy and paste the keys into Heroku in just a minute.</p>
<p><img src="https://s3-us-east-2.amazonaws.com/jlyons-blog/2018/06/003_aws_credentials---Copy.PNG" alt="How to Start a Blog For Free in 15 Minutes"></p>
<h2 id="setupherokuapp">Set Up Heroku App</h2>
<p>Everyone go out and thank the Github users <a href="https://github.com/cobyism">Cobyism</a> and <a href="https://github.com/mars">Mars</a> for making this next part extremely simple. Follow <a href="https://github.com/mars/ghost-on-heroku/tree/version-1.x">this link</a> to the Github repo and click the 'Deploy to Heroku' button. This will open up a page on Heroku that, once you fill in all the values, will generate your blog including configuring the database and AWS storage! How easy!!<br>
So fill out the values in the form on Heroku now. Set the PUBLIC_URL option to be the domain name you bought before. Copy the information from your AWS access keys into the corresponding S3_ACCESS_KEY_ID and S3_ACCESS_SECRET_KEY options. Put the name you chose for your bucket into S3_BUCKET_NAME and the region into S3_BUCKET_REGION. Don't worry about S3_ASSET_HOST_URL, you can just leave it blank. Now press 'Deploy app.' If you haven't already, you'll need to fill in payment information. Don't worry, they won't charge you unless you choose a different service level. Now press 'Deploy app' again. Let the suspense build, because you'll have to wait a few minutes for the app to deploy. You're getting close, though!</p>
<p><img src="https://s3-us-east-2.amazonaws.com/jlyons-blog/2018/06/almost-there-finish---Copy.jpg#small" alt="How to Start a Blog For Free in 15 Minutes"></p>
<h2 id="dnsconfiguration">DNS Configuration</h2>
<p>Go to your DNS provider or set one up if you haven't already. This next part is the trickiest part so you need to follow closely. Create a subdomain forward that forwards '@' to <a href="http://www.yourdomain.com">http://www.yourdomain.com</a>. Now go back to Heroku and select 'Manage app'. Go to 'Settings' and add your domain under the 'Domains and certificates' heading. Depending on you DNS provider, you'll probably need to include the www (i.e. 'www.yourdomain.com'). Heroku will then generate a 'DNS Target' that will probably look like 'www.yourdomain.com.herokudns.com'. Copy this target and head back to your DNS provider. There you'll need to create a CNAME record that points 'www' to that target you copied. Now wait a few minutes for the DNS records to propogate and you're blog will now be public!</p>
<p><img src="https://s3-us-east-2.amazonaws.com/jlyons-blog/2018/06/004_ghost---Copy.PNG" alt="How to Start a Blog For Free in 15 Minutes"></p>
<p>The last thing to do is to go to the <a href="https://domain.herokuapp.com/ghost/">Ghost backend</a> and set up your account and then blog away!!</p>
</div>]]></content:encoded></item></channel></rss>