<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Jordan</title>
    <description>The latest articles on DEV Community by Jordan (@starpause).</description>
    <link>https://dev.to/starpause</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%2F64239%2Fad50d3cb-63f4-43a1-809b-88e26a4713fe.jpeg</url>
      <title>DEV Community: Jordan</title>
      <link>https://dev.to/starpause</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/starpause"/>
    <language>en</language>
    <item>
      <title>Diversifying Emojis With AI</title>
      <dc:creator>Jordan</dc:creator>
      <pubDate>Fri, 26 Jul 2024 21:53:06 +0000</pubDate>
      <link>https://dev.to/starpause/diversifying-emojis-with-ai-593e</link>
      <guid>https://dev.to/starpause/diversifying-emojis-with-ai-593e</guid>
      <description>&lt;p&gt;I've been advising &lt;a href="https://www.gfxvs.com/" rel="noopener noreferrer"&gt;GFXvs.com&lt;/a&gt;, a daily AI art battle with on-chain rewards. Sharing the daily battle across social media required some clever design. After several iterations the team landed on "spinners":&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fezfsmr90gqxx0ivhbqyw.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fezfsmr90gqxx0ivhbqyw.gif" alt="spinner that reveals two different ai generated artworks by rotating a bright green pixelated line in a circle, sweeping over the image in a perfectly endless loop" width="256" height="256"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This design met the requirements of incorporating both images, but also established an unmistakably branded asset for people to collect. The motion catches eyes on social platforms but makes it difficult to say if your daily vote is going to the left or right image. The answer was to watermark the two contestants with emoji, which also brought a more playful feeling to the collectables and voting. &lt;/p&gt;

&lt;p&gt;With all of the hard problems out of the way, it was time to indulgently bike-shed something that didn't really need fixing: how can we ensure the emojis appearing on the artworks are not only interesting, but also diverse? While I joke that it's not important, little details like this are what can make or break a series of digital collectables. &lt;/p&gt;

&lt;p&gt;For the sake of numerology we decided to select 420 of the most popular and coded emoji from the current set of 3,782. By narrowing things down we had the freedom to pick and choose to meet our diversity requirements: an even spread of colors and categories. &lt;/p&gt;

&lt;p&gt;Our first pass at the emoji dataset was something like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="err"&gt;var&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;emojis&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;=&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"1"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"emoji"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"🤣"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"2"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"emoji"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"❤️"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="err"&gt;...&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Effective, but it didn't give us enough to work with. So we summoned the Cursor AI to tear through and update our data to look more like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nl"&gt;"6"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"emoji"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"😇"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Smiling Face with Halo"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"category"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Smileys &amp;amp; Emotion"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"unicode"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"U+1F607"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"color"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"yellow"&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Not perfect, but better than going through 420 emojis by hand! To help with the final sorting and selection, Cursor AI provided a python script that would console log the emojis by color and category, for easier sorting:&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;import&lt;/span&gt; &lt;span class="n"&gt;json&lt;/span&gt;

&lt;span class="c1"&gt;# Load the JSON data from file with utf-8 encoding
&lt;/span&gt;&lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="nf"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;emojis.json&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;r&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;encoding&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;utf-8&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nb"&gt;file&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;load&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;file&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Dictionaries to count emojis of each color and category, and store the emojis
&lt;/span&gt;&lt;span class="n"&gt;color_emojis&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{}&lt;/span&gt;
&lt;span class="n"&gt;category_emojis&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{}&lt;/span&gt;
&lt;span class="n"&gt;seen_emojis&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;set&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;special_unicode_emojis&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;
&lt;span class="n"&gt;replacement_char_emojis&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;

&lt;span class="c1"&gt;# Iterate through each emoji entry
&lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;key&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;emoji_info&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;emojis&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;items&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="n"&gt;emoji&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;emoji_info&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;emoji&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;unicode_repr&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;emoji_info&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;unicode&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;unknown&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;color&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;emoji_info&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;color&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;unknown&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;category&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;emoji_info&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;category&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;unknown&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;emoji_info&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;name&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;unknown&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="c1"&gt;# Check for duplicates
&lt;/span&gt;    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;emoji&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;seen_emojis&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Duplicate emoji found: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;emoji&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; (ID: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;key&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;)&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;seen_emojis&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;emoji&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="c1"&gt;# Check for special Unicode characters
&lt;/span&gt;    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;2640&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;unicode_repr&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;2642&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;unicode_repr&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;  &lt;span class="c1"&gt;# Unicode for ♀️ and ♂️ respectively
&lt;/span&gt;        &lt;span class="n"&gt;special_unicode_emojis&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="n"&gt;emoji&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;unicode_repr&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;

    &lt;span class="c1"&gt;# Check for replacement character
&lt;/span&gt;    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;�&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;emoji&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;replacement_char_emojis&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="n"&gt;emoji&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;

    &lt;span class="c1"&gt;# Collect emojis for each color
&lt;/span&gt;    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;color&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;color_emojis&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;color_emojis&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;color&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;emoji&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;color_emojis&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;color&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;emoji&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

    &lt;span class="c1"&gt;# Collect emojis for each category
