<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: MrNaif2018</title>
    <description>The latest articles on Forem by MrNaif2018 (@mrnaif2018).</description>
    <link>https://forem.com/mrnaif2018</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F195415%2Fc1a04e0b-5a3a-40c0-b8dc-02caf8040952.png</url>
      <title>Forem: MrNaif2018</title>
      <link>https://forem.com/mrnaif2018</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/mrnaif2018"/>
    <language>en</language>
    <item>
      <title>Universalasync – create sync and async libraries at the same time maintaining one codebase</title>
      <dc:creator>MrNaif2018</dc:creator>
      <pubDate>Wed, 29 Dec 2021 17:21:27 +0000</pubDate>
      <link>https://forem.com/mrnaif2018/universalasync-create-sync-and-async-libraries-at-the-same-time-maintaining-one-codebase-2dam</link>
      <guid>https://forem.com/mrnaif2018/universalasync-create-sync-and-async-libraries-at-the-same-time-maintaining-one-codebase-2dam</guid>
      <description>&lt;p&gt;I would like to show my new Python library universalasync: &lt;a href="https://github.com/bitcartcc/universalasync"&gt;https://github.com/bitcartcc/universalasync&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem
&lt;/h2&gt;

&lt;p&gt;Async/await is become more and more popular in python and it makes sense to use it quite often to do something useful when waiting on network I/O. But it is not possible to use blocking (sync) libraries as it would block the whole event loop and defeat the purpose of asynchronous programming. So specialized libraries need to be created. In the same time, async is not always required, so a sync interface is demanded often for all the libraries.&lt;br&gt;
For the library maintainers (like me) it causes an issue what to do. Often we need to maintain two codebases which differ only a little bit.&lt;/p&gt;

&lt;p&gt;Some libraries create &lt;code&gt;async_*&lt;/code&gt; variants of functions, or create classes like &lt;code&gt;AsyncClient&lt;/code&gt; or use other methods of creating sync versions (for example in my another library some time ago I was just removing async and await and publishing this as a separate package, &lt;code&gt;mylib&lt;/code&gt; and &lt;code&gt;mylib-async&lt;/code&gt;).&lt;br&gt;
The solution&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;universalasync&lt;/code&gt; library provides utilities to help library maintainers create so-called "universal" libraries. You need to create only asynchronous version of your library, and synchronous version will be created automatically, so that users could use it in their sync and async apps interchangeably.&lt;/p&gt;

&lt;p&gt;The library has 0 dependencies of course, it wraps all public methods of a class to it's implementation. It basically does what you would have done if you needed to run a coroutine from your sync code, but automatically.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;universalasync&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;wrap&lt;/span&gt;

&lt;span class="o"&gt;@&lt;/span&gt;&lt;span class="n"&gt;wrap&lt;/span&gt;
&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Client&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;help&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="p"&gt;...&lt;/span&gt;

    &lt;span class="o"&gt;@&lt;/span&gt;&lt;span class="nb"&gt;property&lt;/span&gt;
    &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;async_property&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="p"&gt;...&lt;/span&gt;

&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Client&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;sync_call&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;help&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;async_property&lt;/span&gt;

&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;async_call&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;help&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;async_property&lt;/span&gt;

&lt;span class="c1"&gt;# works in all cases
&lt;/span&gt;&lt;span class="n"&gt;sync_call&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;asyncio&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;run&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;async_call&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;span class="n"&gt;threading&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Thread&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;target&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;sync_call&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="n"&gt;start&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;threading&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Thread&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;target&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;asyncio&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;run&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;async_call&lt;/span&gt;&lt;span class="p"&gt;(),)).&lt;/span&gt;&lt;span class="n"&gt;start&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;API reference can be found here: &lt;a href="https://universalasync.bitcartcc.com/en/latest/api.html"&gt;https://universalasync.bitcartcc.com/en/latest/api.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Any feedback, testing and bugs found welcome!&lt;/p&gt;

</description>
      <category>python</category>
      <category>showdev</category>
      <category>programming</category>
    </item>
    <item>
      <title>Hacktoberfest 2021 - Completed as Contributor and Maintainer!</title>
      <dc:creator>MrNaif2018</dc:creator>
      <pubDate>Mon, 18 Oct 2021 18:57:26 +0000</pubDate>
      <link>https://forem.com/mrnaif2018/hacktoberfest-2021-completed-as-contributor-and-maintainer-341i</link>
      <guid>https://forem.com/mrnaif2018/hacktoberfest-2021-completed-as-contributor-and-maintainer-341i</guid>
      <description>&lt;p&gt;I have participated in hacktoberfest for the third time now. This time I was officially participating as a contributor and a maintainer. &lt;br&gt;
Great thing is, each year I can see more contribution activity in my repositories and some PRs surprise me a lot!&lt;/p&gt;
&lt;h2&gt;
  
  
  As a contributor
&lt;/h2&gt;

&lt;p&gt;As a contributor I opened 4 pull requests in those repos:&lt;/p&gt;
&lt;h3&gt;
  
  
  Opsdroid
&lt;/h3&gt;

&lt;p&gt;This has already become my tradition to contribute to opsdroid each year, this is an amazing framework for creating bots for any platform.&lt;/p&gt;

