GistTree.Com
Entertainment at it's peak. The news is by your side.

BugTracker – an open-source SaaS app built with a step-by-step tutorial

0

A SaaS App from Launch to Discontinue

Our mission is to lend a hand little groups compose extremely efficient SaaS (tool-as-a-service) products.

There are many of technical resources obtainable for all parts of the tech stack. But building a SaaS app requires petite bits of data and expertise from a large decision of areas.

By building SaaS apps from originate to preserve out, we are going to conceal all the pieces it is advisable to dangle – get, front-cease, reduction-cease, SEO, deployment, etc.

Here is half 1 of our first SaaS app, BugTracker.

Introducing BugTracker

I built BugTracker as the first start-supply web app built on Argon, the first DinoSaaS App Template.

Light-weight and uncomplicated to expand, BugTracker is the suitable start-supply worm tracking app for little and nimble tool groups.

This tutorial walks you by scheme of tricks on how to compose BugTracker from originate to preserve out:

  1. Clone and customise Argon
  2. Add User Accounts
  3. Variety core Bugs CRUD efficiency
  4. Dashboard Polish
  5. Add a Description rich textual yelp field
  6. Give a own to for groups

BugTracker is no longer performed yet (no tool ever is, upright?). But half 2 will most likely be coming rapidly!

Chapter 1 – Customizing an App Template

1.1 – Clone the Argon App Template

The BugTracker narrative starts with the Argon App Template. Argon affords us a incredible dashboard, plus tables, kinds, and pages that can reach in at hand in later chapters.

Clone the repo using the directions
within the recommendations.
You’ll doubtlessly desire to get a brand unique repo in Github and substitute your git distant.

1.2 – Buy a coloration scheme

Take a look at out Coloration Hunt for inspiration. I chose this palette, nonetheless feel free to decide on your delight in.

1.3 – Set a imprint

Apply this Constructing Block from originate to preserve out to get a incredible imprint in 15 minutes.

Then substitute the imprint property in app/property/images/imprint.

1.4 – Customise colours & imprint