&lt;/span&gt;    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;category&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;category_emojis&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;category_emojis&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;category&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;emoji&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;category_emojis&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;category&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;emoji&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="c1"&gt;# Sort and print the emojis for each color and category
&lt;/span&gt;&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Counts by Color:&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;color&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;emojis&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;sorted&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;color_emojis&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;items&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt; &lt;span class="n"&gt;key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;lambda&lt;/span&gt; &lt;span class="n"&gt;item&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;item&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]),&lt;/span&gt; &lt;span class="n"&gt;reverse&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;color&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;emojis&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt; &lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;emojis&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;Counts by Category:&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;category&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;emojis&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;sorted&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;category_emojis&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;items&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt; &lt;span class="n"&gt;key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;lambda&lt;/span&gt; &lt;span class="n"&gt;item&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;item&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]),&lt;/span&gt; &lt;span class="n"&gt;reverse&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;category&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;emojis&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt; &lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;emojis&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Print special Unicode emojis
&lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;special_unicode_emojis&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;Special Unicode Emojis:&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;emoji&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;unicode_repr&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;special_unicode_emojis&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;emoji&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; with Unicode &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;unicode_repr&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Print emojis that resulted in the replacement character
&lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;replacement_char_emojis&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;Emojis resulting in Replacement Character:&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;emoji&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;replacement_char_emojis&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;emoji&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; - &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The output allowed us to quickly iterate on the curation process, turning our previously jumbled emojis with duplicates and so on into something that soothed our detail oriented souls:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8tppvdy2qms66qb4y2a0.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8tppvdy2qms66qb4y2a0.jpg" alt="emojis in a terminal output sorted by color" width="800" height="308"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpr029xawo7oshy7x5a9s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpr029xawo7oshy7x5a9s.png" alt="emojis in a terminal output sorted by category" width="800" height="266"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This diversity maximizes the interesting outcomes from creating the daily battle spinners. If you like AI artwork come join the fun at &lt;a href="https://gfxvs.com/" rel="noopener noreferrer"&gt;GFXvs.com&lt;/a&gt;. Spinners are minted as NFTs every day you vote, and one lucky winner gets the unique rare NFT of the day!&lt;/p&gt;

</description>
      <category>emoji</category>
      <category>ai</category>
      <category>creativecoding</category>
      <category>python</category>
    </item>
    <item>
      <title>Snap, Mint, Engage: Building Your Own Web3 Photo Booth with Minsta 📸</title>
      <dc:creator>Jordan</dc:creator>
      <pubDate>Wed, 27 Mar 2024 01:00:18 +0000</pubDate>
      <link>https://dev.to/starpause/snap-mint-engage-building-your-own-web3-photo-booth-with-minsta-3aoc</link>
      <guid>https://dev.to/starpause/snap-mint-engage-building-your-own-web3-photo-booth-with-minsta-3aoc</guid>
      <description>&lt;p&gt;Imagine an app that empowers people to capture life's special moments and mint them as NFTs with just a snap - no blockchain experience required. That's the magic of Minsta, an open source photo minting dapp powered by Mintbase.&lt;/p&gt;

&lt;p&gt;With Minsta, you can create a custom branded experience for any event or community, letting users snap photos and share meaningful memories on-chain in seconds. From conferences to cultural festivals, Minsta lets you gamify and tokenize participation in a way that's fun and accessible to everyone.&lt;/p&gt;

&lt;p&gt;To engage users, Minsta features customizable leaderboards that rank participants by total mints. You can also define raffle prizes that are awarded to the top minters and randomly-selected participants. Devs can easily tweak the thresholds and rewards to craft a super engaging experience.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Framz6hprfzlj3p1actwa.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Framz6hprfzlj3p1actwa.jpg" alt="Screenshot" width="627" height="1154"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Deploying your own Minsta instance is a breeze too. The repo is designed to be easily forked and customized by developers, so you can have your own personalized version up and running in no time.&lt;/p&gt;

&lt;p&gt;Some inspiring examples of Minsta in action:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://rakhi.mintbase.xyz/"&gt;Rakhi India&lt;/a&gt; - Special NFTs for the cherished festival of Raksha Bandhan&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://nearcon.mintbase.xyz/"&gt;NEARCon&lt;/a&gt; - Collectible moments from NEAR's annual gathering&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://nearapac.mintbase.xyz/"&gt;NEAR APAC&lt;/a&gt; - Celebrating an Unlimited Future in Vietnam&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://ethdenver2023.minsta.me/"&gt;ETHDenver&lt;/a&gt; - Minting memories at the world's largest Web3 #BUIDLathon&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ready to deploy your own custom Minsta and start capturing memories on-chain? Let's dive in and see how it's done!&lt;/p&gt;

&lt;h2&gt;
  
  
  Walkthrough
&lt;/h2&gt;

&lt;p&gt;At its core, Minsta is a slick React app that interacts with several key Web3 technologies to enable seamless, decentralized photo minting. Here's a quick overview of the main components:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;NEAR Wallet Integration:&lt;/strong&gt; Minsta leverages Mintbase Wallet, a non-custodial, meta transaction-based wallet built on the NEAR protocol. This allows for gasless onboarding and a silky-smooth UX. New users can create an account and start minting in seconds, no crypto or coding skills required.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Minting via Proxy Contract:&lt;/strong&gt; To enable permissionless minting, Minsta uses a proxy minter contract deployed by Mintbase. This contract is authorized as a minter on your NFT contract, so any Minsta user can mint without needing their own minter permissions. Super clean and decentralized.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Arweave Storage:&lt;/strong&gt; When a user snaps a photo, it's uploaded to the Arweave decentralized storage network and the metadata is saved immutably on-chain. This ensures photos remain accessible forever, with no central point of failure.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI-Powered Metadata:&lt;/strong&gt; Optionally, you can use the Replicate API to analyze uploaded images and automatically generate titles and descriptions for the NFT metadata. A nifty way to streamline the minting flow and add some AI magic.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Under the hood, the app is built with battle-tested tools like Next.js, TypeScript, and Tailwind CSS, making it a breeze to customize and extend. The repo is designed to be hacker-friendly, with detailed docs and inline comments to help you grok the codebase quickly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Setup
&lt;/h2&gt;

&lt;p&gt;Ready to deploy your own custom version of Minsta? Let's walk through it step-by-step:&lt;/p&gt;

&lt;h3&gt;
  
  
  Fork the Repo
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frepjoqny2tr3v1xxni3u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frepjoqny2tr3v1xxni3u.png" alt="Screenshot" width="800" height="674"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Head over to the Minsta repo on GitHub and smash that "Deploy" button to create your own copy of the codebase. &lt;/p&gt;