&lt;p&gt;This time I helped them migrate to aioredis 2.0 (and then used the experience I've got to do the same in my own project), and to set up proper docker images builds:&lt;br&gt;
&lt;a href="https://github.com/opsdroid/opsdroid/pull/1835"&gt;https://github.com/opsdroid/opsdroid/pull/1835&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/opsdroid/opsdroid/pull/1836"&gt;https://github.com/opsdroid/opsdroid/pull/1836&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Fastkml
&lt;/h3&gt;

&lt;p&gt;Fastkml is a library to read, write and manipulate KML files&lt;/p&gt;

&lt;p&gt;Here I helped to drop python 2 support as it is EOL now, as well as to help them migrate to &lt;code&gt;pygeoif&lt;/code&gt; 1.0 and many intermediate fixes. I learned how the python 2 -&amp;gt; python 3 migrations were actually done (&lt;code&gt;lib2to3&lt;/code&gt;+&lt;code&gt;pyupgrade --py36-plus&lt;/code&gt;+manual fixes)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/cleder/fastkml/pull/135"&gt;https://github.com/cleder/fastkml/pull/135&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/cleder/fastkml/pull/136"&gt;https://github.com/cleder/fastkml/pull/136&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There were a few more PRs, some were to my own repos, so that doesn't count. &lt;/p&gt;
&lt;h2&gt;
  
  
  As a maintainer
&lt;/h2&gt;

&lt;p&gt;This time the contribution activity has increased. Some PRs were just of amazing quality!&lt;/p&gt;

&lt;p&gt;Our &lt;code&gt;bitcart-store&lt;/code&gt; repository has received the most of PRs.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;MaximeKoitsalu&lt;/code&gt; has helped us to migrate all styles from stylus to sass (to make it themeable later):&lt;br&gt;
&lt;a href="https://github.com/bitcartcc/bitcart-store/pull/321"&gt;https://github.com/bitcartcc/bitcart-store/pull/321&lt;/a&gt;&lt;br&gt;
&lt;code&gt;leovoon&lt;/code&gt; has helped us to reach 100% accessibility score in lighthouse, which is very important to every solid web project:&lt;br&gt;
&lt;a href="https://github.com/bitcartcc/bitcart-store/pull/326"&gt;https://github.com/bitcartcc/bitcart-store/pull/326&lt;/a&gt;&lt;br&gt;
&lt;code&gt;shubham-singh-748&lt;/code&gt; has added Hindi translation to &lt;code&gt;bitcart-site&lt;/code&gt;:&lt;br&gt;
&lt;a href="https://github.com/bitcartcc/bitcart-site/pull/87"&gt;https://github.com/bitcartcc/bitcart-site/pull/87&lt;/a&gt;&lt;br&gt;
The PR of the month, &lt;code&gt;Xaconi&lt;/code&gt; has added a nice well-animated, responsive cart sidebar to the store:&lt;br&gt;
&lt;a href="https://github.com/bitcartcc/bitcart-store/pull/325"&gt;https://github.com/bitcartcc/bitcart-store/pull/325&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For now I've got only 4 pull requests from contributors, but that's already amazing!&lt;/p&gt;

&lt;p&gt;If you want to contribute, feel free to do so, any repositories in bitcartcc github organization are open:&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--i3JOwpme--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/github-logo-ba8488d21cd8ee1fee097b8410db9deaa41d0ca30b004c0c63de0a479114156f.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/bitcartcc"&gt;
        bitcartcc
      &lt;/a&gt; / &lt;a href="https://github.com/bitcartcc/bitcart"&gt;
        bitcart
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      https://bitcartcc.com
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
BitcartCC&lt;/h1&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://camo.githubusercontent.com/78a85e80a714130cb2bcda816a87b26e42e4f7794fbb55bd7a0c423a6d93ee80/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616c6c2d636f6e7472696275746f72732f6269746361727463632f626974636172743f7374796c653d666c61742d737175617265"&gt;&lt;img src="https://camo.githubusercontent.com/78a85e80a714130cb2bcda816a87b26e42e4f7794fbb55bd7a0c423a6d93ee80/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616c6c2d636f6e7472696275746f72732f6269746361727463632f626974636172743f7374796c653d666c61742d737175617265" alt="Github All Contributors"&gt;&lt;/a&gt;
&lt;a href="https://circleci.com/gh/bitcartcc/bitcart" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/a52166734b0fd3c81b7d99505d46ca9b64e606731255906eb34cb2bfa984ab93/68747470733a2f2f636972636c6563692e636f6d2f67682f6269746361727463632f626974636172742e7376673f7374796c653d737667" alt="CircleCI"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer" href="https://camo.githubusercontent.com/f0cbb7ff2f04c82218c520d36557e4c2a7e9b5f56e11c890e1612831264905e8/68747470733a2f2f696d672e736869656c64732e696f2f636f6465636f762f632f6769746875622f6269746361727463632f626974636172743f7374796c653d666c61742d737175617265"&gt;&lt;img src="https://camo.githubusercontent.com/f0cbb7ff2f04c82218c520d36557e4c2a7e9b5f56e11c890e1612831264905e8/68747470733a2f2f696d672e736869656c64732e696f2f636f6465636f762f632f6769746875622f6269746361727463632f626974636172743f7374796c653d666c61742d737175617265" alt="Codecov"&gt;&lt;/a&gt;
&lt;a href="https://docs.bitcartcc.com" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/8914e190e035a89a39850eddf1e8192db4bb06fcd616bbd5737ddfdab1a4f6d2/68747470733a2f2f696d672e736869656c64732e696f2f707970692f707976657273696f6e732f626974636172743f7374796c653d666c61742d737175617265" alt="Python versions"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;BitcartCC is a platform for merchants, users and developers which offers easy setup and use.&lt;/p&gt;
&lt;h2&gt;
Linked repositories&lt;/h2&gt;
&lt;p&gt;Our ecosystem consists of a few packages, this is our central repository.&lt;/p&gt;
&lt;p&gt;It is recommended to propose feature requests to BitcartCC ecosystem as a whole on that repository.&lt;/p&gt;
&lt;p&gt;Full list of our repositories:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/bitcartcc/bitcart"&gt;https://github.com/bitcartcc/bitcart&lt;/a&gt; - BitcartCC Core Daemons and Merchants API&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/bitcartcc/bitcart-admin"&gt;https://github.com/bitcartcc/bitcart-admin&lt;/a&gt; - The admin panel of BitcartCC&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/bitcartcc/bitcart-store"&gt;https://github.com/bitcartcc/bitcart-store&lt;/a&gt; - BitcartCC ready store&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/bitcartcc/bitcart-docker"&gt;https://github.com/bitcartcc/bitcart-docker&lt;/a&gt; - Docker packaging, base for all deployment methods&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/bitcartcc/bitcart-sdk"&gt;https://github.com/bitcartcc/bitcart-sdk&lt;/a&gt; - Python library for coins connection&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/bitcartcc/bitccl"&gt;https://github.com/bitcartcc/bitccl&lt;/a&gt; - The BitCCL scripting language for checkout flow automation&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/bitcartcc/bitcart-docs"&gt;https://github.com/bitcartcc/bitcart-docs&lt;/a&gt; - &lt;a href="https://docs.bitcartcc.com" rel="nofollow"&gt;BitcartCC documentation&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/bitcartcc/bitcart-site"&gt;https://github.com/bitcartcc/bitcart-site&lt;/a&gt; - &lt;a href="https://bitcartcc.com" rel="nofollow"&gt;BitcartCC official site&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
Docs&lt;/h2&gt;
&lt;p&gt;Docs are available at &lt;a href="https://docs.bitcartcc.com" rel="nofollow"&gt;https://docs.bitcartcc.com&lt;/a&gt; or in our &lt;a href="https://github.com/bitcartcc/bitcart-docs"&gt;docs repository&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
Contributing&lt;/h2&gt;
&lt;p&gt;See &lt;a href="https://github.com/bitcartcc/bitcart/blob/master/CONTRIBUTING.md"&gt;our contributing guidelines&lt;/a&gt; for details.&lt;/p&gt;
&lt;h2&gt;
Contributors ✨
&lt;/h2&gt;
&lt;p&gt;Thanks goes to these wonderful people (&lt;a href="https://allcontributors.org/docs/en/emoji-key" rel="nofollow"&gt;emoji key&lt;/a&gt;):&lt;/p&gt;
&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
  &lt;tbody&gt;
&lt;tr&gt;
    &lt;td&gt;
&lt;a href="https://github.com/MrNaif2018"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ljkp5TvY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://avatars3.githubusercontent.com/u/39452697%3Fv%3D4%3Fs%3D100" width="100px;" alt=""&gt;&lt;br&gt;&lt;b&gt;MrNaif2018&lt;/b&gt;&lt;/a&gt;&lt;br&gt;&lt;a href="https://github.com/bitcartcc/bitcart#maintenance-MrNaif2018" title="Maintenance"&gt;🚧&lt;/a&gt; &lt;a href="https://github.com/bitcartcc/bitcart/commits?author=MrNaif2018" title="Code"&gt;💻&lt;/a&gt; &lt;a href="https://github.com/bitcartcc/bitcart/commits?author=MrNaif2018" title="Documentation"&gt;📖&lt;/a&gt; &lt;a href="https://github.com/bitcartcc/bitcart#design-MrNaif2018" title="Design"&gt;🎨&lt;/a&gt;
&lt;/td&gt;
    &lt;td&gt;
&lt;a href="https://github.com/tomasmor42"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qEAmWWIe--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://avatars2.githubusercontent.com/u/42064734%3Fv%3D4%3Fs%3D100" width="100px;" alt=""&gt;&lt;br&gt;&lt;b&gt;tomasmor42&lt;/b&gt;&lt;/a&gt;&lt;br&gt;&lt;a href="https://github.com/bitcartcc/bitcart/commits?author=tomasmor42" title="Code"&gt;💻&lt;/a&gt;
&lt;/td&gt;
    &lt;td&gt;
&lt;a href="https://github.com/yagicandegirmenci"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--sbVsyYLO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://avatars3.githubusercontent.com/u/62724709%3Fv%3D4%3Fs%3D100" width="100px;" alt=""&gt;&lt;br&gt;&lt;b&gt;Yağız Değirmenci&lt;/b&gt;&lt;/a&gt;&lt;br&gt;&lt;a href="https://github.com/bitcartcc/bitcart/commits?author=yagicandegirmenci" title="Code"&gt;💻&lt;/a&gt;
&lt;/td&gt;
    &lt;td&gt;
&lt;a href="https://github.com/xiaoxianma"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--GxQ52Ym_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://avatars0.githubusercontent.com/u/3086064%3Fv%3D4%3Fs%3D100" width="100px;" alt=""&gt;&lt;br&gt;&lt;b&gt;Weidong Sun&lt;/b&gt;&lt;/a&gt;&lt;br&gt;&lt;a href="https://github.com/bitcartcc/bitcart/commits?author=xiaoxianma" title="Code"&gt;💻&lt;/a&gt;
&lt;/td&gt;
    &lt;td&gt;
&lt;a href="https://github.com/kartecianos"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8aJJwEp---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://avatars2.githubusercontent.com/u/43797783%3Fv%3D4%3Fs%3D100" width="100px;" alt=""&gt;&lt;br&gt;&lt;b&gt;kartecianos&lt;/b&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;…&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/bitcartcc/bitcart"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;div class="ltag__link"&gt;
  &lt;a href="/bitcartcc" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__org__pic"&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--33xWv2Ly--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://res.cloudinary.com/practicaldev/image/fetch/s--9XjNXLtV--/c_fill%2Cf_auto%2Cfl_progressive%2Ch_150%2Cq_auto%2Cw_150/https://dev-to-uploads.s3.amazonaws.com/uploads/organization/profile_image/3027/3641de0a-a397-4914-8191-f7708aa14723.jpg" alt="BitcartCC"&gt;
      &lt;div class="ltag__link__user__pic"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ji_iiq25--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://res.cloudinary.com/practicaldev/image/fetch/s--2hV8gtsH--/c_fill%2Cf_auto%2Cfl_progressive%2Ch_150%2Cq_auto%2Cw_150/https://dev-to-uploads.s3.amazonaws.com/uploads/user/profile_image/195415/c1a04e0b-5a3a-40c0-b8dc-02caf8040952.png" alt=""&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/bitcartcc/contribute-to-bitcartcc-this-hacktoberfest-4aof" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Contribute to BitcartCC this Hacktoberfest!&lt;/h2&gt;
      &lt;h3&gt;MrNaif2018 for BitcartCC ・ Oct 1 ・ 2 min read&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#hacktoberfest&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#opensource&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#python&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#vue&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


&lt;p&gt;By the way we need your help in refactoring our code to make our tests fully independent and upgrade to &lt;code&gt;fastapi&lt;/code&gt; 0.70.0!&lt;/p&gt;


&lt;div class="ltag_github-liquid-tag"&gt;
  &lt;h1&gt;
    &lt;a href="https://github.com/bitcartcc/bitcart/issues/247"&gt;
      &lt;img class="github-logo" alt="GitHub logo" src="https://res.cloudinary.com/practicaldev/image/fetch/s--i3JOwpme--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/github-logo-ba8488d21cd8ee1fee097b8410db9deaa41d0ca30b004c0c63de0a479114156f.svg"&gt;
      &lt;span class="issue-title"&gt;
        Refactor the code to initialize event loop only from async functions
      &lt;/span&gt;
      &lt;span class="issue-number"&gt;#247&lt;/span&gt;
    &lt;/a&gt;
  &lt;/h1&gt;
  &lt;div class="github-thread"&gt;
    &lt;div class="timeline-comment-header"&gt;
      &lt;a href="https://github.com/MrNaif2018"&gt;
        &lt;img class="github-liquid-tag-img" src="https://res.cloudinary.com/practicaldev/image/fetch/s--mkjVWXyo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://avatars.githubusercontent.com/u/39452697%3Fv%3D4" alt="MrNaif2018 avatar"&gt;
      &lt;/a&gt;
      &lt;div class="timeline-comment-header-text"&gt;
        &lt;strong&gt;
          &lt;a href="https://github.com/MrNaif2018"&gt;MrNaif2018&lt;/a&gt;
        &lt;/strong&gt; posted on &lt;a href="https://github.com/bitcartcc/bitcart/issues/247"&gt;&lt;time&gt;Oct 10, 2021&lt;/time&gt;&lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag-github-body"&gt;
      &lt;p&gt;The time has come. Python 3.10 is released which means that our old ways won't work, and new event loop would be created always.
Recently our tests got broken because of fastapi 0.69.0 release, which uses anyio. We had many issues with &lt;code&gt;too many concurrent operations in progress&lt;/code&gt; because of event loop mismatch, and are using some workarounds in &lt;code&gt;pytest-asyncio&lt;/code&gt; to make everything use same event loop:
&lt;a href="https://github.com/bitcartcc/bitcart/blob/ac129fae929d0853137d327762ef7750537627b6/tests/conftest.py#L32-L34"&gt;https://github.com/bitcartcc/bitcart/blob/ac129fae929d0853137d327762ef7750537627b6/tests/conftest.py#L32-L34&lt;/a&gt;
&lt;a href="https://github.com/bitcartcc/bitcart/blob/ac129fae929d0853137d327762ef7750537627b6/tests/conftest.py#L38"&gt;https://github.com/bitcartcc/bitcart/blob/ac129fae929d0853137d327762ef7750537627b6/tests/conftest.py#L38&lt;/a&gt;
&lt;a href="https://github.com/bitcartcc/bitcart/blob/ac129fae929d0853137d327762ef7750537627b6/tests/conftest.py#L44"&gt;https://github.com/bitcartcc/bitcart/blob/ac129fae929d0853137d327762ef7750537627b6/tests/conftest.py#L44&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;SDK might need to be refactored as well. &lt;code&gt;settings.py&lt;/code&gt; should be refactored to a class, most initialization might be moved to other files, possibly &lt;code&gt;Worker&lt;/code&gt; class could be introduced to initialize &lt;code&gt;worker.py&lt;/code&gt;. Adding new scheduled tasks system could be refactored as well.
redis pool and other connections need to be created on startup from async functions, not on import. Test suite workarounds should be removed and it should just work
If everything works then we can probably remove &lt;code&gt;asyncio.get_event_loop().run_until_complete&lt;/code&gt; in favour of &lt;code&gt;asyncio.run&lt;/code&gt;&lt;/p&gt;

    &lt;/div&gt;
    &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/bitcartcc/bitcart/issues/247"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;


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

&lt;p&gt;Hacktoberfest is not done yet, and I plan to continue doing my contributions to my own and other projects as always.&lt;br&gt;
This time it was better than before because pull requests were counted only if they were accepted or merged and not just if they were opened, which reduced spam greatly.&lt;br&gt;
Have a happy Hacktoberfest!&lt;/p&gt;

</description>
      <category>hacktoberfest</category>
    </item>
    <item>
      <title>Contribute to BitcartCC this Hacktoberfest!</title>
      <dc:creator>MrNaif2018</dc:creator>
      <pubDate>Fri, 01 Oct 2021 20:37:41 +0000</pubDate>
      <link>https://forem.com/bitcartcc/contribute-to-bitcartcc-this-hacktoberfest-4aof</link>
      <guid>https://forem.com/bitcartcc/contribute-to-bitcartcc-this-hacktoberfest-4aof</guid>
      <description>&lt;p&gt;BitcartCC is an opensource self-hosted cryptocurrency solution for merchants and developers. We want to build a modern platform with no legacy code but strong compatibility policy where community choices impact the decisions done.&lt;/p&gt;

&lt;h2&gt;
  
  
  Project description
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Merchants
&lt;/h3&gt;

&lt;p&gt;If you are a merchant, BitcartCC provides a ready &lt;a href="https://api.bitcartcc.com"&gt;Merchants API&lt;/a&gt; for integrating into custom sites or complex systems, full &lt;a href="https://admin.bitcartcc.com"&gt;admin panel&lt;/a&gt; for managing wallets, stores, products, invoices or something more complex and a checkout page, and a lightweight &lt;a href="https://store.bitcartcc.com"&gt;store template&lt;/a&gt; which can be used in POS terminals for example or for merchants without any ready website.&lt;/p&gt;

&lt;p&gt;The links provided are our demo instance, but the main feature is that all merchants are encouraged to run BitcartCC instances on their own servers to be fully independent. Latest minimal requirements are 1 gb ram (with swap enabled) or 2 gb ram and around 20 gb disk. This is using a special technology for verification which makes it light and secure.&lt;br&gt;
BitcartCC can be hosted on amd64, arm32 and arm64 machines (like a raspberry pi)&lt;/p&gt;

&lt;h3&gt;
  
  
  Developers
&lt;/h3&gt;

&lt;p&gt;For developers we provide a ready python SDK which can be used not only for receiving payments, but also for sending payments or getting some information from the blockchain. From any language it is possible to access our JSON-RPC 2.0 API.&lt;/p&gt;

&lt;p&gt;The app is deployed in docker containers where users can install only the needed components&lt;/p&gt;

&lt;p&gt;And there is a lot more to that, check out &lt;a href="https://bitcartcc.com"&gt;https://bitcartcc.com&lt;/a&gt; and &lt;a href="https://docs.bitcartcc.com"&gt;https://docs.bitcartcc.com&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How can I contribute?
&lt;/h2&gt;

&lt;p&gt;You can contribute to BitcartCC in various ways. Any help is valuable: testing it out, finding and reporting bugs, requesting new features or implementing them.&lt;/p&gt;

&lt;p&gt;All contributors will be mentored so that they will understand how the project works&lt;/p&gt;

&lt;p&gt;If you want to contribute to project in terms of pull request, here's the &lt;a href="https://github.com/bitcartcc/bitcart/issues/243"&gt;full list of issues&lt;/a&gt; you can try tacking&lt;/p&gt;

&lt;p&gt;Our project has many languages involved: python, docker, vue, bash, golang, js, yaml, markdown and more. So you can learn a lot of new things by contributing!&lt;/p&gt;

&lt;p&gt;Issues marked with &lt;code&gt;good-first-issue&lt;/code&gt; label should be good ones to start with the project, issues with &lt;code&gt;help-wanted&lt;/code&gt; label are usually more complex and require at least basic understanding of the parts involved.&lt;/p&gt;

&lt;p&gt;But don't worry! You can always ask questions in our github or &lt;a href="https://bitcartcc.com/#community"&gt;communities&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Happy hacking 🚀&lt;/p&gt;

</description>
      <category>hacktoberfest</category>
      <category>opensource</category>
      <category>python</category>
      <category>vue</category>
    </item>
    <item>
      <title>What is a good free cloud database allowing ~= 50 incoming connections?</title>
      <dc:creator>MrNaif2018</dc:creator>
      <pubDate>Thu, 15 Apr 2021 21:08:39 +0000</pubDate>
      <link>https://forem.com/mrnaif2018/what-is-a-good-free-cloud-database-allowing-50-incoming-connections-3hip</link>
      <guid>https://forem.com/mrnaif2018/what-is-a-good-free-cloud-database-allowing-50-incoming-connections-3hip</guid>
      <description>&lt;p&gt;Hello! I am writing an application for history lessons to help students learn history more efficiently. As it's a side-project, and also pretty local one, I want to avoid any costs on it. I was able to host frontend on Netlify, and backend in Python on Vercel (serverless). But in order to store the data I need some database to connect to. I see heroku postgres as one of the options, which seems fine, but it allows only 20 connections at a time, while possible peak load is around 50 connections. What is a good free cloud database for that? It could be postgres, or something else. Ideally I want it to be working for years without touching, if it is even possible (:&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>postgres</category>
      <category>database</category>
      <category>devops</category>
    </item>
    <item>
      <title>Hacktoberfest 2020 - completed!</title>
      <dc:creator>MrNaif2018</dc:creator>
      <pubDate>Fri, 02 Oct 2020 20:45:39 +0000</pubDate>
      <link>https://forem.com/mrnaif2018/hacktoberfest-2020-completed-l56</link>
      <guid>https://forem.com/mrnaif2018/hacktoberfest-2020-completed-l56</guid>
      <description>&lt;p&gt;I am participating in hacktoberfest for the second time, and it is amazing. I am also participating as a maintainer, and I have never seen so much activities on my projects.&lt;br&gt;
Here are my 4 PR's:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--27YjfeNy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/c584hwsbwcixsipbvgd2.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--27YjfeNy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/c584hwsbwcixsipbvgd2.jpg" alt="photo_2020-10-02_23-40-03"&gt;&lt;/a&gt;&lt;br&gt;
Once again I have contributed to opsdroid:&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--i3JOwpme--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/github-logo-ba8488d21cd8ee1fee097b8410db9deaa41d0ca30b004c0c63de0a479114156f.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/opsdroid"&gt;
        opsdroid
      &lt;/a&gt; / &lt;a href="https://github.com/opsdroid/opsdroid"&gt;
        opsdroid
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      🤖 An open source chat-ops bot framework
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h6&gt;
&lt;a rel="noopener noreferrer" href="https://github.com/opsdroid/style-guidelines/raw/master/logos/logo-wide-light.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_mEPuz2b--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/opsdroid/style-guidelines/raw/master/logos/logo-wide-light.png" alt="Opsdroid Logo"&gt;&lt;/a&gt;
&lt;/h6&gt;
&lt;h4&gt;
An open source chat-ops bot framework&lt;/h4&gt;
&lt;p&gt;
&lt;a href="https://pypi.python.org/pypi" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/aa30197ba97ef395af1d91e775054d10a6abff689e49479bedd555bf2d866ebd/68747470733a2f2f696d672e736869656c64732e696f2f707970692f762f6f707364726f69642e737667" alt="Current version of pypi"&gt;&lt;/a&gt;
&lt;a href="https://github.com/opsdroid/opsdroid/actions"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--g8HQSE_---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/opsdroid/opsdroid/workflows/CI/badge.svg%3Fevent%3Dpush%26branch%3Dmaster" alt="Github CI Status"&gt;&lt;/a&gt;
&lt;a href="https://codecov.io/gh/opsdroid/opsdroid" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/4b13a4516fd56def1518dcbf636901785fed5c9a91134e2a1101a00d1dbe1066/68747470733a2f2f696d672e736869656c64732e696f2f636f6465636f762f632f6769746875622f6f707364726f69642f6f707364726f69642e737667" alt="codecov"&gt;&lt;/a&gt;
&lt;a href="https://bettercodehub.com/" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/c63b2cbe492870257f0076f96b2c9dc6d55dd2e0ecb5cd03150606e7aa678fb9/68747470733a2f2f626574746572636f64656875622e636f6d2f656467652f62616467652f6f707364726f69642f6f707364726f69643f6272616e63683d6d6173746572" alt="BCH compliance"&gt;&lt;/a&gt;
&lt;a href="https://hub.docker.com/r/opsdroid/opsdroid/builds/" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/86840c739920c383205a2eb91b82ce471c86bdb85b8e097d34bb3ba227106b1f/68747470733a2f2f696d672e736869656c64732e696f2f646f636b65722f6275696c642f6f707364726f69642f6f707364726f69642e737667" alt="Docker Build"&gt;&lt;/a&gt;
&lt;a href="https://hub.docker.com/r/opsdroid/opsdroid/builds/" rel="nofollow"&gt;&lt;img alt="Docker Image Size (latest by date)" src="https://camo.githubusercontent.com/fc86423de2c3c6fada05cb24a050a4443007a8bdfbc2109bf2eb3f1d341172fd/68747470733a2f2f696d672e736869656c64732e696f2f646f636b65722f696d6167652d73697a652f6f707364726f69642f6f707364726f69643f6c6162656c3d696d61676525323073697a65"&gt;&lt;/a&gt;&lt;a href="https://microbadger.com/#/images/opsdroid/opsdroid" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/f6e1fb4db181492b62e09a8431511e029cc27e70a985f2db20101d8a2aa8acdb/68747470733a2f2f696d672e736869656c64732e696f2f6d6963726f6261646765722f6c61796572732f6f707364726f69642f6f707364726f69642e737667" alt="Docker Layers"&gt;&lt;/a&gt;
&lt;a href="http://opsdroid.readthedocs.io/en/stable/?badge=stable" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/012152cacd9b850df920988d671720314852410833f3c04bb6bc736440822fba/68747470733a2f2f696d672e736869656c64732e696f2f72656164746865646f63732f6f707364726f69642f6c61746573742e737667" alt="Documentation Status"&gt;&lt;/a&gt;
&lt;a href="https://app.element.io/#/room/#opsdroid-general:matrix.org" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/b096a4c3f9c8701254e64bc501aab0d1c31e1a2eea0bf4c23a09bd5780236f42/68747470733a2f2f696d672e736869656c64732e696f2f6d61747269782f6f707364726f69642d67656e6572616c3a6d61747269782e6f72672e7376673f6c6f676f3d6d6174726978" alt="Matrix Chat"&gt;&lt;/a&gt;
&lt;a href="https://raw.githubusercontent.com/opsdroid/opsdroid/master/#backers"&gt;&lt;img src="https://camo.githubusercontent.com/dfbbb47a93fafe75ebb85128be8a1780c9ec3c535b3df6bdf516effa99d8d64f/68747470733a2f2f6f70656e636f6c6c6563746976652e636f6d2f6f707364726f69642f6261636b6572732f62616467652e737667" alt="Backers on Open Collective"&gt;&lt;/a&gt;
&lt;a href="https://raw.githubusercontent.com/opsdroid/opsdroid/master/#sponsors"&gt;&lt;img src="https://camo.githubusercontent.com/59bf6da84187ab6aa1290442a2adfc16ced37f120edf1f5a752cb691624428c2/68747470733a2f2f6f70656e636f6c6c6563746976652e636f6d2f6f707364726f69642f73706f6e736f72732f62616467652e737667" alt="Sponsors on Open Collective"&gt;&lt;/a&gt;
&lt;a href="https://www.codetriage.com/opsdroid/opsdroid" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/76d79ed88558aace5e25f81edec39b0ea44c5c7d45ba6266bc5d6ac675b1c73a/68747470733a2f2f7777772e636f64657472696167652e636f6d2f6f707364726f69642f6f707364726f69642f6261646765732f75736572732e737667" alt="Open Source Helpers"&gt;&lt;/a&gt;
&lt;/p&gt;




&lt;p&gt;
  &lt;a href="https://docs.opsdroid.dev/en/stable/quickstart.html" rel="nofollow"&gt;Quick Start&lt;/a&gt; •
  &lt;a href="https://docs.opsdroid.dev" rel="nofollow"&gt;Documentation&lt;/a&gt; •
  &lt;a href="https://playground.opsdroid.dev" rel="nofollow"&gt;Playground&lt;/a&gt; •
  &lt;a href="https://medium.com/opsdroid" rel="nofollow"&gt;Blog&lt;/a&gt; •
  &lt;a href="https://app.element.io/#/room/#opsdroid-general:matrix.org" rel="nofollow"&gt;Community&lt;/a&gt;
&lt;/p&gt;




&lt;p&gt;An open source chatbot framework written in Python. It is designed to be extendable, scalable and simple.&lt;/p&gt;

&lt;p&gt;This framework is designed to take events from chat services and other sources and execute Python functions (skills) based on their contents. Those functions can be anything you like, from simple conversational responses to running complex tasks. The true power of this project is to act as a glue library to bring the multitude of natural language APIs, chat services and third-party APIs together.&lt;/p&gt;

&lt;p&gt;See &lt;a href="https://docs.opsdroid.dev" rel="nofollow"&gt;our full documentation&lt;/a&gt; to get started.&lt;/p&gt;

&lt;h3&gt;
Contributors&lt;/h3&gt;

&lt;p&gt;This project exists thanks to all the people who contribute. [&lt;a href="https://docs.opsdroid.dev/en/stable/contributing.html#contributing" rel="nofollow"&gt;Contribute&lt;/a&gt;]
&lt;a href="https://github.com/opsdroid/opsdroid/graphs/contributors"&gt;&lt;img src="https://camo.githubusercontent.com/0f0f0e7851f5c0a1689d5c790578c4bec41a144248538c436088ca6e2f738ecd/68747470733a2f2f6f70656e636f6c6c6563746976652e636f6d2f6f707364726f69642f636f6e7472696275746f72732e7376673f77696474683d383930"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
Backers&lt;/h2&gt;
&lt;p&gt;Thank you to all our backers! 🙏 [&lt;a href="https://opencollective.com/opsdroid#backer" rel="nofollow"&gt;Become a backer&lt;/a&gt;]&lt;/p&gt;
&lt;p&gt;&lt;a href="https://opencollective.com/opsdroid#backers" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/887270a0a736cd03f69459d1c30f6efff198f1e3eabb49b56f66528638914401/68747470733a2f2f6f70656e636f6c6c6563746976652e636f6d2f6f707364726f69642f6261636b6572732e7376673f77696474683d383930"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
Sponsors&lt;/h2&gt;
&lt;p&gt;Support this project by becoming a sponsor. Your logo will show up here with a link to your…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/opsdroid/opsdroid"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;br&gt;
It is a really amazing platform for creating chat bots - like dialogflow, but open source, and you can create a bot for many platforms with just one config file, and you can create custom skills.&lt;br&gt;
I have learned about testing signals in python code&lt;br&gt;
Also I have learned about datasette project, which I might explore more and use later on.&lt;br&gt;
Also I found nuclear:&lt;br&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--i3JOwpme--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/github-logo-ba8488d21cd8ee1fee097b8410db9deaa41d0ca30b004c0c63de0a479114156f.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/ArkScript-lang"&gt;
        ArkScript-lang
      &lt;/a&gt; / &lt;a href="https://github.com/ArkScript-lang/nuclear"&gt;
        nuclear
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      ArkScript package manager - a Python proof of concept
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
Nuclear - poc&lt;/h1&gt;
&lt;p&gt;An ArkScript Package Manager&lt;/p&gt;
&lt;h2&gt;
Instructions to Run&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Pre-Requisites&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Python3.6 or above&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Directions to install&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Clone the repo&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight highlight-source-shell js-code-highlight"&gt;
&lt;pre&gt;git clone https://github.com/ArkScript-lang/nuclear&lt;/pre&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Navigate into the repo&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight highlight-source-shell js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-c1"&gt;cd&lt;/span&gt; nuclear&lt;/pre&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Activate a virtual env&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight highlight-source-shell js-code-highlight"&gt;
&lt;pre&gt;python3 -m venv ./venv
&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; windows&lt;/span&gt;
.&lt;span class="pl-cce"&gt;\v&lt;/span&gt;env&lt;span class="pl-cce"&gt;\S&lt;/span&gt;cripts&lt;span class="pl-cce"&gt;\a&lt;/span&gt;ctivate.bat
&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; linux&lt;/span&gt;
&lt;span class="pl-c1"&gt;source&lt;/span&gt; ./venv/bin/activate&lt;/pre&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Install the requirements&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight highlight-source-shell js-code-highlight"&gt;
&lt;pre&gt;pip3 install -r requirements.txt&lt;/pre&gt;

&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
Troubleshooting&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;If you're facing an issue where you cannot download any more tarballs, you might have been rate limited by GitHub&lt;/li&gt;
&lt;li&gt;To increase the rate limit, generate a &lt;a href="https://github.com/settings/tokens"&gt;personal access token&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;add token to nuclear&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight highlight-source-shell js-code-highlight"&gt;
&lt;pre&gt;nuclear --login --token &lt;span class="pl-k"&gt;&amp;lt;&lt;/span&gt;YOUR TOKEN HERE&lt;span class="pl-k"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h2&gt;
Commands&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;To see the help command&lt;/p&gt;
&lt;div class="highlight highlight-source-shell js-code-highlight"&gt;
&lt;pre&gt;nuclear -h&lt;/pre&gt;

&lt;/div&gt;
&lt;div class="highlight highlight-source-shell js-code-highlight"&gt;
&lt;pre&gt;nuclear --help&lt;/pre&gt;

&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Authentication (&lt;a href="https://github.com/settings/tokens"&gt;using Github Access Token&lt;/a&gt;)&lt;/p&gt;
&lt;div class="highlight highlight-source-shell js-code-highlight"&gt;
&lt;pre&gt; --token TOKEN     GitHub token, required &lt;span class="pl-k"&gt;if&lt;/span&gt; rate limiting is an issue&lt;/pre&gt;

&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;To Install an ArkScript Package from Github&lt;/p&gt;
&lt;div class="highlight highlight-source-shell js-code-highlight"&gt;
&lt;pre&gt;nuclear install [-h] [-v VERSION] package&lt;/pre&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Positional Arguments
format of the package:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight highlight-source-shell js-code-highlight"&gt;
&lt;pre&gt;user/repo&lt;/pre&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Optional Arguments
&lt;ul&gt;&lt;li&gt;…&lt;/li&gt;&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/ArkScript-lang/nuclear"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;br&gt;
It is pretty basic now, but I like the concept of a package manager, and I always wanted to create one-so I will either help this project or create my own :D Currently learning about creating lockfiles.&lt;br&gt;
That's it! For sure it's not the end of hacktoberfest, as I will look into more repos, and I am of course welcoming contributions on my own repository:&lt;br&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--i3JOwpme--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/github-logo-ba8488d21cd8ee1fee097b8410db9deaa41d0ca30b004c0c63de0a479114156f.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/bitcartcc"&gt;
        bitcartcc
      &lt;/a&gt; / &lt;a href="https://github.com/bitcartcc/bitcart"&gt;
        bitcart
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      https://bitcartcc.com
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
BitcartCC&lt;/h1&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://camo.githubusercontent.com/78a85e80a714130cb2bcda816a87b26e42e4f7794fbb55bd7a0c423a6d93ee80/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616c6c2d636f6e7472696275746f72732f6269746361727463632f626974636172743f7374796c653d666c61742d737175617265"&gt;&lt;img src="https://camo.githubusercontent.com/78a85e80a714130cb2bcda816a87b26e42e4f7794fbb55bd7a0c423a6d93ee80/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616c6c2d636f6e7472696275746f72732f6269746361727463632f626974636172743f7374796c653d666c61742d737175617265" alt="Github All Contributors"&gt;&lt;/a&gt;
&lt;a href="https://circleci.com/gh/bitcartcc/bitcart" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/a52166734b0fd3c81b7d99505d46ca9b64e606731255906eb34cb2bfa984ab93/68747470733a2f2f636972636c6563692e636f6d2f67682f6269746361727463632f626974636172742e7376673f7374796c653d737667" alt="CircleCI"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer" href="https://camo.githubusercontent.com/f0cbb7ff2f04c82218c520d36557e4c2a7e9b5f56e11c890e1612831264905e8/68747470733a2f2f696d672e736869656c64732e696f2f636f6465636f762f632f6769746875622f6269746361727463632f626974636172743f7374796c653d666c61742d737175617265"&gt;&lt;img src="https://camo.githubusercontent.com/f0cbb7ff2f04c82218c520d36557e4c2a7e9b5f56e11c890e1612831264905e8/68747470733a2f2f696d672e736869656c64732e696f2f636f6465636f762f632f6769746875622f6269746361727463632f626974636172743f7374796c653d666c61742d737175617265" alt="Codecov"&gt;&lt;/a&gt;
&lt;a href="https://docs.bitcartcc.com" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/8914e190e035a89a39850eddf1e8192db4bb06fcd616bbd5737ddfdab1a4f6d2/68747470733a2f2f696d672e736869656c64732e696f2f707970692f707976657273696f6e732f626974636172743f7374796c653d666c61742d737175617265" alt="Python versions"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;BitcartCC is a platform for merchants, users and developers which offers easy setup and use.&lt;/p&gt;
&lt;h2&gt;
Linked repositories&lt;/h2&gt;
&lt;p&gt;Our ecosystem consists of a few packages, this is our central repository.&lt;/p&gt;
&lt;p&gt;It is recommended to propose feature requests to BitcartCC ecosystem as a whole on that repository.&lt;/p&gt;
&lt;p&gt;Full list of our repositories:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/bitcartcc/bitcart"&gt;https://github.com/bitcartcc/bitcart&lt;/a&gt; - BitcartCC Core Daemons and Merchants API&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/bitcartcc/bitcart-admin"&gt;https://github.com/bitcartcc/bitcart-admin&lt;/a&gt; - The admin panel of BitcartCC&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/bitcartcc/bitcart-store"&gt;https://github.com/bitcartcc/bitcart-store&lt;/a&gt; - BitcartCC ready store&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/bitcartcc/bitcart-docker"&gt;https://github.com/bitcartcc/bitcart-docker&lt;/a&gt; - Docker packaging, base for all deployment methods&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/bitcartcc/bitcart-sdk"&gt;https://github.com/bitcartcc/bitcart-sdk&lt;/a&gt; - Python library for coins connection&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/bitcartcc/bitccl"&gt;https://github.com/bitcartcc/bitccl&lt;/a&gt; - The BitCCL scripting language for checkout flow automation&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/bitcartcc/bitcart-docs"&gt;https://github.com/bitcartcc/bitcart-docs&lt;/a&gt; - &lt;a href="https://docs.bitcartcc.com" rel="nofollow"&gt;BitcartCC documentation&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/bitcartcc/bitcart-site"&gt;https://github.com/bitcartcc/bitcart-site&lt;/a&gt; - &lt;a href="https://bitcartcc.com" rel="nofollow"&gt;BitcartCC official site&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
Docs&lt;/h2&gt;
&lt;p&gt;Docs are available at &lt;a href="https://docs.bitcartcc.com" rel="nofollow"&gt;https://docs.bitcartcc.com&lt;/a&gt; or in our &lt;a href="https://github.com/bitcartcc/bitcart-docs"&gt;docs repository&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
Contributing&lt;/h2&gt;
&lt;p&gt;See &lt;a href="https://github.com/bitcartcc/bitcart/blob/master/CONTRIBUTING.md"&gt;our contributing guidelines&lt;/a&gt; for details.&lt;/p&gt;
&lt;h2&gt;
Contributors ✨
&lt;/h2&gt;
&lt;p&gt;Thanks goes to these wonderful people (&lt;a href="https://allcontributors.org/docs/en/emoji-key" rel="nofollow"&gt;emoji key&lt;/a&gt;):&lt;/p&gt;
&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
  &lt;tbody&gt;
&lt;tr&gt;
    &lt;td&gt;
&lt;a href="https://github.com/MrNaif2018"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--J_cWMcHj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://avatars3.githubusercontent.com/u/39452697%3Fv%3D4" width="100px;" alt=""&gt;&lt;br&gt;&lt;b&gt;MrNaif2018&lt;/b&gt;&lt;/a&gt;&lt;br&gt;&lt;a href="https://raw.githubusercontent.com/bitcartcc/bitcart/master/#maintenance-MrNaif2018" title="Maintenance"&gt;🚧&lt;/a&gt; &lt;a href="https://github.com/bitcartcc/bitcart/commits?author=MrNaif2018" title="Code"&gt;💻&lt;/a&gt; &lt;a href="https://github.com/bitcartcc/bitcart/commits?author=MrNaif2018" title="Documentation"&gt;📖&lt;/a&gt; &lt;a href="https://raw.githubusercontent.com/bitcartcc/bitcart/master/#design-MrNaif2018" title="Design"&gt;🎨&lt;/a&gt;
&lt;/td&gt;
    &lt;td&gt;
&lt;a href="https://github.com/tomasmor42"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--uREmjXYh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://avatars2.githubusercontent.com/u/42064734%3Fv%3D4" width="100px;" alt=""&gt;&lt;br&gt;&lt;b&gt;tomasmor42&lt;/b&gt;&lt;/a&gt;&lt;br&gt;&lt;a href="https://github.com/bitcartcc/bitcart/commits?author=tomasmor42" title="Code"&gt;💻&lt;/a&gt;
&lt;/td&gt;
    &lt;td&gt;
&lt;a href="https://github.com/yagicandegirmenci"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ZCs-2qeH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://avatars3.githubusercontent.com/u/62724709%3Fv%3D4" width="100px;" alt=""&gt;&lt;br&gt;&lt;b&gt;Yağız Değirmenci&lt;/b&gt;&lt;/a&gt;&lt;br&gt;&lt;a href="https://github.com/bitcartcc/bitcart/commits?author=yagicandegirmenci" title="Code"&gt;💻&lt;/a&gt;
&lt;/td&gt;
    &lt;td&gt;
&lt;a href="https://github.com/xiaoxianma"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--6K6Ftfoh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://avatars0.githubusercontent.com/u/3086064%3Fv%3D4" width="100px;" alt=""&gt;&lt;br&gt;&lt;b&gt;Weidong Sun&lt;/b&gt;&lt;/a&gt;&lt;br&gt;&lt;a href="https://github.com/bitcartcc/bitcart/commits?author=xiaoxianma" title="Code"&gt;💻&lt;/a&gt;
&lt;/td&gt;
    &lt;td&gt;
&lt;a href="https://github.com/kartecianos"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--N_2iTIbi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://avatars2.githubusercontent.com/u/43797783%3Fv%3D4" width="100px;" alt=""&gt;&lt;br&gt;&lt;b&gt;kartecianos&lt;/b&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;…&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/bitcartcc/bitcart"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


</description>
    </item>
    <item>
      <title>Contribute to BitcartCC this Hacktoberfest </title>
      <dc:creator>MrNaif2018</dc:creator>
      <pubDate>Thu, 01 Oct 2020 18:50:24 +0000</pubDate>
      <link>https://forem.com/bitcartcc/contribute-to-bitcartcc-this-hacktoberfest-22ja</link>
      <guid>https://forem.com/bitcartcc/contribute-to-bitcartcc-this-hacktoberfest-22ja</guid>
      <description>&lt;p&gt;BitcartCC is an open-source self-hosted all-in-one cryptocurrency solution.&lt;/p&gt;

&lt;p&gt;It can be used as an &lt;a href="https://sdk.bitcartcc.com"&gt;SDK&lt;/a&gt; for custom apps, via &lt;a href="https://api.bitcartcc.com"&gt;Merchants API&lt;/a&gt;, via &lt;a href="https://admin.bitcartcc.com"&gt;ready admin panel&lt;/a&gt;, &lt;a href="https://store.bitcartcc.com"&gt;store&lt;/a&gt; or ready integrations.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--PQjZ3vXt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/z24afl62l88qav9qyzn4.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--PQjZ3vXt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/z24afl62l88qav9qyzn4.jpg" alt="photo_2019-08-09_10-00-20"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Learn more at &lt;a href="https://bitcartcc.com"&gt;https://bitcartcc.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hacktoberfest has started and we have prepared lots of issue descriptions for it!&lt;/p&gt;

&lt;h2&gt;
  
  
  Not sure how to start? Here are some steps:
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Try to understand what we are trying to solve and how BitcartCC works. Documentation is published here &lt;a href="https://docs.bitcartcc.com"&gt;https://docs.bitcartcc.com&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Go through the &lt;a href="https://github.com/bitcartcc/bitcart/blob/master/CONTRIBUTING.md"&gt;CONTRIBUTING&lt;/a&gt; guide:&lt;br&gt;
Try to run BitcartCC from the source.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Find an interesting issue to solve.&lt;br&gt;
Go through the open issues listed &lt;a href="https://github.com/bitcartcc/bitcart/issues/133"&gt;here&lt;/a&gt;. You can choose anyone from an existing open issue or propose/create a new issue if you feel something is missing and want to improve. The first-timer issues are tagged with &lt;code&gt;good-first-issue&lt;/code&gt; labels. Such issues are simpler and comparatively easy to fix. So you can start with that.&lt;br&gt;
Feel free to join BitcartCC Telegram group at &lt;a href="https://t.me/bitcartcc"&gt;https://t.me/bitcartcc&lt;/a&gt; and raise questions, discuss anything.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Happy hacking 🚀&lt;/p&gt;

</description>
      <category>hacktoberfest</category>
      <category>showdev</category>
      <category>opensource</category>
      <category>python</category>
    </item>
    <item>
      <title>Twiliohackathon Project - Pay for twilio services with cryptocurrency</title>
      <dc:creator>MrNaif2018</dc:creator>
      <pubDate>Sat, 04 Apr 2020 18:04:37 +0000</pubDate>
      <link>https://forem.com/mrnaif2018/pay-for-twilio-services-with-cryptocurrency-2gcb</link>
      <guid>https://forem.com/mrnaif2018/pay-for-twilio-services-with-cryptocurrency-2gcb</guid>
      <description>&lt;p&gt;&lt;strong&gt;Edit: unfortunately I didn't organize my time to do it properly(study, exams), but when I get more free time I will finish it anyway, as this would be a great example of using twilio and my API I think, sorry for not finishing it in time. I will update this post anyway.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I want to build
&lt;/h2&gt;

&lt;p&gt;I want to create an application which will allow using twilio APIs by paying for usage with cryptocurrency. Currently due to COVID-19, sometimes it's not that easy to manage paper money or fiat money. I think in that situation internet money(cryptocurrencies) help a lot. &lt;br&gt;
There will be a graphical interface to select twilio service(I will start from SMS), where user will be prompted to pay for usage in cryptocurrency first, and then they will be able to use the API endpoint. Probably if all goes right I will also write a small API wrapper for any twilio endpoint, not sure yet.&lt;br&gt;
How will the price be calculated? Using twilio pricing API I am going to take the price USD value, and use that for invoice creation, the payment work is handled by my API(so it is also an example integration with other APIs).&lt;/p&gt;
&lt;h2&gt;
  
  
  Demo Link
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://twilio-crypto-payments.now.sh/"&gt;https://twilio-crypto-payments.now.sh/&lt;/a&gt;&lt;br&gt;
I started from setting up production deployment for being able to share the progress&lt;/p&gt;
&lt;h2&gt;
  
  
  Link to Code
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--i3JOwpme--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/github-logo-ba8488d21cd8ee1fee097b8410db9deaa41d0ca30b004c0c63de0a479114156f.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/MrNaif2018"&gt;
        MrNaif2018
      &lt;/a&gt; / &lt;a href="https://github.com/MrNaif2018/twilio-crypto-payments"&gt;
        twilio-crypto-payments
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Pay and use many different twilio services via cryptocurrencies(Made for Twilio &amp;amp; Dev.to Hackathon)
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
Pay for twilio services and use them(sms, voice, video, messenger) via cryptocurrencies&lt;/h1&gt;
&lt;p&gt;This project is built for &lt;a href="https://dev.to/devteam/announcing-the-twilio-hackathon-on-dev-2lh8" rel="nofollow"&gt;Dev.to &amp;amp; Twilio hackathon&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;It fits in category 3: integrating twilio APIs with other APIs(in my case, my own API and SDK - &lt;a href="https://github.com/MrNaif2018/bitcart"&gt;bitcart&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://raw.githubusercontent.com/MrNaif2018/twilio-crypto-payments/master/screenshots/day1.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9nASeHQv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/MrNaif2018/twilio-crypto-payments/master/screenshots/day1.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;TODO: implement everything&lt;/p&gt;
&lt;/div&gt;



&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/MrNaif2018/twilio-crypto-payments"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


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

&lt;p&gt;I am using Vue.js with it's Nuxt.js framework(for PWA and other nice things), as UI framework I am going to use Vuetify.js, and as backend server I am going to use integrated Nuxt.js server.&lt;br&gt;
The &lt;a href="https://github.com/MrNaif2018/bitcart"&gt;payment API&lt;/a&gt; is in Python, but the purpose of this application is integrate twilio API with the payment API.&lt;br&gt;
I am going to use Twilio Pricing API, Programmable SMS, Programmable Video etc. Not sure yet, ideally it would be a wrapper around all twilio APIs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Screenshots
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Day 1
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--vVUFTP2w--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/MrNaif2018/twilio-crypto-payments/raw/master/screenshots/day1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vVUFTP2w--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/MrNaif2018/twilio-crypto-payments/raw/master/screenshots/day1.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;I will be posting progress reports there&lt;/p&gt;

&lt;h4&gt;
  
  
  Day 1
&lt;/h4&gt;

&lt;p&gt;I started with create-nuxt-app with vuetify.js template&lt;br&gt;
Then I decided to setup deployment first, to see the progress live.&lt;br&gt;
I have found out that there is a hosting for SSR apps - now.sh, using &lt;code&gt;nuxtjs/now-builder&lt;/code&gt; and after some issues(&lt;code&gt;process.env.npm_*&lt;/code&gt; not accesible), I have set it up.&lt;br&gt;
Then I've cleared up layouts, and added my favourite day/night mode switch and automatic switching to night mode between 8 pm and 6 am (:&lt;br&gt;
Then I have added first input fields, and telephone input.&lt;br&gt;
Not sure yet which twilio phone number to use, maybe will make a select of available numbers.&lt;br&gt;
From investigating a little bit I think that I will use nuxt &lt;a href="https://nuxtjs.org/api/configuration-servermiddleware/"&gt;serverMiddleware&lt;/a&gt; for handling http POST IPN requests from payment API, and for fetching data from trello(so not exposing secrets to client).&lt;/p&gt;

&lt;p&gt;More progress coming soon.&lt;br&gt;
Any early feedback welcome!&lt;/p&gt;

</description>
      <category>twiliohackathon</category>
      <category>node</category>
      <category>vue</category>
      <category>python</category>
    </item>
    <item>
      <title>How to load dynamical environment variables with Nuxt.js</title>
      <dc:creator>MrNaif2018</dc:creator>
      <pubDate>Mon, 16 Dec 2019 13:55:57 +0000</pubDate>
      <link>https://forem.com/mrnaif2018/how-to-load-dynamical-environment-variables-with-nuxt-js-j7k</link>
      <guid>https://forem.com/mrnaif2018/how-to-load-dynamical-environment-variables-with-nuxt-js-j7k</guid>
      <description>&lt;h1&gt;
  
  
  The problem
&lt;/h1&gt;

&lt;p&gt;Often we have some settings to store, like the url of the API, credentials, some other data. Often it is provided to an application in a form of environment variables.&lt;br&gt;
A nice workflow might be like so:&lt;br&gt;
commit-&amp;gt;test-&amp;gt;build docker image and push it to registry&lt;br&gt;
And when running, you can configure prebuilt image using environment variables without rebuilding.&lt;/p&gt;

&lt;p&gt;Seems perfect,right? You may have thought that using normal &lt;code&gt;process.env.VARIABLE_NAME&lt;/code&gt; is enough. It is not.&lt;br&gt;
During build time, webpack replaces &lt;code&gt;process.env.VARIABLE_NAME&lt;/code&gt; with actual variable from &lt;strong&gt;build&lt;/strong&gt; environment, making images not reproducible and not configurable.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://nuxtjs.org/api/configuration-env/" rel="noopener noreferrer"&gt;Nuxt docs&lt;/a&gt; on environment variables seem to provide a nice solution for that problem, but actually it works absolutely the same way.&lt;br&gt;
So how do we do it properly?&lt;/p&gt;
&lt;h1&gt;
  
  
  Solution
&lt;/h1&gt;

&lt;p&gt;If we have an SSR app, we have two stages: build and launch stage.&lt;br&gt;
At launch stage we should load our environment variables.&lt;/p&gt;

&lt;p&gt;This is were vuex comes in handy. &lt;br&gt;
We can use &lt;a href="https://nuxtjs.org/guide/vuex-store#the-nuxtserverinit-action" rel="noopener noreferrer"&gt;nuxtServerInit&lt;/a&gt;, which will be run on server bootstrap(it also runs on client, but we need server side variable only).&lt;/p&gt;
&lt;h1&gt;
  
  
  Now, to the code!
&lt;/h1&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;Edit:&lt;/strong&gt; Nuxt.js 2.13+
&lt;/h2&gt;

&lt;p&gt;In Nuxt.js 2.13+ you can use new &lt;a href="https://nuxtjs.org/guide/runtime-config/" rel="noopener noreferrer"&gt;Runtime config property&lt;/a&gt;. After configuring it in nuxt.config.js, you can access it anywhere via &lt;code&gt;this.$config&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;But there are still some quirks! If you want to use environment variables in vuex getters, then &lt;code&gt;this.$config&lt;/code&gt; won't work.&lt;/p&gt;

&lt;p&gt;So we still need to do the same process as described below, but replace &lt;code&gt;process.env.NAME&lt;/code&gt; with &lt;code&gt;this.$config.NAME&lt;/code&gt;!&lt;/p&gt;
&lt;h2&gt;
  
  
  Previous example (nuxt.js &amp;lt; 2.13)
&lt;/h2&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;Put this code in &lt;code&gt;store/index.js&lt;/code&gt; file. Nuxt will activate vuex for you.&lt;br&gt;
So, we define store state with the only variable &lt;code&gt;env&lt;/code&gt;, being empty object by default, this way we store all needed variables in one object.&lt;/p&gt;

&lt;p&gt;Our mutation is just changing &lt;code&gt;env&lt;/code&gt; state.&lt;/p&gt;

&lt;p&gt;And &lt;code&gt;nuxtServerInit&lt;/code&gt; is doing all the job.&lt;br&gt;
We check if we run from server, and if so, we simply run our mutation, loading environment variables using same process.env. It doesn't get replaced by webpack in that case.&lt;br&gt;
We can also set default values using &lt;code&gt;|| 'default value'&lt;/code&gt;.&lt;br&gt;
And then, in any place in your code, you can access environment variable using &lt;code&gt;$store.state.env.VARIABLE&lt;/code&gt;.&lt;/p&gt;
&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;This is a pretty simple and working way to load environment variables dynamically, encouraging proper CI/CD workflow with minimal maintenance issues.&lt;/p&gt;

&lt;p&gt;I think that this example should be put in nuxt docs. Let's create a pull request? (:&lt;/p&gt;

&lt;p&gt;This example, as the previous post, came from my work on my opensource project bitcart.&lt;br&gt;
Contributions welcome!&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/bitcart" rel="noopener noreferrer"&gt;
        bitcart
      &lt;/a&gt; / &lt;a href="https://github.com/bitcart/bitcart-store" rel="noopener noreferrer"&gt;
        bitcart-store
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Bitcart Store
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Bitcart Store&lt;/h1&gt;

&lt;/div&gt;
&lt;p&gt;&lt;a href="https://circleci.com/gh/bitcart/bitcart-store" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/ff9813fd9f257a19fb0ce81802dc364b7dc8ed7092b70674925a410daa4025cb/68747470733a2f2f636972636c6563692e636f6d2f67682f626974636172742f626974636172742d73746f72652e7376673f7374796c653d737667" alt="CircleCI"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This is the Bitcart Store.&lt;/p&gt;
&lt;p&gt;It is created to provide a ready solution for merchants who need to bootstrap their stores quickly.&lt;/p&gt;
&lt;p&gt;It is light and fast, always covering 100% of the Merchants API.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://store.bitcart.ai" rel="nofollow noopener noreferrer"&gt;Live demo&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/bitcart/bitcart-storescreenshot.png"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fbitcart%2Fbitcart-storescreenshot.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Contributing&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;See &lt;a href="https://github.com/bitcart/bitcart-storeCONTRIBUTING.md" rel="noopener noreferrer"&gt;CONTRIBUTING.md&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;



&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/bitcart/bitcart-store" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;br&gt;&lt;br&gt;
(For example, any help with improving checkout design is highly appreciated)

&lt;p&gt;I hope you found my article interesting, have a good day!&lt;/p&gt;

</description>
      <category>node</category>
      <category>webdev</category>
      <category>vue</category>
      <category>todayilearned</category>
    </item>
    <item>
      <title>Just recieved my hacktoberfest goodies!</title>
      <dc:creator>MrNaif2018</dc:creator>
      <pubDate>Wed, 11 Dec 2019 16:11:45 +0000</pubDate>
      <link>https://forem.com/mrnaif2018/just-recieved-my-hacktoberfest-goodies-3j6k</link>
      <guid>https://forem.com/mrnaif2018/just-recieved-my-hacktoberfest-goodies-3j6k</guid>
      <description>&lt;p&gt;It is so awesome! So nice to open them up, a lot of stickers, and awesome T-shirt! Thanks to digitalocean and dev for organizing all this this year! Would love to participate next year too!&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--h7nWi-T4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/S5fY7qe.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--h7nWi-T4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.imgur.com/S5fY7qe.jpg" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>hacktoberfest</category>
      <category>showdev</category>
    </item>
    <item>
      <title>How to make nuxt auth working with JWT - a definitive guide</title>
      <dc:creator>MrNaif2018</dc:creator>
      <pubDate>Sat, 07 Dec 2019 20:47:13 +0000</pubDate>
      <link>https://forem.com/mrnaif2018/how-to-make-nuxt-auth-working-with-jwt-a-definitive-guide-9he</link>
      <guid>https://forem.com/mrnaif2018/how-to-make-nuxt-auth-working-with-jwt-a-definitive-guide-9he</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Nuxt.js is a nice framework for creating both SSR and SPA apps easily in vue. It is easy to use, but sometimes there are some stuff which can block you for weeks.&lt;br&gt;
This stuff for me was adding JWT authentification.&lt;/p&gt;
&lt;h2&gt;
  
  
  Backend situation
&lt;/h2&gt;

&lt;p&gt;Let's assume the following situation:&lt;br&gt;
We have a backend, serving a few endpoints:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;/token&lt;/code&gt; - by sending json in form {"email":"example.com","password":"somepassword"}, if user exists and password is valid, it returns a pair of access token and refresh token&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/refresh_token&lt;/code&gt; accepting json in form {"token":"refreshtoken"} returning new refresed access and refresh tokens&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/users/me&lt;/code&gt; - returning current user information, could be anything based on your app.
Any other endpoint is for authorized users only.
Access token duration in my case was 15 minutes, and refresh token duration-7 days(basically the time I want user to be logged in without reentering credentials).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Frontend setup
&lt;/h2&gt;

&lt;p&gt;Nuxt.js docs recommend using &lt;code&gt;@nuxtjs/auth&lt;/code&gt; &lt;a href="https://auth.nuxtjs.org/" rel="noopener noreferrer"&gt;package&lt;/a&gt;.&lt;br&gt;
It supports different auth schemes and stuff, but it doesn't support refresh token out of the  box.&lt;br&gt;
As we have quite a simple API, I picked up local auth scheme.&lt;/p&gt;
&lt;h3&gt;
  
  
  Login component
&lt;/h3&gt;

&lt;p&gt;So, in login component, I have the following code:&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;What does this do? Well, as nuxt auth doesn't support refresh tokens saving with local scheme, to do this with minimal code changes, we do it manually.&lt;br&gt;
We send request to /token endpoint, and if it succeeded, we save the token(in my case I disabled localStorage and left only cookies), save refresh token(local scheme doesn't support this,but the module itself does), and set authorization headers on axios instance(&lt;br&gt;
&lt;code&gt;this.$auth.ctx.app.$axios.setHeader('Authorization', 'Bearer ' + resp.data.access_token)&lt;/code&gt;&lt;br&gt;
 is redundant, but I just left it to make sure token is set :D)&lt;br&gt;
Next, we fetch current user and manually save it in storage.&lt;br&gt;
That is login scheme.&lt;/p&gt;
&lt;h3&gt;
  
  
  Nuxt config
&lt;/h3&gt;

&lt;p&gt;We should do some configuration in nuxt.config.js:&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;We configure axios baseUrl to some default value, to avoid requests to the server itself and infinite loops(any value is fine, as it will get replaced by actual url in plugin).&lt;br&gt;
Also we enable global &lt;code&gt;loggedIn&lt;/code&gt; middleware.&lt;br&gt;
Auth module has it's own &lt;code&gt;auth&lt;/code&gt; middleware, but I'll return to that in a moment.&lt;br&gt;
In auth module settings we disable localStorage(we want some security,right?), and set cookie expire time to 7 days(time when I want the user to get logged out).&lt;br&gt;
Next, we configure our endpoints, it depends on how your backend works, in my case, I have &lt;code&gt;/token&lt;/code&gt; in post method, no logout endpoint, and &lt;code&gt;/users/me&lt;/code&gt; endpoint where data is in body(&lt;code&gt;propertyName: false&lt;/code&gt;).&lt;/p&gt;

&lt;p&gt;Next, we add two auth plugins(note, they're specified &lt;strong&gt;NOT&lt;/strong&gt; in nuxt plugins, but in &lt;strong&gt;auth module&lt;/strong&gt; plugins section.&lt;br&gt;
&lt;code&gt;~/plugins/axios.js&lt;/code&gt; configures axios baseUrl&lt;br&gt;
and&lt;br&gt;
&lt;code&gt;~/plugins/auth.js&lt;/code&gt; makes refreshing work.&lt;br&gt;
Note that we enable it client side only, as for some reasons it doesn't work server side(use ssr:false in older versions of nuxt).&lt;/p&gt;
&lt;h3&gt;
  
  
  Now, to the plugins!
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;~/plugins/axios.js&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;It just configures baseUrl to don't type it everywhere (:&lt;br&gt;
Note, &lt;code&gt;store.state.env.URL&lt;/code&gt; is dynamically loaded env variable.&lt;br&gt;
Should I write another post about building docker images once, and loading environment variables on server start?&lt;br&gt;
Share your opinions in comments.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;~/plugins/auth.js&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;Ok, that's a big chunk of code!&lt;br&gt;
Let's investigate what it does!&lt;br&gt;
Strategy constant is local in our case, if you use a different name, change it.&lt;br&gt;
&lt;code&gt;FALLBACK_INTERVAL&lt;/code&gt; is used when no token is available(i.e. right after login), set it to your token expiry date in miliseconds(so it's 15 minutes or 900 seconds converted to milliseconds).&lt;br&gt;
And multiply that by 0.75, because we want to refresh token a little bit before it's expiry time.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;refreshTokenF&lt;/code&gt; is doing the refresh process.&lt;br&gt;
It sends request to our refresh endpoint, if we have tokens provided.&lt;br&gt;
Then it basically saves tokens to the storage, returning it's parsed expiry time.&lt;br&gt;
If it failed, we log out(it means 7 days passed).&lt;/p&gt;

&lt;p&gt;&lt;code&gt;decodeToken&lt;/code&gt; function is parsing JWT token into it's data.&lt;/p&gt;

&lt;p&gt;Now, to real plugin code:&lt;br&gt;
First, we get $auth and $axios plugins from our app instance.&lt;br&gt;
We try getting those tokens from our cookies(plugins are executed on page load), and fallback to our constant interval first.&lt;br&gt;
If we have those tokens in our storage, we parse access token, and get it' s expiry time.&lt;br&gt;
Also, we fetch the user, as when nuxt auth module fetches is, our baseUrl is not yet configured.&lt;br&gt;
If expiry time is less then 0(token expired), we refresh that right away and update expiry time.&lt;br&gt;
Finally, we use setInterval to refresh token at 75% of it's expiry time.&lt;/p&gt;
&lt;h2&gt;
  
  
  Middleware
&lt;/h2&gt;

&lt;p&gt;And the final part, middleware.&lt;br&gt;
Why do we need to reinvent the wheel? Because even if logged in, we'll get logged out in production, because server side you're not logged in, so the only difference between default auth middleware and ours is if (!process.client) check, as the middleware should be executed client side only:&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;h1&gt;
  
  
  Congratulations!
&lt;/h1&gt;

&lt;p&gt;We did it!&lt;br&gt;
As you can see, nuxt auth module is nice, but unfortunately requires some workarounds. I hope you found this article useful and won't spend weeks like I did trying to fix those strange bugs (:&lt;/p&gt;

&lt;p&gt;I did those things while improving my opensource project: BitcartCC.&lt;br&gt;
If you want to contribute to it or just see how I did it, check it out:&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/bitcart" rel="noopener noreferrer"&gt;
        bitcart
      &lt;/a&gt; / &lt;a href="https://github.com/bitcart/bitcart-admin" rel="noopener noreferrer"&gt;
        bitcart-admin
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Bitcart Admin Panel
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Bitcart Admin Panel&lt;/h1&gt;

&lt;/div&gt;
&lt;p&gt;&lt;a href="https://circleci.com/gh/bitcart/bitcart-admin" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/aabf1cf61efba391e35420348d8dec3c9c7b60625f4a5fe7d3273f0d3a08cfa6/68747470733a2f2f636972636c6563692e636f6d2f67682f626974636172742f626974636172742d61646d696e2e7376673f7374796c653d737667" alt="CircleCI"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This is the Bitcart Admin Panel.&lt;/p&gt;
&lt;p&gt;It is created to simplify usage of Bitcart Merchants API,
making adding or editing data easy, plus containing a checkout page which can be used by various integrations.&lt;/p&gt;
&lt;p&gt;The admin panel always covers 100% of the Merchants API.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://admin.bitcart.ai" rel="nofollow noopener noreferrer"&gt;Live demo&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/bitcart/bitcart-adminscreenshot.png"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fbitcart%2Fbitcart-adminscreenshot.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Contributing&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;See &lt;a href="https://github.com/bitcart/bitcart-adminCONTRIBUTING.md" rel="noopener noreferrer"&gt;CONTRIBUTING.md&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;



&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/bitcart/bitcart-admin" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


</description>
      <category>node</category>
      <category>todayilearned</category>
      <category>webdev</category>
      <category>vue</category>
    </item>
    <item>
      <title>How do I get contributions to my opensource project?</title>
      <dc:creator>MrNaif2018</dc:creator>
      <pubDate>Sat, 12 Oct 2019 14:06:34 +0000</pubDate>
      <link>https://forem.com/mrnaif2018/how-do-i-get-contributions-to-my-opensource-project-59pd</link>
      <guid>https://forem.com/mrnaif2018/how-do-i-get-contributions-to-my-opensource-project-59pd</guid>
      <description>&lt;p&gt;Hi! As I said in my previous post, I have completed hacktoberfest as a contributor to other repos. But I didn't even start as a repo maintainer. Even before Hacktoberfest has started, I prepared some issues and labeled them with hacktoberfest label.&lt;br&gt;
But it is October 12 already, but I didn't get any PR's, issues, or anything(maybe except for a star or a two).&lt;br&gt;
Could you please tell me what am I doing wrong as a repo maintainer preventing contributions?&lt;br&gt;
My previous post about my repo:&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag__link"&gt;
  &lt;a href="/mrnaif2018" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ji_iiq25--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://res.cloudinary.com/practicaldev/image/fetch/s--2hV8gtsH--/c_fill%2Cf_auto%2Cfl_progressive%2Ch_150%2Cq_auto%2Cw_150/https://dev-to-uploads.s3.amazonaws.com/uploads/user/profile_image/195415/c1a04e0b-5a3a-40c0-b8dc-02caf8040952.png" alt="mrnaif2018 image"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/bitcartcc/bitcartcc-new-contributors-welcome-open-source-project-3d86" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;BitcartCC: New Contributors Welcome / Open Source project&lt;/h2&gt;
      &lt;h3&gt;MrNaif2018 ・ Sep 28 '19 ・ 1 min read&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#hacktoberfest&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#contributorswanted&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#python&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#node&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
      <category>hacktoberfest</category>
      <category>opensource</category>
      <category>contributorswanted</category>
    </item>
    <item>
      <title>Hacktoberfest 2019 - finished!</title>
      <dc:creator>MrNaif2018</dc:creator>
      <pubDate>Wed, 09 Oct 2019 15:09:25 +0000</pubDate>
      <link>https://forem.com/mrnaif2018/hacktoberfest-2019-finished-2gip</link>
      <guid>https://forem.com/mrnaif2018/hacktoberfest-2019-finished-2gip</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--aZ9Z-ML---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/4hnhparr04qim8f5wo4m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--aZ9Z-ML---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/4hnhparr04qim8f5wo4m.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;br&gt;
I am very happy to finish this Hacktoberfest. It was my first one. Very exciting! Will definitely participate next year too! And now I know how to find issues :D&lt;/p&gt;

</description>
      <category>hacktoberfest</category>
    </item>
  </channel>
</rss>