Replace the the app’s </code> in <code><head></code>.</p> <p> Replace coloration variables to compare your chosen coloration palette in<br /> <a href="https://github.com/Dino-SaaS/BugTracker/commit/b6a10f5c31082e6c44926d14839cf6e1f64d0b63#diff-16a256714d39b72b791b28d35f7a1c09ed975d80e72d529feea575955bbce219"><br /> <code>personalized/_variables.scss</code></a>. </p> <p> For a extra detailed tutorial on customizing Argon, test out the<br /> <a href="https://www.dinosaas.com/articles/app-template-1-argon">App Template files</a><br /> within the <i>Customizing the UI</i> half. </p> </div> <h2>Chapter 2 – Adding User Accounts</h2> <div> <p> An app isn’t an app with out customers, upright? On this chapter, we’ll issue up client accounts and<br /> authentication. </p> </div> <h3>2.1 – Set up Devise</h3> <p><a href="https://github.com/heartcombo/devise#">Devise</a> is a neatly-liked authentication acknowledge for Rails. <br /></br></p> <p>Their <a href="https://github.com/heartcombo/devise#getting-started">“Getting Started” files</a> will scramble you by scheme of the setup course of: </p> <ol role="list"> <li>Placing in Devise</li> <li>Generating a Devise model</li> <li> exercise Devise helper programs in controllers</li> <li>Generating and configuring Devise views<br /></br></li> </ol> <p>There are many ways for you to customize Devise. For this tutorial, on the different hand, we’ll be sticking aesthetic discontinuance to what you get out of the box.</p> <h3>2.2 – Integrate Devise with Argon kinds</h3> <div> <p> Devise generates boilerplate views for us with <code>rails generate devise:views</code>.<br /> Among the important extra important ones are: </p> <ol> <li>Be a half of – <code>views/devise/registrations/unique.html.erb</code> </li> <li>Ticket in – <code>app/views/devise/sessions/unique.html.erb</code> </li> <li>Forgot password – <code>app/views/devise/passwords/unique.html.erb</code> </li> <li>Swap password – <code>app/views/devise/passwords/edit.html.erb</code> </li> </ol> <p><b>Our most modern job is to weave these kinds into Argon’s pages.</b></p> <p> As an illustration, Argon’s<br /> <a href="https://github.com/Dino-SaaS/Argon/blob/master/app/views/pages/register.html.erb"><br /> register web page</a> is aesthetic, nonetheless it no doubt doesn’t truly keep anything. We’re going to replica the<br /> contents of <code>register.html.erb</code> into <code>devise/registrations/unique.html.erb</code>.<br /> Then we pull within the Rails acquire helpers generated by Devise into the Argon acquire. </p> <p> Seeing is believing! Crawl by scheme of the performed<br /> <a href="https://github.com/Dino-SaaS/BugTracker/blob/f7ec26e9413295386776b37026be199267fb9eb4/app/views/devise/registrations/new.html.erb"><br /> <code>devise/registrations/unique.html.erb</code></a> and it’ll originate to create extra sense. </p> </div> <p>We then repeat this course of for our other views.<br /></br></p> <figure id="w-node-f0b2ed73065f-5b4a6e45"> <p><img alt="" data-src="https://uploads-ssl.webflow.com/5f4acf32e17a9c037c4a6e65/5f886cd56786cbfabd3f896f_1pbP6Vqc5o2eJuEFE8cdpF1AF9uPSYerMgFwJtLYhKAALqBltRCT4ar1X8IHE6VGIezeXSxrgfRv7UCdAi7gcyWM-GdFgz99JqXqoB2RGFN3XfFgB67puadZcbjkMOWUfCpr_lJc.png"></img></p><figcaption>Registration web page</figcaption></figure> <div> <p> You might maybe maybe maybe per chance per chance also merely also search for the<br /> <a href="https://github.com/Dino-SaaS/BugTracker/blob/f7ec26e9413295386776b37026be199267fb9eb4/app/views/layouts/authentication.html.erb"><br /> <code>authentication</code> structure</a>. <b>I’ve outlined a personalised structure for our Devise views, since<br /> they all seek aesthetic mighty the the same.</b> </p> <p> I’ve declared this structure in my delight in controllers that lengthen Devise controllers:<br /> <code>RegistrationsController</code>, <code>SessionsController</code>, and<br /> <code>PasswordsController</code>. These little, one-line controllers enable me to yelp <i>Hi there Rails –<br /> exercise the <code>authentication</code> structure for this controller’s pages, nonetheless exercise the present Devise<br /> controller for all the pieces else</i>. </p> <p> I also must recount Devise about my controllers in <code>routes.rb</code>: </p> <div> <p><a href="#">Reproduction to clipboard</a></p> <p> — CODE language-rb –devise_for :customers, controllers: {<br /> ‘registrations’: ‘registrations’,<br /> ‘sessions’: ‘sessions’,<br /> ‘passwords’: ‘passwords’<br /> } </p> </div> </div> <h3>2.3 – Render Devise errors</h3> <p>Now now we bear all our Devise views…large! But inevitably customers will most likely be customers and get tripped up on our kinds. <strong>So our next step is error facing.</strong></p> <div> <p> Devise’s boilerplate views render a partial that renders error messages, located at<br /> <a href="https://github.com/Dino-SaaS/BugTracker/blob/f7ec26e9413295386776b37026be199267fb9eb4/app/views/devise/shared/_error_messages.html.erb"><br /> <code>devise/shared/_error_messages</code></a>. We’ll render this in all our Devise kinds: </p> <p> In <a href="https://github.com/Dino-SaaS/BugTracker/commit/eb1d6dee8abe6d42cae7a281eb3e1c19d1ef8349"><br /> this commit</a>, we add a personalised <code>_bugtracker.scss</code> stylesheet to alternate the coloration of<br /> Devise’s error messages. </p> </div> <h3>2.4 – Handle authentication auto-redirects</h3> <p>An main part of any app’s authentication scheme is gracefully redirecting customers in accordance to whether or no longer they’re authenticated.</p> <div> <p> In <a href="https://github.com/Dino-SaaS/BugTracker/commit/22520464817ffabc915c317c26c6852fe24365d5"><br /> this commit</a>, we exercise the Devise helper <code>:authenticate_user!</code> with the<br /> <code>before_action</code> filter. Now, Devise will test if a shopper is authenticated sooner than<br /> rendering the Dashboard. </p> <p> In <a href="https://github.com/Dino-SaaS/BugTracker/commit/729eb4ef1aa3a1130e6ccb5efcff88fd592e4f30"><br /> this commit</a>, we specify that we desire customers to be redirected to the <code>sign_in</code> web page<br /> after logging out (or being redirected after attempting unsuccessfully to access the Dashboard). </p> <h3>2.5 – Create <code>User.title</code> a required field</h3> <p> The core of this half is de facto merely this one line within the <code>User</code> model: </p> <p> You’ll search for in<br /> <a href="https://github.com/Dino-SaaS/BugTracker/commit/df0f1c30cfb38fdcbdb6192d2aa229cbb0f6a7cc"><br /> this commit</a>, on the different hand, that I chose this as a merely time to introduce Take a look at Driven Trend,<br /> or TDD, with <a href="”https://github.com/rspec/rspec-rails”" class="broken_link">RSpec</a>, my favourite Rails attempting out<br /> framework. </p> <h2>Chapter 3 – <code>Bugs</code> within the Dashboard</h2> <p> So now we’ve obtained this aesthetic dashboard that customers can log in and out of. Composed no longer very precious. </p> <p>Right part customers can’t add bugs yet…</p> <p> But no longer for long! By the head of this chapter, customers will most likely be along side, bettering, viewing, and deleting<br /> bugs. </p> <h3>3.1 – Generate <code>Malicious program</code> Scaffold</h3> <p> We’ll originate off by producing a scaffold using<br /> <a href="https://guides.rubyonrails.org/v3.2.18/getting_started.html#getting-up-and-running-quickly-with-scaffolding"><br /> <code>rails generate scaffold</code></a>: </p> <div> <p><a href="#">Reproduction to clipboard</a></p> <p> — CODE language-sh –rails generate scaffold Malicious program title:string place of abode:integer platform:integer </p> </div> <p> As it is most likely you’ll maybe maybe per chance per chance see in<br /> <a href="https://github.com/Dino-SaaS/BugTracker/pull/3/commits/4cee812e77e41e7f6ab9affa164bcd49d5631b23"><br /> this commit</a>, this generates hundreds files for us. After running <code>rails db:migrate</code>,<br /> we’ve already obtained a aesthetic precious (nonetheless gruesome) worm tracking app! </p> <h3>3.2 – bugs/index – Exhibiting all <code>Bugs</code></h3> <p> After<br /> <a href="https://github.com/Dino-SaaS/BugTracker/pull/3/commits/d926c5f88f5b8bfa2ec6fc5bd7067cb4fd73b628"><br /> seeding the database</a> with some bugs, bugs/index looks love this: </p> </div> <figure id="w-node-62e84ddc3e1f-5b4a6e45"> <p><img alt="" data-src="https://uploads-ssl.webflow.com/5f4acf32e17a9c037c4a6e65/5f886eb2166f2c0a98b36f02_G39NOk_xpm8g8qwmUkw3LJnqRwfVKo9dIoGCNGwUYIfGHFcmqK9a7p3aAo2CmOsy6rmcAMBRQtZNtlQDBVnc0do4NTrY3xaazik-f6M6WBkGdJnaJD4i65qk-4Q1sVLk9NOniN1O.png"></img></p><figcaption>bugs/index (sooner than)</figcaption></figure> <figure id="w-node-e53666341021-5b4a6e45"> <p><img alt="" data-src="https://uploads-ssl.webflow.com/5f4acf32e17a9c037c4a6e65/5f886ee4515aff3f7a99b129_Z9ojjQcjdTpMPZpXwPyolupPxf8_Zen7VqloHTiB7dQ0xaHGATAkBdiKpdl-HSZaa1C12Mnf3TkPXIH3qLUK6MKmA43R5ayK8eZOk3PR98XckzlM4JJbW-Ixcb98-MdW9MUgWbKH.png"></img></p><figcaption>bugs/index (after)</figcaption></figure> <p><h3>3.3 – bugs/demonstrate – Point to 1 <code>Malicious program</code></h3> </p> <p>From <a href="https://github.com/Dino-SaaS/BugTracker/pull/3/commits/511c63f2406ddcb5f689bb453bc0553f3d9e3f5e">this commit</a> to <a href="https://github.com/Dino-SaaS/BugTracker/pull/3/commits/4d3a4373a8499883cf90c21dc63c2955a9811d4d">this commit</a>, we purchase bugs/demonstrate from this: </p> <figure id="w-node-e40baec7388b-5b4a6e45"> <p><img alt="" data-src="https://uploads-ssl.webflow.com/5f4acf32e17a9c037c4a6e65/5f886f15cf44d3ffae22ef40_p1WxExB_S16yRiKl_4NTuZ2ni_eiwenFDZ8vETU1hq4HxIqfOg8QkILs1o6aPYEQuoEDTOBCK_PUBB6hbnlzjNL5nl6pqWJBHb0VgJPWvXgRYuNWVRbrT-RWfStcaZ2SccgSbkbh.png"></img></p><figcaption>bugs/demonstrate (sooner than)</figcaption></figure> <p>to this: </p> <figure id="w-node-5f0115e3c1ff-5b4a6e45"> <p><img alt="" data-src="https://uploads-ssl.webflow.com/5f4acf32e17a9c037c4a6e65/5f886f1561bb97ceece4ac55_PO5eGWJuGNgbHgx0MFvY021xaXJINkoqnQ-TGmuEB0CtBlf1lTbETtJ4ZDeBc8zj6tqZ36eEMGoDW70n3eiLZa3FnmOMk1melzhhz9h1r_IVfRGrKLlStwgdTMvXCbdyMr1958j6.png"></img></p><figcaption>bugs/demonstrate (after)</figcaption></figure> <p>It might maybe in reality maybe maybe per chance also merely seek love plenty of code, nonetheless it no doubt’s all taken from pages in Argon with some slight tweaks right here and there.</p> <p><h3>3.4 – bugs/edit – Edit a <code>Malicious program</code></h3> </p> <p>Within the same vogue, <a href="https://github.com/Dino-SaaS/BugTracker/pull/3/commits/6e30f2e319b5f1e8f2a8ed77919f11aeab64b310">this commit</a> takes us from this “scaffoldy” edit web page: </p> <figure id="w-node-b98889847dcf-5b4a6e45"> <p><img alt="" data-src="https://uploads-ssl.webflow.com/5f4acf32e17a9c037c4a6e65/5f886f4a9c790d803d83ab4b_u0Juv-5Gj7VIToP_7F_uG4MlduWOTOCumgt_K4aOgZXbrTTiCjGIc46KRfCtqZ-mIxm0WWKPgxQmd1a7Ws4VjZv6WBhV67msdEAQW9zATSULd80oQIsTH1r0iUVtMqNxVXql7KJA.png"></img></p><figcaption>bugs/edit (sooner than)</figcaption></figure> <p>to this: </p> <figure id="w-node-c6005106070e-5b4a6e45"> <p><img alt="" data-src="https://uploads-ssl.webflow.com/5f4acf32e17a9c037c4a6e65/5f886f491254177cb93d516a_XzfvF8V5rcNkmGKJi_PSAFrwlNek317ok7ab2QEy_-Mr2lfkrb69u3T8RN6z8B3PuVQhTcL3-LnMdH-WvA0qGA30APWi0Szd6FnWX4PlDOBrBgDJrFpd_NRe1gQa-VGayZ7h_tUW.png"></img></p><figcaption>bugs/edit(after)</figcaption></figure> <div> <h3>3.5 – bugs/execute – Delete a <code>Malicious program</code></h3> <p> Long-established “execute” efficiency is fairly easy. On this commit, I introduce a petite little bit of<br /> complexity with a confirmation modal sooner than truly destroying a <code>worm</code>. </p> </div> <figure id="w-node-11f22c218aa5-5b4a6e45"> <p><img alt="" data-src="https://uploads-ssl.webflow.com/5f4acf32e17a9c037c4a6e65/5f886faf02714a4d5a423ff5_KwFFpRR6PiD6dwpUGfRipcDl9GmxFcpV1hIxECBsJLTFvTpvgbmGO7mq4R4t-nzMaefG4e45dQlFRSznb-wxOnRd6Dy2F9LOAe2I_uqVvaF8ujJkmLlPccE6WjZGSDazX3a9bJyt.png"></img></p><figcaption>Deletion confirmation modal</figcaption></figure> <p>Magnificent confirmation modal, upright 😉? It comes integrated in Argon!</p> <div> <p> (In <a href="https://github.com/Dino-SaaS/BugTracker/pull/3/commits/a50027ca2ecf0899862b59e5740e7cdfddbf95b2"><br /> this commit</a> I originate deleting the worm the consumer truly clicked on…🙃) </p> <p> This modal is eventually pulled out genuine into a<br /> <a href="https://github.com/Dino-SaaS/BugTracker/blob/master/app/views/shared/modals/_confirmation.html.erb"><br /> <code>_confirmation.html.erb</code></a> partial. </p> <h3>3.6 – bugs/unique – Create a <code>Malicious program</code></h3> </div> <p><a href="https://github.com/Dino-SaaS/BugTracker/pull/3/commits/01fa35a3758e3d7585db0a29383650bb1a37622c">This commit</a> takes us from this: </p> <figure id="w-node-45966b1f16da-5b4a6e45"> <p><img alt="" data-src="https://uploads-ssl.webflow.com/5f4acf32e17a9c037c4a6e65/5f88703ab6e908e13b5c65c3_OE4zJ5zyG7LfGTnWT8UPJHsVyaAmiNigVMgXenRUrJL8-mQh4Hg_D2dJbqi5bVu9XrlUDrsX52OTzuCDCg0vBnETd3edQeZ4q1j3M94SnhJeqf5jRPBZUHgO7xJETicEspqdKFB0.png"></img></p><figcaption>bugs/unique (sooner than)</figcaption></figure> <p>to this: </p> <figure id="w-node-fa48f03eeb6c-5b4a6e45"> <p><img alt="" data-src="https://uploads-ssl.webflow.com/5f4acf32e17a9c037c4a6e65/5f88703a5c86432c4e8bcb53_MTnTX-hDWtWPHW0DZLBmxFpnqQFT5o3E-wgQxYAYnuW1ng2_fOSMmMEFLOMNU_M93f1663o7xIfzEtmyQtxDpIcDEX-C3h7DThPbG3pxsirxRZiUOQtTxbdbwHzGSUW2UEhhlF4A.png"></img></p><figcaption>bugs/unique (after)</figcaption></figure> <p>This chapter skips over several adjustments love along side edit and delete icons to bugs/index, date formatting, and success modals.</p> <p>You doubtlessly can <a href="https://github.com/Dino-SaaS/BugTracker/pull/3/commits">test out the total commits from this Pull Ask</a> to dig into how those adjustments bear been implemented.</p> <h2>Chapter 4 – Dashboard Contact-ups</h2> <p>On this PR, we practice some in sort polish to our Dashboard UX to purchase it from the boilerplate Argon dashboard to 1 who feels personalized to BugTracker.<br /></br></p> <p>We trail from this: <br /></br></p> <figure id="w-node-b808e403374b-5b4a6e45"> <p><img alt="" data-src="https://uploads-ssl.webflow.com/5f4acf32e17a9c037c4a6e65/5f88709409f5cb41021a0dc6_m3X0OsDxDFQGvhFaVn4tXwMA6k4sAxkc3HwfLW2ntHe5JbVAnzj5vGDBjKXE3A4ZGNtX3htar7vGtQ8ALwQ67RusfXqCs-2qJZ0taSoE2_pnvVBOHVU-LuarRo2Ici7vSZs2gZUh.png"></img></p><figcaption>Dashboard (sooner than polish)</figcaption></figure> <p>to this: </p> <figure id="w-node-ffd9882b9189-5b4a6e45"> <p><img alt="" data-src="https://uploads-ssl.webflow.com/5f4acf32e17a9c037c4a6e65/5f8870953ed8f31d03609a0f_Gu-Akeuqsz8YFFs-jmsCWr1i2pyDJOhsv08htcuW-hOmXGiUndDbf6B8iCEAHvX-X_dmmx2v44F0iLBsntRTZ1jL4XD9B5Zkz0FqG465mVp-M_5Xgo3kr0R4Fk6jx3Vt7X-a4xk0.png"></img></p><figcaption>Dashboard (after polish)</figcaption></figure> <p><strong>The main adjustments are: </strong></p> <ol role="list"> <li><a href="https://github.com/Dino-SaaS/BugTracker/pull/4/commits/f3fd3b3008103e431f772429a2e7356ef6f754f5">Some code refactoring</a> – pulling some code into partials</li> <li><a href="https://github.com/Dino-SaaS/BugTracker/pull/4/commits/f5fcf4b579d469a63d92a51d3931aca7b2a06aa6">Facet navbar</a> – Laying aside the total unused hyperlinks</li> <li><a href="https://github.com/Dino-SaaS/BugTracker/pull/4/commits/f726794353569ec4403406969e3d81d57eb659f3">User navbar dropdown</a> (top-upright) – Laying aside unused hyperlinks from Argon</li> <li><a href="https://github.com/Dino-SaaS/BugTracker/pull/4/commits/47012a6894e59423dba974dcb91d5a2777ad418d">Adding a footer</a></li> </ol> <h2>Chapter 5 – Description & Action Text</h2> <div> <p> As a developer, you’ve doubtlessly noticed that these bugs aren’t very descriptive. Users prefer to<br /> enter detailed worm descriptions with steps to breed them, plus screenshots of what they seek love. </p> <p> The <a href="https://www.dinosaas.com/articles/add-rich-text-in-rails-using-action-text-and-trix"><br /> Rich Text Constructing Block</a> walks you by scheme of tricks on how to add a <code>description</code> rich textual yelp field<br /> that lets customers keep all of those gadgets. </p> </div> <p>Afterwards, bugs/edit will seek love this: </p> <figure id="w-node-2a6f730ace20-5b4a6e45"> <p><img alt="" data-src="https://uploads-ssl.webflow.com/5f4acf32e17a9c037c4a6e65/5f8870debfd0347578ed34fd_ZARaCwf1T_m70sHDWy-gqZhPjxdh6Vs7eb91rQk3u9seozOKl6Blq-mVtAnITfrQkilICi1O5iE5xV_uBG9Lb11ZqHrMByv__RcRHa-wohlxQM_STgCpn9zkRqYTcTDNdakDbl80.png"></img></p><figcaption>bugs/edit with rich textual yelp enter</figcaption></figure> <p>Shoutout to <a href="https://placekitten.com/">placekitten</a> for the adorable kitten describe!</p> <div> <h2>Chapter 6 – Add <code>Accounts</code> and accomplice with <code>Users</code> and<br /> <code>Bugs</code></h2> <p> I’m no longer gonna lie – this chapter in reality can bear to’ve been right away after Chapter 2 where we<br /> added <code>Users</code> with Devise. But better slow than never! </p> <p> You might maybe maybe maybe per chance per chance also merely bear noticed the <b>glaring oversight</b> in BugTracker’s safety – <b>each and each client can see,<br /> edit, and delete all bugs from all customers. Now not ideal.</b> </p> <p> Users <b>can bear to</b> only be in a quandary to see, edit, and delete <b>their delight in</b> bugs. But in reality,<br /> customers belong to groups, and all groups can bear to bear access to all bugs reported by customers in their<br /> crew. </p> <p> So we’ll purchase this as a large opportunity to introduce an <code>Yarn</code> model. </p> <p> Think an <code>Yarn</code> as a crew. An <code>Yarn has_many Users</code>, and<br /> <code>Bugs belong_to</code> an <code>Yarn</code> in space of particular particular person <code>Users</code>. </p> <h3>6.1 – Design up <code>Yarn</code> model and associations</h3> <p> In <a href="https://github.com/Dino-SaaS/BugTracker/pull/6/commits/219cd2cc1898480a5fd40db198d9e02d13e357a6"><br /> this commit</a>, we get the <code>Yarn</code> model and its<br /> <code>has_many</code> affiliation with <code>Malicious program</code>. </p> <p> (Later we’ll add the <code>belongs_to Yarn</code> affiliation in <code>Malicious program</code> that we<br /> forgot right here…) </p> <h3>6.2 – Create unique <code>Yarn</code> when customers register</h3> <p> We don’t yet bear the skill for <code>Users</code> to invite other <code>Users</code> to<br /> their <code>Yarn</code>. <b>Correct now, we get a brand unique <code>Yarn</code> for all<br /> <code>Users</code> after they join.</b> </p> <p> Creating both resources on the the same time adds a petite bit extra complexity than it will per chance maybe maybe per chance appear at<br /> the bottom (would’ve been mighty more straightforward to keep that earlier!). </p> <p> <b>When a <code>User</code> registers, we desire to get 2 resources: a <code>User</code> and an<br /> <code>Yarn</code>.</b> To keep that every body in one fell swoop, we’ll purchase lend a hand of the Rails<br /> <code>accepts_nested_attributes_for</code> class formula. By along side<br /> <code>accepts_nested_attributes_for :customers</code> to <code>Yarn</code>,<br /> we’ll be in a quandary to get a <code>User</code> after we get its mother or father <code>Yarn</code>. </p> <p> <b>To get both resources genuine now with <code>accepts_nested_attributes_for</code>,<br /> we desire to battle by scheme of the mother or father (<code>Yarn</code>), no longer the petite one (<code>User</code>).</b><br /> Meaning we desire to trail our registration views and controller programs from <code>Users</code><br /> to <code>Accounts</code>. </p> <p> Watch <a href="https://github.com/Dino-SaaS/BugTracker/pull/6/commits/04b782a0bf10036de710e760813c541c6c4c150d"><br /> this commit</a> for how we done all of this. </p> <h3>6.3 – <code>Malicious program</code> CRUD operations battle by scheme of <code>Accounts</code></h3> <p> Now that <code>Accounts</code> are in space, <b>we desire to combine them with <code>Malicious program</code><br /> CRUD operations (Create, Study, Replace, Delete)</b>. </p> <p> This scheme about a issues: </p> <ol> <li>When a shopper creates a worm, it wants to be related to their story.</li> <li>A shopper can bear to <b>only</b> be in a quandary to see <code>Bugs</code> related to their<br /> <code>Yarn</code>, and no-one else’s.</li> <li>A shopper can bear to <b>only</b> be in a quandary to edit/execute <code>Bugs</code> related to<br /> their <code>Yarn</code>, and no-one else’s.</li> </ol> <p> <b>We repair this in <code>BugsController</code> by only querying for <code>Bugs</code><br /> <b>by scheme of</b> <code>current_user.story</code>.</b> You doubtlessly can see those adjustments<br /> <a href="https://github.com/Dino-SaaS/BugTracker/pull/6/files#diff-b22d334bf8654273b31c2eaa140c35102b7b0cb27180e709f32d7e27fc6530b8"><br /> right here</a>. </p> </div> <h2>Coming Quickly</h2> <p>That’s it for half 1! Whenever you bear made it this a ways,<strong> create sure to demonstrate us some love with a superstar on the </strong><a href="https://github.com/Dino-SaaS/BugTracker"><strong>Github Repo</strong></a><strong>.</strong></p> <p>Death to dangle what occurs next? (I know, staunch cliffhanger right here…) Fragment your electronic mail below to get notified about Share 2 and future start-supply MVP’s. I’ve obtained spirited capabilities planned love: </p> <ol role="list" start=""> <li>Interesting teammates</li> <li>Assigning bugs to teammates</li> <li>Search</li> <li>Malicious program conversations</li> <li>Slack notifications</li> </ol> <p><strong>What keep you like to see next?</strong> Whether or no longer it is unique BugTracker capabilities or a belief for a brand unique MVP, I would in reality like to listen to from you. Shoot me a message at hello@dinosaas.com. <br /></br></p> </div> </div> </div> </div> </div> <p><a href="https://www.dinosaas.com/articles/bugtracker-an-open-source-bug-tracking-app" class="button purchase" rel="nofollow noopener noreferrer" target="_blank">Read More</a></p> </div> <div class="post-share single-post-share bottom-share clearfix style-5"> <div class="post-share-btn-group"> <a href="https://gisttree.com/news/bugtracker-an-open-source-saas-app-built-with-a-step-by-step-tutorial/#respond" class="post-share-btn post-share-btn-comments comments" title="Leave a comment on: “BugTracker – an open-source SaaS app built with a step-by-step tutorial”"><i class="bf-icon fa fa-comments" aria-hidden="true"></i> <b class="number">0</b></a> </div> <div class="share-handler-wrap "> <span class="share-handler post-share-btn rank-default"> <i class="bf-icon fa fa-share-alt"></i> <b class="text">Share</b> </span> <span class="social-item facebook has-title"><a href="https://www.facebook.com/sharer.php?u=https%3A%2F%2Fgisttree.com%2Fnews%2Fbugtracker-an-open-source-saas-app-built-with-a-step-by-step-tutorial%2F" target="_blank" rel="nofollow noreferrer" class="bs-button-el" onclick="window.open(this.href, 'share-facebook','left=50,top=50,width=600,height=320,toolbar=0'); return false;"><span class="icon"><i class="bf-icon fa fa-facebook"></i></span><span class="item-title">Facebook</span></a></span><span class="social-item twitter has-title"><a href="https://twitter.com/share?text=BugTracker+%E2%80%93+an+open-source+SaaS+app+built+with+a+step-by-step+tutorial&url=https%3A%2F%2Fgisttree.com%2Fnews%2Fbugtracker-an-open-source-saas-app-built-with-a-step-by-step-tutorial%2F" target="_blank" rel="nofollow noreferrer" class="bs-button-el" onclick="window.open(this.href, 'share-twitter','left=50,top=50,width=600,height=320,toolbar=0'); return false;"><span class="icon"><i class="bf-icon fa fa-twitter"></i></span><span class="item-title">Twitter</span></a></span><span class="social-item google_plus has-title"><a href="https://plus.google.com/share?url=https%3A%2F%2Fgisttree.com%2Fnews%2Fbugtracker-an-open-source-saas-app-built-with-a-step-by-step-tutorial%2F" target="_blank" rel="nofollow noreferrer" class="bs-button-el" onclick="window.open(this.href, 'share-google_plus','left=50,top=50,width=600,height=320,toolbar=0'); return false;"><span class="icon"><i class="bf-icon fa fa-google"></i></span><span class="item-title">Google+</span></a></span><span class="social-item reddit has-title"><a href="https://reddit.com/submit?url=https%3A%2F%2Fgisttree.com%2Fnews%2Fbugtracker-an-open-source-saas-app-built-with-a-step-by-step-tutorial%2F&title=BugTracker+%E2%80%93+an+open-source+SaaS+app+built+with+a+step-by-step+tutorial" target="_blank" rel="nofollow noreferrer" class="bs-button-el" onclick="window.open(this.href, 'share-reddit','left=50,top=50,width=600,height=320,toolbar=0'); return false;"><span class="icon"><i class="bf-icon fa fa-reddit-alien"></i></span><span class="item-title">ReddIt</span></a></span><span class="social-item whatsapp has-title"><a href="whatsapp://send?text=BugTracker+%E2%80%93+an+open-source+SaaS+app+built+with+a+step-by-step+tutorial %0A%0A https%3A%2F%2Fgisttree.com%2Fnews%2Fbugtracker-an-open-source-saas-app-built-with-a-step-by-step-tutorial%2F" target="_blank" rel="nofollow noreferrer" class="bs-button-el" onclick="window.open(this.href, 'share-whatsapp','left=50,top=50,width=600,height=320,toolbar=0'); return false;"><span class="icon"><i class="bf-icon fa fa-whatsapp"></i></span><span class="item-title">WhatsApp</span></a></span><span class="social-item pinterest has-title"><a href="https://pinterest.com/pin/create/button/?url=https%3A%2F%2Fgisttree.com%2Fnews%2Fbugtracker-an-open-source-saas-app-built-with-a-step-by-step-tutorial%2F&media=https://gisttree.com/wp-content/uploads/2020/10/47144/bugtracker-an-open-source-saas-app-built-with-a-step-by-step-tutorial.png&description=BugTracker+%E2%80%93+an+open-source+SaaS+app+built+with+a+step-by-step+tutorial" target="_blank" rel="nofollow noreferrer" class="bs-button-el" onclick="window.open(this.href, 'share-pinterest','left=50,top=50,width=600,height=320,toolbar=0'); return false;"><span class="icon"><i class="bf-icon fa fa-pinterest"></i></span><span class="item-title">Pinterest</span></a></span><span class="social-item email has-title"><a href="mailto:?subject=BugTracker+%E2%80%93+an+open-source+SaaS+app+built+with+a+step-by-step+tutorial&body=https%3A%2F%2Fgisttree.com%2Fnews%2Fbugtracker-an-open-source-saas-app-built-with-a-step-by-step-tutorial%2F" target="_blank" rel="nofollow noreferrer" class="bs-button-el" onclick="window.open(this.href, 'share-email','left=50,top=50,width=600,height=320,toolbar=0'); return false;"><span class="icon"><i class="bf-icon fa fa-envelope-open"></i></span><span class="item-title">Email</span></a></span></div> </div> </article> <section class="post-author clearfix"> <a href="https://gisttree.com/author/admin/" title="Browse Author Articles"> <span class="post-author-avatar" itemprop="image"><img alt='' data-src='https://secure.gravatar.com/avatar/1264d4cfbe6c654c5dc9cb9e782dca63?s=80&d=mm&r=g' class='avatar avatar-80 photo avatar-default' height='80' width='80' /></span> </a> <div class="author-title heading-typo"> <a class="post-author-url" href="https://gisttree.com/author/admin/"><span class="post-author-name">Gisttree</span></a> <span class="title-counts">29787 posts</span> <span class="title-counts">0 comments</span> </div> <div class="author-links"> <ul class="author-social-icons"> <li class="social-item site"> <a href="https://gisttree.com" target="_blank" rel="nofollow noreferrer"><i class="fa fa-globe"></i></a> </li> </ul> </div> <div class="post-author-bio" itemprop="description"> </div> </section> <section class="next-prev-post clearfix"> <div class="prev-post"> <p class="pre-title heading-typo"><i class="fa fa-arrow-left"></i> Prev Post </p> <p class="title heading-typo"><a href="https://gisttree.com/news/polyform-licenses/" rel="prev">Polyform Licenses</a></p> </div> <div class="next-post"> <p class="pre-title heading-typo">Next Post <i class="fa fa-arrow-right"></i></p> <p class="title heading-typo"><a href="https://gisttree.com/reviews/the-nikon-small-world-competition/" rel="next">The Nikon Small World Competition</a></p> </div> </section> </div> <div class="post-related"> <div class="section-heading sh-t2 sh-s1 multi-tab"> <a href="#relatedposts_1291924086_1" class="main-link active" data-toggle="tab"> <span class="h-text related-posts-heading">You might also like</span> </a> <a href="#relatedposts_1291924086_2" class="other-link" data-toggle="tab" data-deferred-event="shown.bs.tab" data-deferred-init="relatedposts_1291924086_2"> <span class="h-text related-posts-heading">More from author</span> </a> </div> <div class="tab-content"> <div class="tab-pane bs-tab-anim bs-tab-animated active" id="relatedposts_1291924086_1"> <div class="bs-pagination-wrapper main-term-none next_prev "> <div class="listing listing-thumbnail listing-tb-2 clearfix scolumns-3 simple-grid include-last-mobile"> <div class="post-52562 type-post format-standard has-post-thumbnail listing-item listing-item-thumbnail listing-item-tb-2 main-term-11"> <div class="item-inner clearfix"> <div class="featured featured-type-featured-image"> <div class="term-badges floated"><span class="term-badge term-11"><a href="https://gisttree.com/category/news/">News</a></span></div> <a alt="Optimizations as a Company of One" title="Optimizations as a Company of One" data-src="https://gisttree.com/wp-content/uploads/2020/10/52562/optimizations-as-a-company-of-one-210x136.png" data-bs-srcset="{"baseurl":"https:\/\/gisttree.com\/wp-content\/uploads\/2020\/10\/52562\/","sizes":{"86":"optimizations-as-a-company-of-one-86x64.png","210":"optimizations-as-a-company-of-one-210x136.png","279":"optimizations-as-a-company-of-one-279x220.png","357":"optimizations-as-a-company-of-one-357x210.png","750":"optimizations-as-a-company-of-one-750x430.png","2400":"optimizations-as-a-company-of-one.png"}}" class="img-holder" href="https://gisttree.com/news/optimizations-as-a-company-of-one/"></a> </div> <p class="title"> <a class="post-url" href="https://gisttree.com/news/optimizations-as-a-company-of-one/" title="Optimizations as a Company of One"> <span class="post-title"> Optimizations as a Company of One </span> </a> </p></div> </div > <div class="post-52564 type-post format-standard has-post-thumbnail listing-item listing-item-thumbnail listing-item-tb-2 main-term-11"> <div class="item-inner clearfix"> <div class="featured featured-type-featured-image"> <div class="term-badges floated"><span class="term-badge term-11"><a href="https://gisttree.com/category/news/">News</a></span></div> <a alt="Twitter’s API access changes are chasing away third-party developers" title="Twitter’s API access changes are chasing away third-party developers" data-src="https://gisttree.com/wp-content/uploads/2020/10/52564/twitters-api-access-changes-are-chasing-away-third-party-developers-210x136.jpeg" data-bs-srcset="{"baseurl":"https:\/\/gisttree.com\/wp-content\/uploads\/2020\/10\/52564\/","sizes":{"86":"twitters-api-access-changes-are-chasing-away-third-party-developers-86x64.jpeg","210":"twitters-api-access-changes-are-chasing-away-third-party-developers-210x136.jpeg","279":"twitters-api-access-changes-are-chasing-away-third-party-developers-279x220.jpeg","357":"twitters-api-access-changes-are-chasing-away-third-party-developers-357x210.jpeg","622":"twitters-api-access-changes-are-chasing-away-third-party-developers.jpeg"}}" class="img-holder" href="https://gisttree.com/news/twitters-api-access-changes-are-chasing-away-third-party-developers/"></a> </div> <p class="title"> <a class="post-url" href="https://gisttree.com/news/twitters-api-access-changes-are-chasing-away-third-party-developers/" title="Twitter’s API access changes are chasing away third-party developers"> <span class="post-title"> Twitter’s API access changes are chasing away third-party developers </span> </a> </p></div> </div > <div class="post-52566 type-post format-standard has-post-thumbnail listing-item listing-item-thumbnail listing-item-tb-2 main-term-11"> <div class="item-inner clearfix"> <div class="featured featured-type-featured-image"> <div class="term-badges floated"><span class="term-badge term-11"><a href="https://gisttree.com/category/news/">News</a></span></div> <a alt="The Case Against the Singularity" title="The Case Against the Singularity" data-src="https://gisttree.com/wp-content/uploads/2020/10/52566/the-case-against-the-singularity-210x136.png" data-bs-srcset="{"baseurl":"https:\/\/gisttree.com\/wp-content\/uploads\/2020\/10\/52566\/","sizes":{"86":"the-case-against-the-singularity-86x64.png","210":"the-case-against-the-singularity-210x136.png","279":"the-case-against-the-singularity-279x220.png","357":"the-case-against-the-singularity-357x210.png","640":"the-case-against-the-singularity.png"}}" class="img-holder" href="https://gisttree.com/news/the-case-against-the-singularity/"></a> </div> <p class="title"> <a class="post-url" href="https://gisttree.com/news/the-case-against-the-singularity/" title="The Case Against the Singularity"> <span class="post-title"> The Case Against the Singularity </span> </a> </p></div> </div > <div class="post-52568 type-post format-standard has-post-thumbnail listing-item listing-item-thumbnail listing-item-tb-2 main-term-11"> <div class="item-inner clearfix"> <div class="featured featured-type-featured-image"> <div class="term-badges floated"><span class="term-badge term-11"><a href="https://gisttree.com/category/news/">News</a></span></div> <a alt="A State of Feast" title="A State of Feast" data-src="https://gisttree.com/wp-content/uploads/2020/10/52568/a-state-of-feast-210x136.png" data-bs-srcset="{"baseurl":"https:\/\/gisttree.com\/wp-content\/uploads\/2020\/10\/52568\/","sizes":{"86":"a-state-of-feast-86x64.png","210":"a-state-of-feast-210x136.png","279":"a-state-of-feast-279x220.png","357":"a-state-of-feast-357x210.png","750":"a-state-of-feast-750x430.png","1367":"a-state-of-feast.png"}}" class="img-holder" href="https://gisttree.com/news/a-state-of-feast/"></a> </div> <p class="title"> <a class="post-url" href="https://gisttree.com/news/a-state-of-feast/" title="A State of Feast"> <span class="post-title"> A State of Feast </span> </a> </p></div> </div > </div> </div><div class="bs-pagination bs-ajax-pagination next_prev main-term-none clearfix"> <script>var bs_ajax_paginate_1650585611 = '{"query":{"paginate":"next_prev","count":4,"post_type":"post","posts_per_page":4,"post__not_in":[47144],"ignore_sticky_posts":1,"post_status":["publish","private"],"category__in":[11],"_layout":{"state":"1|1|0","page":"2-col-right"}},"type":"wp_query","view":"Publisher::fetch_related_posts","current_page":1,"ajax_url":"\/wp-admin\/admin-ajax.php","remove_duplicates":"0","paginate":"next_prev","_layout":{"state":"1|1|0","page":"2-col-right"},"_bs_pagin_token":"2c260fe"}';</script> <a href="#prev-1650585611" class="btn-bs-pagination prev disabled" rel="prev" data-id="1650585611" title="Previous"> <i class="fa fa-angle-left" aria-hidden="true"></i> Prev </a> <a href="#next-1650585611" rel="next" class="btn-bs-pagination next" data-id="1650585611" title="Next"> Next <i class="fa fa-angle-right" aria-hidden="true"></i> </a> </div> </div> <div class="tab-pane bs-tab-anim bs-tab-animated bs-deferred-container" id="relatedposts_1291924086_2"> <div class="bs-pagination-wrapper main-term-none next_prev "> <div class="bs-deferred-load-wrapper" id="bsd_relatedposts_1291924086_2"> <script>var bs_deferred_loading_bsd_relatedposts_1291924086_2 = '{"query":{"paginate":"next_prev","count":4,"author":1,"post_type":"post","_layout":{"state":"1|1|0","page":"2-col-right"}},"type":"wp_query","view":"Publisher::fetch_other_related_posts","current_page":1,"ajax_url":"\/wp-admin\/admin-ajax.php","remove_duplicates":"0","paginate":"next_prev","_layout":{"state":"1|1|0","page":"2-col-right"},"_bs_pagin_token":"2157a29"}';</script> </div> </div> </div> </div> </div> <section id="comments-template-47144" class="comments-template"> <div id="respond" class="comment-respond"> <p id="reply-title" class="comment-reply-title"><div class="section-heading sh-t2 sh-s1" ><span class="h-text">Leave A Reply</span></div> <small><a rel="nofollow" id="cancel-comment-reply-link" href="/news/bugtracker-an-open-source-saas-app-built-with-a-step-by-step-tutorial/#respond" style="display:none;">Cancel Reply</a></small></p><form action="https://gisttree.com/wp-comments-post.php" method="post" id="commentform" class="comment-form" novalidate><div class="note-before"><p>Your email address will not be published.</p> </div><p class="comment-wrap"><textarea name="comment" class="comment" id="comment" cols="45" rows="10" aria-required="true" placeholder="Your Comment"></textarea></p><p class="author-wrap"><input name="author" class="author" id="author" type="text" value="" size="45" aria-required="true" placeholder="Your Name *" /></p> <p class="email-wrap"><input name="email" class="email" id="email" type="text" value="" size="45" aria-required="true" placeholder="Your Email *" /></p> <p class="url-wrap"><input name="url" class="url" id="url" type="text" value="" size="45" placeholder="Your Website" /></p> <p class="comment-form-cookies-consent"><input id="wp-comment-cookies-consent" name="wp-comment-cookies-consent" type="checkbox" value="yes" /><label for="wp-comment-cookies-consent">Save my name, email, and website in this browser for the next time I comment.</label></p> <p class="form-submit"><input name="submit" type="submit" id="comment-submit" class="comment-submit" value="Post Comment" /> <input type='hidden' name='comment_post_ID' value='47144' id='comment_post_ID' /> <input type='hidden' name='comment_parent' id='comment_parent' value='0' /> </p><p style="display: none;"><input type="hidden" id="akismet_comment_nonce" name="akismet_comment_nonce" value="78cd6756c1" /></p><p style="display: none;"><input type="hidden" id="ak_js" name="ak_js" value="40"/></p></form> </div><!-- #respond --> </section> </div><!-- .content-column --> <div class="col-sm-4 sidebar-column sidebar-column-primary"> <aside id="sidebar-primary-sidebar" class="sidebar" role="complementary" aria-label="Primary Sidebar Sidebar" itemscope="itemscope" itemtype="https://schema.org/WPSideBar"> <div id="cdqaugpe-2" class=" h-ni w-nt primary-sidebar-widget widget widget_cdqaugpe"><div class="cdqaugpe cdqaugpe-clearfix cdqaugpe-align-center cdqaugpe-column-1"><div id="cdqaugpe-44582-1188113017" class="cdqaugpe-container cdqaugpe-type-image " itemscope="" itemtype="https://schema.org/WPAdBlock" data-adid="44582" data-type="image"><a itemprop="url" class="cdqaugpe-link" href="https://gisttree.com/get-in-touch/" target="_blank" ><img class="cdqaugpe-image" src="https://gisttree.com/wp-content/uploads/2020/10/Advertise-here-300-250-Gisttree.jpg" alt="- Advertisement -" /></a><p class='cdqaugpe-caption cdqaugpe-caption-below'>- Advertisement -</p></div></div></div><div id="bs-text-listing-3-2" class=" h-ni w-t primary-sidebar-widget widget widget_bs-text-listing-3"><div class=" bs-listing bs-listing-listing-text-3 bs-listing-single-tab pagination-animate"> <p class="section-heading sh-t2 sh-s1 main-term-none"> <span class="h-text main-term-none main-link"> latest news </span> </p> <div class="bs-pagination-wrapper main-term-none next_prev bs-slider-first-item"> <div class="listing listing-text listing-text-3 clearfix columns-1"> <div class="post-52580 type-post format-standard has-post-thumbnail listing-item listing-item-text listing-item-text-3 main-term-13"> <div class="item-inner"> <p class="title"> <a href="https://gisttree.com/reviews/its-dangerous-to-think-humans-have-a-destiny-outside-earth/" class="post-title post-url"> It’s dangerous to think humans have a destiny outside Earth </a> </p> <div class="post-meta"> <span class="time"><time class="post-published updated" datetime="2020-10-29T15:39:24+00:00">Oct 29, 2020</time></span> </div> </div> </div > <div class="post-52582 type-post format-standard has-post-thumbnail listing-item listing-item-text listing-item-text-3 main-term-13"> <div class="item-inner"> <p class="title"> <a href="https://gisttree.com/reviews/what-was-remote-yc-like/" class="post-title post-url"> What Was Remote YC Like? </a> </p> <div class="post-meta"> <span class="time"><time class="post-published updated" datetime="2020-10-29T15:39:23+00:00">Oct 29, 2020</time></span> </div> </div> </div > <div class="post-52583 type-post format-standard has-post-thumbnail listing-item listing-item-text listing-item-text-3 main-term-13"> <div class="item-inner"> <p class="title"> <a href="https://gisttree.com/reviews/microsoft-overhauls-excel-with-custom-data-types/" class="post-title post-url"> Microsoft Overhauls Excel with Custom Data Types </a> </p> <div class="post-meta"> <span class="time"><time class="post-published updated" datetime="2020-10-29T15:39:22+00:00">Oct 29, 2020</time></span> </div> </div> </div > <div class="post-52585 type-post format-standard has-post-thumbnail listing-item listing-item-text listing-item-text-3 main-term-13"> <div class="item-inner"> <p class="title"> <a href="https://gisttree.com/reviews/ceos-of-google-twitter-and-facebook-grilled-in-senate-hearing/" class="post-title post-url"> CEOs of Google, Twitter and Facebook Grilled in Senate Hearing </a> </p> <div class="post-meta"> <span class="time"><time class="post-published updated" datetime="2020-10-29T15:39:21+00:00">Oct 29, 2020</time></span> </div> </div> </div > <div class="post-52587 type-post format-standard has-post-thumbnail listing-item listing-item-text listing-item-text-3 main-term-13"> <div class="item-inner"> <p class="title"> <a href="https://gisttree.com/reviews/americans-view-u-s-tech-companies-in-2020-pew-research-center/" class="post-title post-url"> Americans view U.S. tech companies in 2020 – Pew Research Center </a> </p> <div class="post-meta"> <span class="time"><time class="post-published updated" datetime="2020-10-29T15:39:20+00:00">Oct 29, 2020</time></span> </div> </div> </div > </div> </div><div class="bs-pagination bs-ajax-pagination next_prev main-term-none clearfix"> <script>var bs_ajax_paginate_488685126 = '{"query":{"category":"","tag":"","taxonomy":"","post_ids":"","post_type":"","count":"5","order_by":"date","order":"DESC","time_filter":"","offset":"","style":"listing-text-3","show_excerpt":0,"cats-tags-condition":"and","cats-condition":"in","tags-condition":"in","featured_image":0,"ignore_sticky_posts":1,"author_ids":"","disable_duplicate":"0","ad-active":0,"paginate":"next_prev","pagination-show-label":"1","columns":"1","listing-settings":{"title-limit":"120","excerpt-limit":"200","subtitle":"0","subtitle-limit":"0","subtitle-location":"before-meta","meta":{"show":"1","author":"0","date":"1","date-format":"standard","view":"0","share":"0","comment":"0","review":"1"}},"_layout":{"state":"1|1|0","page":"2-col-right"}},"type":"bs_post_listing","view":"Publisher_Text_Listing_3_Shortcode","current_page":1,"ajax_url":"\/wp-admin\/admin-ajax.php","remove_duplicates":"0","pagination-show-label":"1","listing-settings":{"title-limit":"120","excerpt-limit":"200","subtitle":"0","subtitle-limit":"0","subtitle-location":"before-meta","meta":{"show":"1","author":"0","date":"1","date-format":"standard","view":"0","share":"0","comment":"0","review":"1"}},"paginate":"next_prev","columns":"1","show_excerpt":0,"ad-active":false,"_layout":{"state":"1|1|0","page":"2-col-right"},"_bs_pagin_token":"2fad128","data":{"vars":{"post-ranking-offset":5}}}';</script> <a href="#prev-488685126" class="btn-bs-pagination prev disabled" rel="prev" data-id="488685126" title="Previous"> <i class="fa fa-angle-left" aria-hidden="true"></i> Prev </a> <a href="#next-488685126" rel="next" class="btn-bs-pagination next" data-id="488685126" title="Next"> Next <i class="fa fa-angle-right" aria-hidden="true"></i> </a> <span class="bs-pagination-label label-light">1 of 5,958</span> </div></div></div><div id="bs-subscribe-newsletter-2" class=" h-ni w-bg w-bg-f9f9f9 w-nt primary-sidebar-widget widget widget_bs-subscribe-newsletter"><div class="section-heading sh-t2 sh-s1"><span class="h-text">Newsletter</span></div> <div class="bs-shortcode bs-subscribe-newsletter bs-feedburner-newsletter "> <div class="subscribe-message"> <p>Get the best of world News delivered to your inbox daily</p> </div> <form method="post" action="//feedburner.google.com/fb/a/mailverify" class="bs-subscribe-feedburner clearfix" target="_blank"> <input type="hidden" value="" name="uri"/> <input type="hidden" name="loc" value="en_US"/> <input type="text" id="feedburner-email" name="email" class="newsletter-email" placeholder="Enter your e-mail .."/> <button class="newsletter-subscribe" name="submit" type="submit">Subscribe</button> </form> </div> </div></aside> </div><!-- .primary-sidebar-column --> </div><!-- .main-section --> </div><!-- .container --> </main><!-- main --> </div><!-- .content-wrap --> <footer id="site-footer" class="site-footer full-width"> <div class="footer-widgets dark-text"> <div class="content-wrap"> <div class="container"> <div class="row"> <div class="col-sm-3"> <aside id="sidebar-footer-1" class="sidebar" role="complementary" aria-label="Footer - Column 1 Sidebar" itemscope="itemscope" itemtype="https://schema.org/WPSideBar"> <div id="bs-about-2" class=" h-ni w-t footer-widget footer-column-1 widget widget_bs-about"><div class="section-heading sh-t2 sh-s1"><span class="h-text">About Us</span></div><div class="bs-shortcode bs-about "> <h4 class="about-title"> <a href="https://gisttree.com/about-us/"> <img class="logo-image" src="https://gisttree.com/wp-content/uploads/2020/10/Logo.png" alt="GistTree.Com"> </a> </h4> <div class="about-text"> <p>Welcome to Gisttree.com, your number one world's most visited entertainment website. We're dedicated to providing you the very best of news and entertainment, with an emphasis on Dignity, Respect, and Love.</p> </div> <div class="about-link heading-typo"> <a href="https://gisttree.com/about-us/">Read More...</a> </div> <ul class="about-icons-list"><li class="about-icon-item facebook"><a href="https://www.facebook.com/gisttree/" target="_blank"><i class="fa fa-facebook"></i></a><li class="about-icon-item twitter"><a href="#" target="_blank"><i class="fa fa-twitter"></i></a><li class="about-icon-item google-plus"><a href="#" target="_blank"><i class="fa fa-google"></i></a><li class="about-icon-item instagram"><a href="#" target="_blank"><i class="fa fa-instagram"></i></a><li class="about-icon-item email"><a href="mailto:Gisttree@gmail.com" target="_blank"><i class="fa fa-envelope"></i></a><li class="about-icon-item telegram"><a href="https://telegram.org/gisttree" target="_blank"><i class="fa fa-send"></i></a></ul></div> </div> </aside> </div> <div class="col-sm-3"> <aside id="sidebar-footer-2" class="sidebar" role="complementary" aria-label="Footer - Column 2 Sidebar" itemscope="itemscope" itemtype="https://schema.org/WPSideBar"> <div id="categories-4" class=" h-ni w-nt footer-widget footer-column-2 widget widget_categories"><div class="section-heading sh-t2 sh-s1"><span class="h-text">Categories</span></div> <ul> <li class="cat-item cat-item-911"><a href="https://gisttree.com/category/culture/">Culture</a> </li> <li class="cat-item cat-item-912"><a href="https://gisttree.com/category/bs-economy/">Economy</a> </li> <li class="cat-item cat-item-913"><a href="https://gisttree.com/category/bs-entertainment/">Entertainment</a> </li> <li class="cat-item cat-item-11"><a href="https://gisttree.com/category/news/" title="You can add some category description here.">News</a> </li> <li class="cat-item cat-item-916"><a href="https://gisttree.com/category/opinion/">Opinion</a> </li> <li class="cat-item cat-item-917"><a href="https://gisttree.com/category/bs-politics/">Politics</a> </li> <li class="cat-item cat-item-13"><a href="https://gisttree.com/category/reviews/" title="You can add some category description here.">Reviews</a> </li> <li class="cat-item cat-item-918"><a href="https://gisttree.com/category/bs-sports/">Sports</a> </li> <li class="cat-item cat-item-1"><a href="https://gisttree.com/category/uncategorized/">Uncategorized</a> </li> <li class="cat-item cat-item-920"><a href="https://gisttree.com/category/bs-world/">World</a> </li> </ul> </div> </aside> </div> <div class="col-sm-3"> <aside id="sidebar-footer-3" class="sidebar" role="complementary" aria-label="Footer - Column 3 Sidebar" itemscope="itemscope" itemtype="https://schema.org/WPSideBar"> <div id="nav_menu-3" class=" h-ni w-t footer-widget footer-column-3 widget widget_nav_menu"><div class="section-heading sh-t2 sh-s1"><span class="h-text">CATEGORIES</span></div><div class="menu-mobile-navigation-container"><ul id="menu-mobile-navigation" class="menu"><li id="menu-item-1483" class="menu-item menu-item-type-post_type menu-item-object-page current_page_parent menu-item-1483"><a href="https://gisttree.com/home-1/">Home</a></li> <li id="menu-item-1485" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1485"><a href="https://gisttree.com/about-us/">About Us</a></li> <li id="menu-item-1487" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1487"><a href="https://gisttree.com/get-in-touch/">Contact Us</a></li> <li id="menu-item-1486" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1486"><a href="https://gisttree.com/advertise-with-us/">Advertise With Us</a></li> <li id="menu-item-1484" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-privacy-policy menu-item-1484"><a href="https://gisttree.com/privacy-policy/">Privacy Policy</a></li> </ul></div></div> </aside> </div> <div class="col-sm-3"> <aside id="sidebar-footer-4" class="sidebar" role="complementary" aria-label="Footer - Column 4 Sidebar" itemscope="itemscope" itemtype="https://schema.org/WPSideBar"> <div id="cdqaugpe-4" class=" h-ni w-t footer-widget footer-column-4 widget widget_cdqaugpe"><div class="section-heading sh-t2 sh-s1"><span class="h-text">Advertise with us</span></div><div class="bsac bsac-clearfix bsac-align-center bsac-column-1"></div></div> </aside> </div> </div> </div> </div> </div> <div class="copy-footer"> <div class="content-wrap"> <div class="container"> <div class="row"> <div class="col-lg-12"> <div id="menu-footer" class="menu footer-menu-wrapper" role="navigation" itemscope="itemscope" itemtype="https://schema.org/SiteNavigationElement"> <nav class="footer-menu-container"> <ul id="footer-navigation" class="footer-menu menu clearfix"> <li id="menu-item-44782" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-home better-anim-fade menu-item-44782"><a href="https://gisttree.com/">News</a></li> <li id="menu-item-44783" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-term-917 better-anim-fade menu-item-44783"><a href="https://gisttree.com/category/bs-politics/">Politics</a></li> <li id="menu-item-44784" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-term-920 better-anim-fade menu-item-44784"><a href="https://gisttree.com/category/bs-world/">World</a></li> <li id="menu-item-44785" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-term-912 better-anim-fade menu-item-44785"><a href="https://gisttree.com/category/bs-economy/">Economy</a></li> <li id="menu-item-44786" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-term-913 better-anim-fade menu-item-44786"><a href="https://gisttree.com/category/bs-entertainment/">Entertainment</a></li> <li id="menu-item-44787" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-term-918 better-anim-fade menu-item-44787"><a href="https://gisttree.com/category/bs-sports/">Sports</a></li> <li id="menu-item-44788" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-term-916 better-anim-fade menu-item-44788"><a href="https://gisttree.com/category/opinion/">Opinion</a></li> <li id="menu-item-44789" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-term-911 better-anim-fade menu-item-44789"><a href="https://gisttree.com/category/culture/">Culture</a></li> </ul> </nav> </div> </div> </div> <div class="row footer-copy-row"> <div class="copy-1 col-lg-6 col-md-6 col-sm-6 col-xs-12"> © 2020 - GistTree. All Rights Reserved. </div> <div class="copy-2 col-lg-6 col-md-6 col-sm-6 col-xs-12"> Website Design: <a href="http://Gisttree.com/">Gisttree</a> </div> </div> </div> </div> </div> </footer><!-- .footer --> </div><!-- .main-wrap --> <span class="back-top"><i class="fa fa-arrow-up"></i></span> <!--Start of Tawk.to Script (0.3.3)--> <script type="text/javascript"> var Tawk_API=Tawk_API||{}; var Tawk_LoadStart=new Date(); (function(){ var s1=document.createElement("script"),s0=document.getElementsByTagName("script")[0]; s1.async=true; s1.src='https://embed.tawk.to/5f270c8f4f3c7f1c910daa54/default'; s1.charset='UTF-8'; s1.setAttribute('crossorigin','*'); s0.parentNode.insertBefore(s1,s0); })(); </script> <!--End of Tawk.to Script (0.3.3)--><script> var bs_pagination_loc = {"loading":"<div class=\"bs-loading\"><div><\/div><div><\/div><div><\/div><div><\/div><div><\/div><div><\/div><div><\/div><div><\/div><div><\/div><\/div>"}; </script> <script> var publisher_theme_global_loc = {"page":{"boxed":"full-width"},"header":{"style":"style-2","boxed":"out-full-width"},"ajax_url":"https:\/\/gisttree.com\/wp-admin\/admin-ajax.php","loading":"<div class=\"bs-loading\"><div><\/div><div><\/div><div><\/div><div><\/div><div><\/div><div><\/div><div><\/div><div><\/div><div><\/div><\/div>","translations":{"tabs_all":"All","tabs_more":"More","lightbox_expand":"Expand the image","lightbox_close":"Close"},"lightbox":{"not_classes":""},"main_menu":{"more_menu":"enable"},"top_menu":{"more_menu":"enable"},"skyscraper":{"sticky_gap":30,"sticky":true,"position":"after-header"},"share":{"more":true},"refresh_googletagads":"1","notification":{"subscribe_msg":"By clicking the subscribe button you will never miss the new articles!","subscribed_msg":"You're subscribed to notifications","subscribe_btn":"Subscribe","subscribed_btn":"Unsubscribe"}}; var publisher_theme_ajax_search_loc = {"ajax_url":"https:\/\/gisttree.com\/wp-admin\/admin-ajax.php","previewMarkup":"<div class=\"ajax-search-results-wrapper ajax-search-no-product ajax-search-fullwidth\">\n\t<div class=\"ajax-search-results\">\n\t\t<div class=\"ajax-ajax-posts-list\">\n\t\t\t<div class=\"clean-title heading-typo\">\n\t\t\t\t<span>Posts<\/span>\n\t\t\t<\/div>\n\t\t\t<div class=\"posts-lists\" data-section-name=\"posts\"><\/div>\n\t\t<\/div>\n\t\t<div class=\"ajax-taxonomy-list\">\n\t\t\t<div class=\"ajax-categories-columns\">\n\t\t\t\t<div class=\"clean-title heading-typo\">\n\t\t\t\t\t<span>Categories<\/span>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"posts-lists\" data-section-name=\"categories\"><\/div>\n\t\t\t<\/div>\n\t\t\t<div class=\"ajax-tags-columns\">\n\t\t\t\t<div class=\"clean-title heading-typo\">\n\t\t\t\t\t<span>Tags<\/span>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"posts-lists\" data-section-name=\"tags\"><\/div>\n\t\t\t<\/div>\n\t\t<\/div>\n\t<\/div>\n<\/div>","full_width":"1"}; </script> <div class="rh-cover noscroll " style="background-color: #a0a0a0"> <span class="rh-close"></span> <div class="rh-panel rh-pm"> <div class="rh-p-h"> <span class="user-login"> <span class="user-avatar user-avatar-icon"><i class="fa fa-user-circle"></i></span> Sign in </span> </div> <div class="rh-p-b"> <div class="rh-c-m clearfix"></div> <form role="search" method="get" class="search-form" action="https://gisttree.com"> <input type="search" class="search-field" placeholder="Search..." value="" name="s" title="Search for:" autocomplete="off"> <input type="submit" class="search-submit" value=""> </form> </div> </div> <div class="rh-panel rh-p-u"> <div class="rh-p-h"> <span class="rh-back-menu"><i></i></span> </div> <div class="rh-p-b"> <div id="form_82864_" class="bs-shortcode bs-login-shortcode "> <div class="bs-login bs-type-login" style="display:none"> <div class="bs-login-panel bs-login-sign-panel bs-current-login-panel"> <form name="loginform" action="https://gisttree.com/wp-login.php" method="post"> <div class="login-header"> <span class="login-icon fa fa-user-circle main-color"></span> <p>Welcome, Login to your account.</p> </div> <div class="login-field login-username"> <input type="text" name="log" id="form_82864_user_login" class="input" value="" size="20" placeholder="Username or Email..." required/> </div> <div class="login-field login-password"> <input type="password" name="pwd" id="form_82864_user_pass" class="input" value="" size="20" placeholder="Password..." required/> </div> <div class="login-field"> <a href="https://gisttree.com/wp-login.php?action=lostpassword&redirect_to=https%3A%2F%2Fgisttree.com%2Fnews%2Fbugtracker-an-open-source-saas-app-built-with-a-step-by-step-tutorial%2F" class="go-reset-panel">Forget password?</a> <span class="login-remember"> <input class="remember-checkbox" name="rememberme" type="checkbox" id="form_82864_rememberme" value="forever" /> <label class="remember-label">Remember me</label> </span> </div> <div class="login-field login-submit"> <input type="submit" name="wp-submit" class="button-primary login-btn" value="Log In"/> <input type="hidden" name="redirect_to" value="https://gisttree.com/news/bugtracker-an-open-source-saas-app-built-with-a-step-by-step-tutorial/"/> </div> </form> </div> <div class="bs-login-panel bs-login-reset-panel"> <span class="go-login-panel"><i class="fa fa-angle-left"></i> Sign in</span> <div class="bs-login-reset-panel-inner"> <div class="login-header"> <span class="login-icon fa fa-support"></span> <p>Recover your password.</p> <p>A password will be e-mailed to you.</p> </div> <form name="lostpasswordform" id="form_82864_lostpasswordform" action="https://gisttree.com/wp-login.php?action=lostpassword" method="post"> <div class="login-field reset-username"> <input type="text" name="user_login" class="input" value="" placeholder="Username or Email..." required/> </div> <div class="login-field reset-submit"> <input type="hidden" name="redirect_to" value=""/> <input type="submit" name="wp-submit" class="login-btn" value="Send My Password"/> </div> </form> </div> </div> </div> </div> </div> </div> </div> <script type='text/javascript'> /* <![CDATA[ */ var leadin_wordpress = {"userRole":"visitor","pageType":"post","leadinPluginVersion":"7.43.4"}; /* ]]> */ </script> <script async defer id="hs-script-loader" type='text/javascript' src='//js.hs-scripts.com/8203241.js?integration=WordPress'></script> <script type='text/javascript' src='https://c0.wp.com/c/5.4.2/wp-includes/js/comment-reply.min.js'></script> <script type='text/javascript' src='https://c0.wp.com/c/5.4.2/wp-includes/js/wp-embed.min.js'></script> <script type='text/javascript' src='https://cdn.onesignal.com/sdks/OneSignalSDK.js?ver=5.4.2' async='async'></script> <script type='text/javascript' src='https://gisttree.com/wp-content/plugins/better-adsmanager/js/advertising.min.js?ver=1.19.3'></script> <script async="async" type='text/javascript' src='https://gisttree.com/wp-content/plugins/akismet/_inc/form.js?ver=4.1.6'></script> <script type='text/javascript' async="async" src='https://gisttree.com/wp-content/bs-booster-cache/763fdd9841587350dd3d0353008e0e35.js?ver=5.4.2'></script> <script> var cdqaugpe=function(t){"use strict";return{init:function(){0==cdqaugpe.ads_state()&&cdqaugpe.blocked_ads_fallback()},ads_state:function(){return void 0!==window.better_ads_adblock},blocked_ads_fallback:function(){var a=[];t(".cdqaugpe-container").each(function(){if("image"==t(this).data("type"))return 0;a.push({element_id:t(this).attr("id"),ad_id:t(this).data("adid")})}),a.length<1||jQuery.ajax({url:'https://gisttree.com/wp-admin/admin-ajax.php',type:"POST",data:{action:"better_ads_manager_blocked_fallback",ads:a},success:function(a){var e=JSON.parse(a);t.each(e.ads,function(a,e){t("#"+e.element_id).html(e.code)})}})}}}(jQuery);jQuery(document).ready(function(){cdqaugpe.init()}); </script> <script type='text/javascript' src='https://stats.wp.com/e-202044.js' async='async' defer='defer'></script> <script type='text/javascript'> _stq = window._stq || []; _stq.push([ 'view', {v:'ext',j:'1:9.0.2',blog:'164486942',post:'47144',tz:'0',srv:'gisttree.com'} ]); _stq.push([ 'clickTrackerInit', '164486942', '47144' ]); </script> </body> </html> <!-- This website is like a Rocket, isn't it? Performance optimized by WP Rocket. Learn more: https://wp-rocket.me -->