&lt;h3&gt;
  
  
  Deploy a Mintbase Contract
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftcv751ul0bcsiu50xt32.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftcv751ul0bcsiu50xt32.png" alt="Screenshot" width="800" height="431"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If it's your first time deploying a smart contract you may want to switch over to testnet (3) so you can get the hang of things without paying any fees. &lt;/p&gt;

&lt;p&gt;Log in to your Mintbase profile and deploy a new contract (1, 2) or choose an existing one. This will be the NFT contract that your Minsta instance mints to. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgtzajk6lmths8vvo583e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgtzajk6lmths8vvo583e.png" alt="Screenshot" width="800" height="608"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Grab the contract address, you'll need it later.&lt;/p&gt;

&lt;h3&gt;
  
  
  Add a Proxy Minter
&lt;/h3&gt;

&lt;p&gt;In your Mintbase contract settings, navigate to the "Minters" tab and add the &lt;code&gt;0.drop.proxy.mintbase.near&lt;/code&gt; contract as a new minter. This lets your Minsta app mint on behalf of users.&lt;/p&gt;

&lt;h3&gt;
  
  
  Set Up Environment Variables
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftbuh12piysogn3rfhhju.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftbuh12piysogn3rfhhju.png" alt="Screenshot" width="800" height="435"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you used the "Deploy" button you can jump right into configuration. Otherwise, clone your forked repo and create a .env file in the root directory. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fur2ifaegfbmf55b3f7mo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fur2ifaegfbmf55b3f7mo.png" alt="Screenshot" width="800" height="528"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here you'll define config options like your app name, NFT contract address, network (mainnet/testnet), and more. Check &lt;a href="https://github.com/Mintbase/minsta/blob/main/.env.example"&gt;.env.example&lt;/a&gt; for a full list of available env vars.&lt;/p&gt;

&lt;h3&gt;
  
  
  Customize Your App
&lt;/h3&gt;

&lt;p&gt;Time to make it yours! Update the app name, colors, logo and other UI elements by tweaking the env vars and code. Maybe add some custom leaderboard logic or new share hooks. Go wild!&lt;/p&gt;

&lt;h3&gt;
  
  
  Deploy Your Changes
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2hwlqbece3lxq68jlkuz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2hwlqbece3lxq68jlkuz.png" alt="Image description" width="800" height="418"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you used the "Deploy" button then all you need to do is "Redeploy" in Vercel. Otherwise, create a new project in Vercel, connect your forked repo, and hit deploy. In a few short minutes, your custom Minsta will be live on the interwebs!&lt;/p&gt;

&lt;h2&gt;
  
  
  Next Steps
&lt;/h2&gt;

&lt;p&gt;Congrats, you've got a shiny new Minsta app that's ready to be customized and extended in all sorts of fun ways! Here are a few ideas to get your gears turning:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Custom Leaderboard Logic:&lt;/strong&gt; Tweak the leaderboard rules and rewards to fit your specific use case. Maybe top minters get a special NFT badge, or unlock tiered rewards based on their rank. The possibilities are endless!&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Social Sharing Hooks:&lt;/strong&gt; Make it easy for users to share their freshly-minted photos on Twitter, Discord, or other social platforms. You could even generate custom share images with the user's photo and stats overlaid.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Themed Challenges:&lt;/strong&gt; Spice up the minting experience with daily or weekly photo challenges. Prompt users to snap pics around a certain theme, and reward bonus points for the most creative entries.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AR Face Filters:&lt;/strong&gt; Tap into the power of AR by integrating face filters or effects that users can apply to their photos before minting. Maybe even tie the filters to specific NFTs or achievements!&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Decentralized Judging:&lt;/strong&gt; Let the community vote on their favorite mints, and use quadratic voting or other sybil-resistant mechanisms to determine the winners. Power to the people!&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Physical Rewards:&lt;/strong&gt; Bridge the digital and physical realms by offering exclusive merch or other IRL rewards to your top minters. Stickers, enamel pins, you name it!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The beauty of Minsta being open source is that you have the freedom to remix and extend it in whatever wild directions you can imagine. So don't be afraid to experiment, iterate, and put your own unique spin on it.&lt;/p&gt;

&lt;p&gt;If you build something rad with Minsta, we'd love to see it! Share your creations with us on Twitter or hop in our Discord to geek out with other builders. And if you have any questions or feedback along the way, don't hesitate to open an issue on the repo.&lt;/p&gt;

&lt;p&gt;Happy building, and happy minting! 🚀&lt;/p&gt;

</description>
      <category>web3</category>
      <category>tutorial</category>
      <category>opensource</category>
      <category>webdev</category>
    </item>
    <item>
      <title>The Hidden Connect: Accounts, Wallets, and Credentials in Crypto</title>
      <dc:creator>Jordan</dc:creator>
      <pubDate>Sun, 28 Jan 2024 22:52:29 +0000</pubDate>
      <link>https://dev.to/starpause/the-hidden-connect-accounts-wallets-and-credentials-in-crypto-k62</link>
      <guid>https://dev.to/starpause/the-hidden-connect-accounts-wallets-and-credentials-in-crypto-k62</guid>
      <description>&lt;p&gt;&lt;em&gt;Read the entire article to receive your &lt;a href="https://wallet.mintbase.xyz/s/BLO5b4bBpoi58-r9A5aW-"&gt;Proof of Learning&lt;/a&gt;!&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Today is Just OK
&lt;/h2&gt;

&lt;p&gt;Have you ever logged into a website without thinking much about it? Maybe you used G••gle or Faceb••k to sign in, or perhaps you entered a simple email address and password, sometimes even the same password you use everywhere. But what if there was a safer, easier way?&lt;/p&gt;

&lt;h2&gt;
  
  
  Introducing a Better Way
&lt;/h2&gt;

&lt;p&gt;There is! By using Mintbase Wallet for user login in your app, you're tapping into webauthn technology. This tech uses things like fingerprints to confirm a user's identity, offering a secure and even smoother experience than the usual login methods we see today.&lt;/p&gt;

&lt;h2&gt;
  
  
  Understanding the Basics
&lt;/h2&gt;

&lt;p&gt;Let's break down the basics: Credentials, Accounts, and Wallets. While these are important for us to understand, your regular users don't need to worry too much about them.&lt;/p&gt;

&lt;h3&gt;
  
  
  Credentials
&lt;/h3&gt;

&lt;p&gt;Credentials can be anything used to prove who you are. Remember those old video game codes you had to write down? Those were a type of credential. These days, we usually use usernames and passwords for everything from online banking to casual browsing.&lt;/p&gt;

&lt;p&gt;In systems like two-factor authentication, each 'factor' is a separate credential. In blockchain systems, where there's no 'undo' button, using multiple credentials (multi-factor authentication) is vital for keeping your assets safe.&lt;/p&gt;

&lt;p&gt;Sometimes, you can use multiple credentials for one account. For example, access to a specific email or phone number can be a credential to reset your password.&lt;/p&gt;

&lt;h3&gt;
  
  
  Accounts
&lt;/h3&gt;

&lt;p&gt;An account is the information a service keeps about you. Think of your progress in a game, your posts on social media, or your bank balance. Credentials let you access your account, but they are not the account itself.&lt;/p&gt;

&lt;h3&gt;
  
  
  Wallets: Linking Credentials and Accoutns
&lt;/h3&gt;

&lt;p&gt;In the web2 world, a popular system is oauth, which lets you log into smaller websites using credentials from bigger sites. While convenient, it has its drawbacks, like less privacy.&lt;/p&gt;

&lt;p&gt;Web3 brings a more secure and convenient solution with the webauthn standard. Developers can add a wallet selector to their sites, allowing users to log in using their own securely stored credentials. This method is safer and easier than using passwords.&lt;/p&gt;

&lt;p&gt;A wallet is software that helps users manage their secure credentials, making it easier and safer to access accounts.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try It Out
&lt;/h2&gt;

&lt;p&gt;Now that you understand the theory, why not experience it for yourself? &lt;a href="https://wallet.mintbase.xyz/s/BLO5b4bBpoi58-r9A5aW-"&gt;Use this link to create an account with Mintbase Wallet&lt;/a&gt;. You'll use the biometric vault on your device as credentials. As a bonus, you'll get an NFT to celebrate learning and reading this far. Then try &lt;a href="https://docs.mintbase.xyz/dev/getting-started/add-wallet-connection-to-your-react-app"&gt;Adding Wallet Connect to Your React App&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fonke7irwwvvigy66pvrv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fonke7irwwvvigy66pvrv.png" alt="Beautiful Boss Girl In Charge Of Her Accounts, Credentials, and Wallets" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://wallet.mintbase.xyz/s/BLO5b4bBpoi58-r9A5aW-"&gt;Collect Your Proof of Learning&lt;/a&gt;&lt;/p&gt;

</description>
      <category>blockchain</category>
      <category>beginners</category>
      <category>productivity</category>
      <category>learning</category>
    </item>
    <item>
      <title>Which Chain Abstraction Track Will You Hack To Win Over $15,000 in Prizes?</title>
      <dc:creator>Jordan</dc:creator>
      <pubDate>Thu, 11 Jan 2024 07:49:33 +0000</pubDate>
      <link>https://dev.to/starpause/which-abstraction-track-will-you-hack-to-win-over-15000-in-prizes-3701</link>
      <guid>https://dev.to/starpause/which-abstraction-track-will-you-hack-to-win-over-15000-in-prizes-3701</guid>
      <description>&lt;p&gt;January is the month to hack account and chain abstraction at &lt;a href="https://abstracting.org/"&gt;Abstracting.org&lt;/a&gt;! With 7 tracks dishing out 15k+ in prizes there's tons of opportunity to explore. Get inspired with demos, hands on at workshops, and support at office hours throughout the month.&lt;/p&gt;

&lt;p&gt;Chain abstraction breaks down barriers between different blockchain networks for seamless interoperability. Meanwhile, account abstraction reimagines user experiences, offering a more intuitive and flexible way to manage digital identities and assets. &lt;/p&gt;

&lt;p&gt;For some abstraction examples; imagine defi protocols unlocking liquidity and opportunities across chains 💦 smoother onboarding than web2 with better security than oauth 🔏 or funding trial accounts that can only interact with your dApp 🤯 &lt;/p&gt;

&lt;p&gt;Web3 natives are already familiar with the hassle of hopping networks for scalability and juggling multiple accounts for security. Abstraction offers a convenient alternative where you can access all of your assets at once, without the hassle of bridging.&lt;/p&gt;

&lt;p&gt;If it's your first time hearing terms like sub accounts, delegate actions, and meta transactions; they enable tangible experiences like digital loyalty programs 🎫 commerce at festivals with bad internet 🎉 and programable time shares 😎&lt;/p&gt;

&lt;p&gt;Near Protocol enables all this abstraction with a flexible account model, allowing for granular access control. Every account is it's own smart contract and every contract is an account. It's possible to specify account level access to any function call... Including the ability to add and remove seed phrases for full access to an account, making it possible to securely trade an entire portfolio!&lt;/p&gt;

&lt;p&gt;Hyped?! Hit &lt;a href="https://abstracting.org/"&gt;Abstracting.org&lt;/a&gt; for more about abstracting with Near Protocol, event registration, and hack ideas from sponsors like Mintbase, Potlock, and Keypom. There's a &lt;a href="https://oneai.com/~near-abstraction/share/cKkkXm"&gt;GPT agent stuffed with relevant tech docs&lt;/a&gt; and &lt;a href="https://nearbuilders.com/builddao"&gt;telegram chat&lt;/a&gt; where you can form teams with 400+ builders. &lt;/p&gt;

</description>
      <category>hackathon</category>
      <category>web3</category>
      <category>blockchain</category>
      <category>accountabstraction</category>
    </item>
    <item>
      <title>Mastering Bounty Creation for NearCon on Heroes.build</title>
      <dc:creator>Jordan</dc:creator>
      <pubDate>Sun, 05 Nov 2023 08:51:10 +0000</pubDate>
      <link>https://dev.to/starpause/mastering-bounty-creation-for-nearcon-on-heroesbuild-2pme</link>
      <guid>https://dev.to/starpause/mastering-bounty-creation-for-nearcon-on-heroesbuild-2pme</guid>
      <description>&lt;p&gt;Delegating tasks can be tough, but it's essential to scale success. NearCon '23 will host more than 3000 builders in Lisbon, ready to take on new challenges. You can reach out to this eager pool of talent by posting work bounties on &lt;a href="http://linksta.cc/@heroes"&gt;HEROES.BUILD&lt;/a&gt;. This guide will show you how to do it quickly and effectively, even if you are very busy. &lt;/p&gt;

&lt;p&gt;&lt;a href="http://linksta.cc/@heroes"&gt;HEROES&lt;/a&gt; streamlines your bounty experience with a secure, transparent platform for task-based payments, featuring smart escrow transactions, straightforward invoicing, and optional identity verification for worry-free tax compliance. Let's dig in!&lt;/p&gt;

&lt;h2&gt;
  
  
  Sign In, Set Up
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--R3GplLl5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/55rxhxn0yt65w256ho2h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--R3GplLl5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/55rxhxn0yt65w256ho2h.png" alt="Image description" width="800" height="1679"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can create an account using email or log in directly using GitHub. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--iLi6-Ll4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gnkgmaape31w46mxpnqd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--iLi6-Ll4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gnkgmaape31w46mxpnqd.png" alt="Image description" width="800" height="1680"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After you're in, connect the wallet you'll use to fund bounties. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8KMG_jbp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/742wxerze842ikbg3jc6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8KMG_jbp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/742wxerze842ikbg3jc6.png" alt="Image description" width="800" height="1681"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once your wallet connects it's time to create a bounty! On mobile it's in the hamburger menu. &lt;/p&gt;

&lt;h2&gt;
  
  
  Description
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--7V5PVVBG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6x2xj7upukdtb4lt0tba.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7V5PVVBG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6x2xj7upukdtb4lt0tba.png" alt="Image description" width="800" height="1519"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Apply the NEARCON2023 tag so that your bounty will get a special call out on heroes. You can add as many tags as you like. &lt;/p&gt;

&lt;p&gt;Type of "Other" and Experience of "Any" are fine unless you see a type that describes your bounty better than the tags. &lt;/p&gt;

&lt;h2&gt;
  
  
  Details
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Izl0OCGo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/89tx4j7qin2czstv9xo4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Izl0OCGo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/89tx4j7qin2czstv9xo4.png" alt="Image description" width="800" height="2199"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Submit as an individual because DAO functionality is coming soon™️.&lt;/p&gt;

&lt;p&gt;When it comes to successful delegation, accurately describing the work and expectations are the absolute number one key for success. &lt;/p&gt;

&lt;p&gt;Boot up your favorite LLM and start bouncing things off it to generate a comprehensive description of the work. Markdown is allowable so you can make headers for the Background, Objectives,  Deliverables, Criteria, and Worker Requirements. GPT/Claude/Bard can probably write a snappy title for you too! Here's an example prompt to get you started:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I need to write up a bounty so I can delegate a task to a gig worker. It's important for the request to be really clear and easy for an international audience to read and understand. If you can help with that give me a 👍 and I'll describe the work.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Acceptance criteria&lt;/strong&gt; is a sentence describing the point of handoff. For example, link to published work, GitHub repo, gDrive link with sharing enabled, etc. &lt;/p&gt;

&lt;p&gt;Provide a full URL to your telegram, twitter, etc to make it easy on the hunters trying to contact you outside of the messaging built into HEROES. &lt;/p&gt;

&lt;h2&gt;
  
  
  Duration
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--u7w9tbZg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ydblsq9qkcmrco1api5h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--u7w9tbZg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ydblsq9qkcmrco1api5h.png" alt="Image description" width="800" height="1183"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For flexibility I suggest leaving Duration/Deadline alone &amp;amp; just hit next. &lt;/p&gt;

&lt;h2&gt;
  
  
  Payment
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--cucsqm8T--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/t9h5fobxkr39ku16h84e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--cucsqm8T--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/t9h5fobxkr39ku16h84e.png" alt="Image description" width="800" height="1504"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To foster trust HEROES will escrow the funds you are committing to for the bounty. &lt;/p&gt;

&lt;p&gt;If you want to fund bounties with a token we're missing, please &lt;a href="https://linksta.cc/@heroes"&gt;get in touch&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Pop open advanced settings and check invoicing to get your paper trail (thank is later). &lt;/p&gt;

&lt;h2&gt;
  
  
  Advanced Settings
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--fCMXvo3i--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8yvvpcdzhkro37g6qm5d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fCMXvo3i--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8yvvpcdzhkro37g6qm5d.png" alt="Image description" width="800" height="2009"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You made it this far which is totally advanced! Multitasking and Application Restrictions are worth digging into. Before that let's review the lifecycle of a bounty on HEROES. Funder actions above the dots, hunter actions under the dots. By default, once delegation happens other hunters are blocked from starting any work (like if an RFP has been rewarded). &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--wj5Anfyh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/k5aifuvthgpvl9qe1ovn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--wj5Anfyh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/k5aifuvthgpvl9qe1ovn.png" alt="Image description" width="800" height="452"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Multitasking
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Contest/Hackathon&lt;/strong&gt; applies to the delegate step. It allows multiple hunters to begin work at the same time, even if there will be only one of them which is paid out in the end. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;One For All&lt;/strong&gt; is for tasks you want multiple hunters to claim and submit, with each of the hunters earning the same amount when their work is verified. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Different Tasks&lt;/strong&gt; splits a bounty up so that multiple team members can work together towards the same goal. Each subtask can earn a different amount when the work is verified. &lt;/p&gt;

&lt;h3&gt;
  
  
  Application Restrictions
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Manual Approval&lt;/strong&gt; is the default. No hunters can begin work until you approve a claim proposal. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Whitelist&lt;/strong&gt; allows you to specify wallets that are allowed to propose claims. For example, you could snapshot NFT holders and only allow them to make claims. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Whitelist Auto&lt;/strong&gt; allows anyone in your list to begin and submit work without you manually approving their claim proposal. This is useful if a hackathon bounty is being rewarded to a specific team after judging has occured. Another use case is efficiently delegating to trusted teammates. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Auto Approval&lt;/strong&gt; skips the claim and delegate steps entirely, allowing a free for all of work to be submitted for verification. If you're running a One For All bounty this can cut your clicks in half. &lt;/p&gt;

&lt;h2&gt;
  
  
  Review &amp;amp; Publish
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--QGIgVPAA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g255i3agspv076970jbe.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--QGIgVPAA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g255i3agspv076970jbe.png" alt="Image description" width="800" height="1479"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That's it! If everything looks good you can publish your bounty!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--yaKsRrPb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sfwa5qumzoutfs1foyto.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--yaKsRrPb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sfwa5qumzoutfs1foyto.png" alt="Image description" width="800" height="1335"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After you publish you can see your bounty in the feed. &lt;/p&gt;

&lt;p&gt;Click on the bounty card to get a deep link to the bounty so you can share it to your community. &lt;/p&gt;

&lt;p&gt;You'll also get the bonus eyeballs of everyone hacking at Nearcon in Lisbon or Virtually. &lt;/p&gt;

&lt;h2&gt;
  
  
  Accepting Claim Proposals
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rIIDgUrB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kte6ap60lzjz7i2jejz0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rIIDgUrB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kte6ap60lzjz7i2jejz0.png" alt="Image description" width="800" height="1317"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You'll get an email notification when Hunters have applied to claim your bounty. When you're back in HEROES head to "your bounties." &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--GtYUsxGO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8res0rwmbrx7ce9owz4e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--GtYUsxGO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8res0rwmbrx7ce9owz4e.png" alt="Image description" width="800" height="1045"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After you click into the relevant bounty head to the Applicants tab so you can approve or reject claim proposals. &lt;/p&gt;

&lt;p&gt;Accepting the claim will start the time commitment countdown (the hunter is required to provide an estimate if you don't specify any time constraints). &lt;/p&gt;

&lt;h2&gt;
  
  
  Verifying Submitted Work
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--kAGXPpDr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/n6olktxzyzjuquncj3cn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--kAGXPpDr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/n6olktxzyzjuquncj3cn.png" alt="Image description" width="800" height="1392"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When a hunter has completed and submitted their work you'll get another notification to verify that it meets your requirements. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Y1MZRkBV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/soreyj8i3qm8on8pqkm3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Y1MZRkBV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/soreyj8i3qm8on8pqkm3.png" alt="Image description" width="800" height="1210"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Inside the bounty it will be marked as completed to indicate your approving the work rather than a claim. The chat will include any final details from the hunter for your review. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--hY44Buzs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3fyu74h55ayfqg238hjc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--hY44Buzs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3fyu74h55ayfqg238hjc.png" alt="Image description" width="800" height="1176"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After your approval funds will be released from escrow to the hunter, mission accomplished! &lt;/p&gt;

&lt;h2&gt;
  
  
  Any Questions?
&lt;/h2&gt;

&lt;p&gt;Shoot a comment below or hop on &lt;a href="https://t.me/heroesHQ/"&gt;telegram to chat with the HEROES community&lt;/a&gt;!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Unlock the Future of Web3: Explore Digital Assets on NEAR's Eco-Friendly Blockchain with Mintbase JS API &amp; Win $500!</title>
      <dc:creator>Jordan</dc:creator>
      <pubDate>Tue, 26 Sep 2023 00:40:03 +0000</pubDate>
      <link>https://dev.to/starpause/unlock-the-future-of-web3-explore-digital-assets-on-nears-eco-friendly-blockchain-with-mintbase-js-api-win-500-465d</link>
      <guid>https://dev.to/starpause/unlock-the-future-of-web3-explore-digital-assets-on-nears-eco-friendly-blockchain-with-mintbase-js-api-win-500-465d</guid>
      <description>&lt;p&gt;Right now I'm running a contest where developers of any skill level get entries into a $1,000 prize pool by completing a quick tutorial, &lt;a href="https://gleam.io/em61W/mintbase-dev-challenge"&gt;check it out&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;Wondering why I'm so passionate about &lt;a href="https://mintbase.xyz/"&gt;Mintbase&lt;/a&gt;? Let me guide you through 🧵👇&lt;/p&gt;

&lt;h2&gt;
  
  
  𝐀 𝐉𝐨𝐮𝐫𝐧𝐞𝐲 𝐑𝐨𝐨𝐭𝐞𝐝 𝐢𝐧 𝐀𝐫𝐭
&lt;/h2&gt;

&lt;p&gt;It began with a dream of bringing artists to the blockchain when we lost IRL earning opportunities. In 2020, together with curator &lt;a href="https://dev.tolisakolb_xkey"&gt;Lisa Kolb&lt;/a&gt;, we showcased artists at the &lt;a href="https://codame.com/projects/art-tech-festival-2020-joynt"&gt;CODAME ART+TECH Festival through JOYNT&lt;/a&gt;. Success tasted sweet on ETH, but the challenging UX and environmental concerns made us seek alternatives.&lt;/p&gt;

&lt;h2&gt;
  
  
  𝐃𝐢𝐬𝐜𝐨𝐯𝐞𝐫𝐢𝐧𝐠 𝐌𝐢𝐧𝐭𝐛𝐚𝐬𝐞 𝐚𝐧𝐝 𝐍𝐄𝐀𝐑
&lt;/h2&gt;

&lt;p&gt;That's when Mintbase, developing on the carbon-neutral L1 &lt;a href="https://near.org/"&gt;NEAR&lt;/a&gt;, caught our eye. I was immediately drawn to NEAR's open engineering culture and Mintbase’s Createbase community. This community, brimming with diverse minds and genuine intent, laid the foundation for the current &lt;a href="https://www.creativesdao.org/"&gt;CreativesDao&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  𝐖𝐡𝐲 𝐌𝐢𝐧𝐭𝐛𝐚𝐬𝐞 𝐒𝐭𝐚𝐧𝐝𝐬 𝐎𝐮𝐭
&lt;/h2&gt;

&lt;p&gt;Through the turbulence of web3, &lt;a href="https://mintbase.xyz"&gt;Mintbase&lt;/a&gt; remained a beacon of integrity and innovation. Their approach is refreshingly honest – no token launches, no shady activities, just a commitment to universal standards and interoperability. Their real USP? Launch a contract with Mintbase, and you're the owner, staying true to web3's spirit of radical self-reliance. &lt;/p&gt;

&lt;h2&gt;
  
  
  𝐍𝐄𝐀𝐑'𝐬 𝐆𝐚𝐦𝐞-𝐂𝐡𝐚𝐧𝐠𝐢𝐧𝐠 𝐀𝐩𝐩𝐫𝐨𝐚𝐜𝐡
&lt;/h2&gt;

&lt;p&gt;Parallelly, &lt;a href="https://near.org/"&gt;Near Protocol&lt;/a&gt; has etched its own niche, driving blockchain adoption to unprecedented heights. It powers giants like &lt;a href="https://sweatco.in/"&gt;Sweatcoin&lt;/a&gt; and &lt;a href="https://cosmose.co/"&gt;Cosmose (KAIKAI)&lt;/a&gt;, placing it among the top 5 chains by user activity. With native stable coins, NEAR ensures seamless transactions on Mintbase, supplemented by credit card payments. Near Foundation’s thoughtful strides have ensured its legal robustness and a healthy treasury. Its experimental projects, like the &lt;a href="https://twitter.com/neardc"&gt;Near Digital Collective&lt;/a&gt; and &lt;a href="https://docs.near.org/bos"&gt;Blockchain Operating System&lt;/a&gt;, showcase its dynamism.&lt;/p&gt;

&lt;h2&gt;
  
  
  𝐖𝐞𝐛𝟑: 𝐀 𝐃𝐨𝐦𝐚𝐢𝐧 𝐨𝐟 𝐄𝐧𝐝𝐥𝐞𝐬𝐬 𝐏𝐨𝐬𝐬𝐢𝐛𝐢𝐥𝐢𝐭𝐢𝐞𝐬
&lt;/h2&gt;

&lt;p&gt;With economic uncertainties looming, developers are scouting for fresh horizons. While the bear market paints a grim picture of crypto, the surge in blockchain developer demand (552% in 2022) is hard to ignore. So, why wait? &lt;a href="https://starpause.com/mintbase"&gt;Dive into the $1000 Mintbase challenge!&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Don't consider yourself a developer? No worries! Try tasks like creating a testnet wallet or crafting a Mintbase AffiliateDirect link. There's a challenge for everyone to tackle 🤝&lt;/em&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Unlock Digital Collectables Using Mintbase JS</title>
      <dc:creator>Jordan</dc:creator>
      <pubDate>Tue, 19 Sep 2023 21:59:33 +0000</pubDate>
      <link>https://dev.to/starpause/offer-digital-assets-using-mintbase-js-c85</link>
      <guid>https://dev.to/starpause/offer-digital-assets-using-mintbase-js-c85</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--4reQZVJY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wyqro6gjv8esilzsgd0z.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4reQZVJY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wyqro6gjv8esilzsgd0z.gif" alt="anime alien lady in a warp speed vortex" width="512" height="512"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The Mintbase API empowers web developers to integrate digital collectibles into their toolkit. By the end of this tutorial, you'll have a fully configured environment ready for diving deeper into web3 with a powerful JavaScript API. &lt;/p&gt;

&lt;p&gt;Even if you're just starting out with JavaScript, you'll find this guide easy to follow. This is your gateway to the web3 industry that witnessed a staggering 552% growth in developer demand in 2022! &lt;/p&gt;

&lt;p&gt;Plus, if you complete the tutorial by October 11th, 2023, you'll have a chance to &lt;a href="https://starpause.com/mintbase"&gt;win a share of the $1,000 prize pool&lt;/a&gt;!&lt;/p&gt;

&lt;h2&gt;
  
  
  Near Protocol
&lt;/h2&gt;

&lt;p&gt;Mintbase makes it easy to interact with the NEAR blockchain using Javascript. Why NEAR? Because It's carbon-neutral and has bullet proof scalability that's trusted by giants like &lt;a href="https://twitter.com/ilblackdragon/status/1702155228932718756"&gt;KAI-CHING (the #1 dApp in the world)&lt;/a&gt; and &lt;a href="https://sweatco.in/"&gt;SweatCoin (gamified exercise since 2015)&lt;/a&gt;. With a commitment to great experiences for both developers and end users, NEAR is easy for anyone to pick up.  &lt;/p&gt;

&lt;p&gt;Grabbing a NEAR account via &lt;a href="https://shard.dog/mintbasegleam"&gt;shard.dog link&lt;/a&gt; is a perfect demonstration of the seamless onboarding process. Especially worth checking if you're participating in &lt;a href="https://starpause.com/mintbase"&gt;the contest&lt;/a&gt; as you'll need a NEAR name to claim prizes. &lt;/p&gt;

&lt;p&gt;You'll also need to &lt;a href="https://testnet.mynearwallet.com/"&gt;create a testnet account&lt;/a&gt; to follow along with the tutorial. Each testnet account comes with a bunch of tokens for experimenting and development. If you run out of testnet tokens you can always make another account!&lt;/p&gt;

&lt;h2&gt;
  
  
  Mintbase on Testnet
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8D2TfL1q--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xmac6y75xa3npsuofbuh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8D2TfL1q--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xmac6y75xa3npsuofbuh.png" alt="switch to testnet screenshot" width="800" height="390"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now that you have a Testnet account you can easily create your own Mintbase contract. On the top right of the site be sure you're logged in and that you've selected NEAR TESTNET.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--FeFiN8h6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/y8i3tro5g2y6jrc4jcra.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--FeFiN8h6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/y8i3tro5g2y6jrc4jcra.png" alt="launch a contract screenshot" width="800" height="629"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After confirming you're on Testnet head to &lt;code&gt;Manage -&amp;gt; My Contracts&lt;/code&gt; and then use the &lt;code&gt;New Contract&lt;/code&gt; button. You can fill in the Store Name/Symbol with anything and proceed to paying the contract storage fee. &lt;/p&gt;

&lt;p&gt;What's a storage fee? Instead of monthly payments to a hosting provider you make a one time payment to the Near network to keep your contract forever. 100kb costs ~1 NEAR token, which we're not too worried about with our play tokens on testnet. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--TJC3_cwa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rvnenlbifqqvnu0o6b9i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--TJC3_cwa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rvnenlbifqqvnu0o6b9i.png" alt="mintbase api key screenshot" width="800" height="352"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next head over to &lt;code&gt;Build -&amp;gt; Developer API&lt;/code&gt; to get your your Mintbase Testnet Developer Key. Use the &lt;code&gt;Generate New Key&lt;/code&gt; button and Copy it for safe keeping. Normally you wouldn't share that key with anyone, but if you're participating in the contest you can &lt;a href="https://starpause.com/mintbase"&gt;paste it on gleam for an entry&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Forking a Marketplace
&lt;/h2&gt;

&lt;p&gt;Now that your store contract exists on the blockchain it's possible to use any interface to interact with it, thanks to the power of decentralization. However, most business clients will want a dedicated store with customized branding. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--K2niuCJT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2u6t901suulv8x2e5pez.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--K2niuCJT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2u6t901suulv8x2e5pez.png" alt="fork marketplace front end" width="800" height="472"&gt;&lt;/a&gt;&lt;br&gt;
An &lt;a href="https://github.com/Mintbase/examples/tree/main/simple-marketplace"&gt;example marketplace repository&lt;/a&gt; demonstrates how you can use Mintbase JS to integrate web3 collectables into any front end you're familiar with. To clone and deploy the repository with Vercel go under &lt;code&gt;Build -&amp;gt; Deploy a Marketplace&lt;/code&gt; on the testnet &lt;a href="https://testnet.mintbase.xyz/"&gt;Mintbase.xyz site&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--scLfQ03t--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ae0b4ostkcji2xzs761j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--scLfQ03t--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ae0b4ostkcji2xzs761j.png" alt="Connecting a git host to fork the marketplace example repository" width="800" height="479"&gt;&lt;/a&gt;&lt;br&gt;
Once you get to the Vercel page you'll need to specify a git host. This is where your fork will live so that you have a copy and can edit it. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--t83fTUC3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8p2zuyiw4jwtyi0j63su.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--t83fTUC3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8p2zuyiw4jwtyi0j63su.png" alt="Forked marketplace building" width="800" height="452"&gt;&lt;/a&gt;&lt;br&gt;
After connecting your git host the Mintbase simple-marketplace repository will clone and you'll get a progress indicator of how the deployment is going. It should take less than 5 minutes for the entire process to run.&lt;/p&gt;

&lt;h2&gt;
  
  
  Configure Your Marketplace
&lt;/h2&gt;

&lt;p&gt;The last step is configuring the cloned marketplace to connect with the contract you created earlier. Follow the &lt;a href="https://github.com/Mintbase/examples/tree/main/simple-marketplace"&gt;Simple Marketplace README.md&lt;/a&gt; to rename the &lt;code&gt;.env.example&lt;/code&gt; file and update the variables. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--pZTDJdxg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ld0rwtst6ghcro0y3cxw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pZTDJdxg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ld0rwtst6ghcro0y3cxw.png" alt="Editing .env.example on Github" width="800" height="456"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you forked the marketplace using Github you can edit directly on their website (as pictured). Otherwise clone the repo to your computer and edit it there.&lt;/p&gt;

&lt;p&gt;Submit your marketplace URL and the updated &lt;code&gt;.env&lt;/code&gt; variables to the &lt;a href="https://starpause.com/mintbase"&gt;gleam contest&lt;/a&gt; for another two entries!&lt;/p&gt;

&lt;h2&gt;
  
  
  Next Steps
&lt;/h2&gt;

&lt;p&gt;Follow &lt;a href="https://twitter.com/mintbase"&gt;Mintbase on Twitter&lt;/a&gt; to find out about upcoming opportunities to earn like the grants program and hackathons! How cool would it be to see a &lt;a href="https://admin.forem.com/docs/advanced-customization/extensions/listings"&gt;FOREM listing extension&lt;/a&gt; leveraging Mintbase JS?&lt;/p&gt;

&lt;p&gt;If you have any questions as you continue to explore, pop into the &lt;a href="https://t.me/mintdev"&gt;Telegram chat&lt;/a&gt; for timely responses.&lt;/p&gt;

&lt;p&gt;For my next article I'm planning to cover the &lt;a href="https://www.youtube.com/watch?v=pGNErpFe8Kk"&gt;Meritocracy Wordpress Plugin&lt;/a&gt;, subscribe so you don't miss it!&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>beginners</category>
      <category>web3</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
