<?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: Mark Ramrattan </title>
    <description>The latest articles on Forem by Mark Ramrattan  (@markramrattan).</description>
    <link>https://forem.com/markramrattan</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%2F643327%2F56fc49c0-0a78-4d5a-8930-41adc0b314ed.jpeg</url>
      <title>Forem: Mark Ramrattan </title>
      <link>https://forem.com/markramrattan</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/markramrattan"/>
    <language>en</language>
    <item>
      <title>Running a Validator Node on The Root Network (TRN) with AWS</title>
      <dc:creator>Mark Ramrattan </dc:creator>
      <pubDate>Sun, 31 Aug 2025 16:03:19 +0000</pubDate>
      <link>https://forem.com/aws-builders/running-a-validator-node-on-the-root-network-trn-with-aws-520f</link>
      <guid>https://forem.com/aws-builders/running-a-validator-node-on-the-root-network-trn-with-aws-520f</guid>
      <description>&lt;h2&gt;
  
  
  From Palm 🌴 Network to Futureverse 🌌
&lt;/h2&gt;

&lt;p&gt;😎 As a lifelong 🦇 DC fan, the last four years have been nothing short of a rollercoaster. From the early days on the DC NFT Marketplace built on the Palm Network, to the big merger with Candy Digital, and now this exciting leap into the Futureverse powered by The Root Network — it’s been wild 🤪&lt;/p&gt;

&lt;p&gt;And now, for the first time ever, I’m running a Validator Node on AWS to help support our DC collectibles migration and contribute to the Futureverse ✨ ecosystem. But before I dive 🤿 into my experience with validator setups, let’s back up for anyone new to The Root Network…&lt;/p&gt;

&lt;h2&gt;
  
  
  What is The Root Network? 🌐
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.therootnetwork.com/" rel="noopener noreferrer"&gt;The Root Network (TRN)&lt;/a&gt; is the backbone blockchain that powers the open metaverse — designed to connect games, content, and digital experiences in one interoperable ecosystem. Think of it as the infrastructure that ties everything together.&lt;/p&gt;

&lt;h2&gt;
  
  
  👉 Check out The Root Network
&lt;/h2&gt;

&lt;p&gt;To keep &lt;a href="https://www.therootnetwork.com/" rel="noopener noreferrer"&gt;TRN&lt;/a&gt; alive and synchronised, it relies on nodes — the backend engines that either serve apps or secure the network. Without nodes, no blocks get processed, no transactions get validated, and the metaverse doesn’t move forward.&lt;/p&gt;

&lt;h2&gt;
  
  
  Types of Nodes 🖥️
&lt;/h2&gt;

&lt;p&gt;Here’s a quick breakdown of the three main types of nodes on The Root Network:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Full Node ⚡&lt;/strong&gt;&lt;br&gt;
Stores recent blockchain data and prunes older states (keeping the last 256 finalised blocks). Around 50GB of storage. Useful for developers who need access to the latest transactions and data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Archive Node 📚&lt;/strong&gt;&lt;br&gt;
The historian of the blockchain — keeping all past blocks and states. Heavyweight: 500GB–1TB of storage required. Great for apps needing historic data (leaderboards, ownership records, collection displays, gamification).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Validator Node 🛡️&lt;/strong&gt;&lt;br&gt;
The guardians of the network. Validators don’t just store data — they create new blocks and validate transactions, playing a central role in securing TRN and maintaining consensus.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lessons Learned from Running a Validator Node 🛠️
&lt;/h2&gt;

&lt;p&gt;Running a validator for the first time isn’t just a “click and go” setup. It’s an ongoing responsibility. Here are some of my key learnings that might save you time (and money) if you’re considering joining as a validator:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Be Ready to Stake Big 💰&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The first thing to know: you’ll need to stake a significant amount of ROOT tokens to cover costs and make your validator viable.&lt;/p&gt;

&lt;p&gt;👉 At the time of writing, 1.5M–2M ROOT (roughly $5K–$7K USD) is the recommended range, though this can change depending on market prices.&lt;/p&gt;

&lt;p&gt;This detail isn’t always clear in the documentation. It’s “tacit knowledge” among node operators. Factor it in early: running a validator isn’t just about spinning up a server — it’s about ensuring your stake covers costs and generates returns.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Don’t Run It From Home 🏠🚫&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It’s tempting to host a validator locally or through a cheap provider, but uptime and performance are everything.&lt;/p&gt;

&lt;p&gt;If your node goes offline, you risk slashing penalties (losing part of your stake). Robust cloud infrastructure is the way to go.&lt;/p&gt;

&lt;p&gt;✅ I chose AWS, which offers 99.99% uptime per month. Alternatives include Microsoft Azure or Google Cloud.&lt;/p&gt;

&lt;p&gt;If you delegate to someone else’s validator, make sure you can reach them quickly if things go wrong. Downtime happens, and responsiveness is critical.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Fine-Tune Node Settings ⚙️&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The docs are easy to skim, but buried inside are optimisations that really matter:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Disable Simultaneous Multithreading (SMT) → Better single-threaded performance.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Prioritise CPU speed → Single-thread performance matters more than core count.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Use SSD gp3 (EBS storage) → Lower latency, optimised for I/O-heavy workloads.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Harden network settings → Secure your instance for updates and P2P traffic.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;4. Monitor Everything 📊&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Running a validator is like managing a server that never sleeps. You need visibility.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;CloudWatch Alarms → Alerts for CPU, storage, and RAM usage (set triggers at ~70%).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Node updates → Expect ~3–4 updates per month (kernel patches, security updates, resets for optimal performance).&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Small practices like this make a huge difference in long-term stability.&lt;/p&gt;

&lt;h2&gt;
  
  
  Example: Updating a Root Network Node
&lt;/h2&gt;

&lt;p&gt;If you don’t understand the commands below — no stress. I’ve added documentation links at the end. You can copy and paste commands into search or the docs for more detail.&lt;/p&gt;

&lt;p&gt;Step 1 — Check what’s upgradeable:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;apt list --upgradable&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Step 2 — Check &amp;amp; Update Packages information:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo apt update&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Step 3 — Upgrade packages:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo apt upgrade&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Step 4 — Restart if needed:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo reboot&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Example Updates Performed&lt;/p&gt;

&lt;p&gt;On 29th August 2025, we updated around 10 packages on our Ubuntu system.&lt;/p&gt;

&lt;p&gt;Linux kernel packages:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;linux-aws (6.14.0-1011.11~24.04.1 → 6.14.0-1012.12~24.04.1)&lt;/code&gt;&lt;br&gt;
&lt;code&gt;linux-headers-aws (6.14.0-1011.11~24.04.1 → 6.14.0-1012.12~24.04.1)&lt;/code&gt;&lt;br&gt;
&lt;code&gt;linux-image-aws (6.14.0-1011.11~24.04.1 → 6.14.0-1012.12~24.04.1)&lt;/code&gt;&lt;br&gt;
&lt;code&gt;linux-tools-common (6.8.0-78.78 → 6.8.0-79.79)&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;System packages:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;udisks2 (2.10.1-6ubuntu1.2 → 2.10.1-6ubuntu1.3)&lt;/code&gt;&lt;br&gt;
&lt;code&gt;libudisks2-0 (2.10.1-6ubuntu1.2 → 2.10.1-6ubuntu1.3)&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;New kernel-related packages installed:&lt;br&gt;
&lt;code&gt;linux-aws-6.14-headers-6.14.0-1012&lt;/code&gt;&lt;br&gt;
&lt;code&gt;linux-aws-6.14-tools-6.14.0-1012&lt;/code&gt;&lt;br&gt;
&lt;code&gt;linux-headers-6.14.0-1012-aws&lt;/code&gt;&lt;br&gt;
&lt;code&gt;linux-image-6.14.0-1012-aws&lt;/code&gt;&lt;br&gt;
&lt;code&gt;linux-modules-6.14.0-1012-aws&lt;/code&gt;&lt;br&gt;
&lt;code&gt;linux-tools-6.14.0-1012-aws&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;We moved from kernel 6.14.0-1011-aws → 6.14.0-1012-aws. Restarting the system was required to load the new kernel.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why Continuous Updates Matter&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Skipping updates leaves your validator exposed. For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Critical security flaws (like CVE-2025-38083 in the network traffic control subsystem).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Broad driver and network fixes.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;👉 In short: keeping your node updated = protecting both your stake and the network.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Helpful Documentation 📚&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://docs.therootnetwork.com/participate/running-a-node" rel="noopener noreferrer"&gt;Running a Node&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://docs.therootnetwork.com/participate/validator-guide/become-a-validator" rel="noopener noreferrer"&gt;Become a Validator&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://docs.therootnetwork.com/participate/validator-guide/upgrade-instructions" rel="noopener noreferrer"&gt;Upgrade Your Node&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://docs.therootnetwork.com/participate/validator-guide/update-validator-commission" rel="noopener noreferrer"&gt;Update Validator Commission&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://docs.therootnetwork.com/participate/validator-guide/best-practices" rel="noopener noreferrer"&gt;Validator Best Practices&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Final Thoughts 🙌
&lt;/h2&gt;

&lt;p&gt;Running a validator is a commitment, but it’s also an incredible way to support the network and community while deepening your knowledge of blockchain infrastructure. For me, this is more than a technical experiment — it’s about helping shape the future of DC collectibles in the open metaverse 🌍✨&lt;/p&gt;

&lt;h2&gt;
  
  
  TL;DR ⚡
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The Root Network (TRN)&lt;/strong&gt; powers the open metaverse — nodes keep it running.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Validator Nodes&lt;/strong&gt; 🛡️ secure TRN by creating blocks &amp;amp; validating transactions.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;What you need to know if you’re starting out:&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stake Requirement&lt;/strong&gt; → 1.5M–2M ROOT ($5K–$7K) recommended.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Don’t run from home&lt;/strong&gt; → Use cloud providers (AWS, Azure, GCP) for uptime.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Optimise settings&lt;/strong&gt; → Disable SMT, prioritise CPU speed, use SSD gp3, secure networking.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Monitor constantly&lt;/strong&gt; → Set CloudWatch alerts, expect ~3–4 updates per month.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Updates matter&lt;/strong&gt; → Kernel/security patches (e.g. CVE-2025-38083) protect your stake and the network.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;In short:&lt;/strong&gt; Running a validator is a real commitment, but it’s one of the best ways to support the Futureverse ecosystem while learning blockchain infra 🚀&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Special thanks to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://x.com/MoMetaMedia" rel="noopener noreferrer"&gt;Scott (MoMeta.root)&lt;/a&gt; — Debugging node issues&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://x.com/BildoVerde" rel="noopener noreferrer"&gt;Bildo&lt;/a&gt; — Connecting me with experts&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://x.com/shenxcrypto" rel="noopener noreferrer"&gt;Shen&lt;/a&gt; — Optimising storage &amp;amp; costs&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;People from AWS: David Espitia Castresana, Diego Cavestany, Jason Dunn + Team (&amp;amp; many others I am sure helping behind the scenes)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;AWS London IRL Workshops — Node performance guidance &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Dr Cleopatra — Reviewing this content 🙏&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Collaborative efforts achieve greater, more sustained success than individual pursuits. I’m grateful to everyone contributing — whether by helping, staking, or simply reading this blog 🚀&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>web3</category>
      <category>blockchain</category>
      <category>therootnetwork</category>
    </item>
    <item>
      <title>DC Bat Cowls with Amplify Gen 2 Fullstack Typescript</title>
      <dc:creator>Mark Ramrattan </dc:creator>
      <pubDate>Sun, 26 May 2024 08:59:59 +0000</pubDate>
      <link>https://forem.com/aws-builders/dc-bat-cowls-with-amplify-gen-2-fullstack-typescript-43ac</link>
      <guid>https://forem.com/aws-builders/dc-bat-cowls-with-amplify-gen-2-fullstack-typescript-43ac</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/awschallenge"&gt;The AWS Amplify Fullstack TypeScript Challenge &lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;I built an application that helps users find the DC Bat Cowls 🦇 trait rarity using &lt;a href="https://aws.amazon.com/amplify/"&gt;Amplify Gen 2 with Typescript&lt;/a&gt;. What a Bat Cowl is can be found &lt;a href="https://www.dc.com/blog/2022/03/29/the-bat-cowl-collection-one-epic-drop"&gt;here&lt;/a&gt;. The marketplace for them is &lt;a href="https://www.candy.com/dc/marketplace?collection=%5B%22The+Bat+Cowl+Collection%22%5D"&gt;here&lt;/a&gt;. Summary on Bat Cowls is a really cool project that has enabled me to create our own DC Comic... and created our own super villain within the DC Universe. &lt;/p&gt;

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

&lt;p&gt;You can view a Live Demo of the application here:&lt;br&gt;
&lt;a href="https://www.dcbatcowls.com"&gt;https://www.dcbatcowls.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Git Repository: &lt;br&gt;
&lt;a href="https://github.com/markramrattan/dcbatcowls"&gt;https://github.com/markramrattan/dcbatcowls&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  Journey
&lt;/h2&gt;

&lt;p&gt;My process (journey) involved spending the Amplify Gen 2 release week soaking up all the information each day. That was wild!🤪 (plus the 4 hour AWS Twitch stream) and an incredible insight into the BIG steps forward the AWS Amplify team is making. I could probably write 5 blogs... on all the AWS AMPLIFY updates 😂 (Yes it's capitalised for a reason aka it's AMPLIFIED...) though if you want to read what's new check out these two blogs: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://aws.amazon.com/blogs/mobile/team-workflows-amplify/"&gt;https://aws.amazon.com/blogs/mobile/team-workflows-amplify/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://aws.amazon.com/blogs/mobile/new-in-aws-amplify-integrate-with-sql-databases-oidc-saml-providers-and-the-aws-cdk/"&gt;https://aws.amazon.com/blogs/mobile/new-in-aws-amplify-integrate-with-sql-databases-oidc-saml-providers-and-the-aws-cdk/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;First thing I did was do the Quickstart during the Amplify Gen 2 release week. That template gives you a fast and quick (hands-on) insight on the new features. If you want to check it out, it's &lt;a href="https://docs.amplify.aws/nextjs/start/quickstart/"&gt;here&lt;/a&gt;. I used the NextJS App  Router version.&lt;/p&gt;

&lt;p&gt;What's weird or interesting 🧐 is my own development journey has switched to NextJS and Typescript. Then this pops up... with AWS Amplify Gen 2 using a TypeScript-based, code-first developer experience (DX) for defining backends. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;The Gen 2 DX offers a unified Amplify developer experience with hosting, backend, and UI-building capabilities and a code-first approach.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I think that means... I am a *&lt;em&gt;Full Stack developer... *&lt;/em&gt; I remember back in the days of putting Front-end Developer on my C.V. 😆 Those days are LONG gone💨 I am enjoying this Full Stack Developer experience. A great understanding of how Amplify works is the concepts section (probably a great place to start). The page has a great overview on how to reframe your mind on what it currently is now: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.amplify.aws/nextjs/how-amplify-works/concepts/"&gt;https://docs.amplify.aws/nextjs/how-amplify-works/concepts/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This diagram from the page above is great to visually understand the constructs:&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%2Fygc5dz8i9zje5zs3doy3.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%2Fygc5dz8i9zje5zs3doy3.png" alt="AWS Amplify Concept" width="800" height="547"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ok, enough theory! 🧠 We did the reading, let's build and participate in this Amplify Gen 2 challenge. The initial Base of the project is the quickstart template. Sometimes it's better to not start from a blank canvas. Gutted it out and started working on my data models... &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How was I going to store the data? &lt;/li&gt;
&lt;li&gt;What would it look like? &lt;/li&gt;
&lt;li&gt;Would users find it beneficial being in that format?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Reflecting, I probably did it the wrong way around. I should of spent more time with users and work backwards. Though... this project is still in development and I'll continue to work on it after the challenge is done. &lt;/p&gt;

&lt;p&gt;I really enjoyed learning about constructing the data model. I am used to Amplify Studio and doing it the visual way and this is a big change for me. I found it a better experience (code first)... which is weird (as I am a more visual person). &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%2Fmpy78t7p2u0q8lkx0c5g.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%2Fmpy78t7p2u0q8lkx0c5g.png" alt="Data Model" width="800" height="786"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After spending time working out the model. I used the data manager to input the data needed. I wish there was a way to add the data in bulk (i.e.) upload this csv, reformat it and populate it in the tables (there probably is... if you know how, drop a comment or tag me). Though saying that, when the Bat Cowls get re-minted on the blockchain, i'll probably use the API to populate the data. &lt;/p&gt;

&lt;p&gt;Connecting up the model to the Front UI was fun. I used tailwind and reverted to what I know (not always best), though I was able to quickly design it and push out something cool! 😎 &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%2Fohytj99m3hxdcvtwbi6c.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%2Fohytj99m3hxdcvtwbi6c.png" alt="Main Page" width="800" height="722"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Yes the different traits are clickable and it takes you to more details (rarity).&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%2Ffpzbj8uyat2qi03bloqw.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%2Ffpzbj8uyat2qi03bloqw.png" alt="Material 2 Page" width="800" height="597"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For me, this looks Cool! 😎 and built SO FAST💨 Normally it takes me at least a month to get it to this level. Instead it's increased my speed of development. I used Amazon Q with Amplify integration! That shizzle is SOO GOOD! I would say it's a 10x improvement in development speed (for me). Though lots still to learn! and excited about integrating more user benefits. &lt;/p&gt;

&lt;p&gt;I also added a Web3 wallet from &lt;a href="https://thirdweb.com/"&gt;ThirdWeb&lt;/a&gt; so users in the future will be able to connect their Bat Cowls to the application. Great integration and has the ability to specify wallets and restrict usage to particular blockchains.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;ConnectButton&lt;/span&gt;
     &lt;span class="nx"&gt;client&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;client&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
     &lt;span class="nx"&gt;wallets&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;wallets&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
     &lt;span class="nx"&gt;chain&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nf"&gt;defineChain&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;11297108109&lt;/span&gt;&lt;span class="p"&gt;)}&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/ConnectButton&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I added the Data component for this project. I could easily add the other three (Authentication / Serverless Function / File Storage). However, I tried to make this about self learning and improvement aligned to building something of benefit to the user. &lt;/p&gt;

&lt;p&gt;Going forward (continuously learning), I'll definitely be integrating more components when needed for user benefit. &lt;/p&gt;

&lt;p&gt;Thank you for reading my blog. Feel free to check out what I've created. All feedback is welcome 😎&lt;/p&gt;

&lt;p&gt;Editor: Dr Shivani Kochhar&lt;br&gt;
Updated Data for DC Bat Cowls by &lt;a href="https://x.com/squawkingJAKE"&gt;Jake&lt;/a&gt; &amp;amp; &lt;a href="https://x.com/NFTink3r"&gt;NFTink3r&lt;/a&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>awschallenge</category>
      <category>amplify</category>
      <category>fullstack</category>
    </item>
    <item>
      <title>The Matrix Fight Club built with AWS Amplify</title>
      <dc:creator>Mark Ramrattan </dc:creator>
      <pubDate>Fri, 30 Sep 2022 21:57:51 +0000</pubDate>
      <link>https://forem.com/aws-builders/the-matrix-fight-club-built-with-aws-amplify-22ih</link>
      <guid>https://forem.com/aws-builders/the-matrix-fight-club-built-with-aws-amplify-22ih</guid>
      <description>&lt;h2&gt;
  
  
  Demo Video &amp;amp; Walkthrough
&lt;/h2&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/hZtQOKVuO1E"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  The Matrix Fight Club (Web Link)
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.matrixfightclub.com" rel="noopener noreferrer"&gt;https://matrixfightclub.com&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Problem to Solve
&lt;/h2&gt;

&lt;p&gt;There is a community of people who love playing Matrix Fight Club (MFC). There are 100,000 unique Matrix avatars. You would battle an opponent by entering in your Matrix NFT Avatar ID and based on attributes you would &lt;strong&gt;Fight&lt;/strong&gt;. MFC really helped the community to engage with each other and simultaneously have fun (&lt;em&gt;which is what life is all about&lt;/em&gt;). Though after a while, the MFC platform kept getting errors and didn't load well and finally got discontinued. The owner of MFC said it was hard to maintain and ultimately the costs of running the service were too much. This left a big gap within the community. Having no knowledge of creating a fight application for a big community, I set out to build something that was reliable, engaging and ultimately provide value and fun to the end user.&lt;/p&gt;

&lt;h2&gt;
  
  
  Background
&lt;/h2&gt;

&lt;p&gt;You'll probably be wondering 🤷🏽 what these Matrix NFT Avatars are. Around November 30th 2021, Warner Bros., in partnership with Nifty's launched &lt;a href="https://niftys.com/c/thematrix" rel="noopener noreferrer"&gt;The Matrix Avatars Program&lt;/a&gt;, consisting of 100,000 unique avatar NFTs. There were 300K in a queue and yes I was one of them 😁. It sold out on launch and started a multi year program. During this time, nearly a year later, Web3 surfaced different problems to solve such as decentralisation and token based economy. Though a bigger problem was deeper engagement within The Matrix NFT experience and aligning it with customer expectations. These unique avatars come with many different traits and attributes and are built with EpicGames Metahuman Creator. Below is an example of &lt;em&gt;One&lt;/em&gt;. Here, you can see the Matrix NFT Avatar and the attributes assigned to the NFT.&lt;/p&gt;

&lt;h2&gt;
  
  
  Matrix Avatar Example
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1664201469718%2Fz-d-AOwsr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1664201469718%2Fz-d-AOwsr.png" alt="Screenshot 2022-09-26 at 15.10.50.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Learnings from the Past
&lt;/h2&gt;

&lt;p&gt;So, we now know the problem: no MFC 😭 AND the IMMENSE demand for these Matrix Avatars at launch 🚀.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The question is..? how are we going to build something to solve this problem - let's look at learnings from the past...&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I've written tutorial guides previously for &lt;a href="https://dev.to/aws-builders/a-beginners-guide-to-aws-amplify-studio-391"&gt;AWS Amplify&lt;/a&gt; and gone through &lt;a href="https://dev.to/godspowercuche/build-a-serverless-real-time-application-with-modern-apis-the-graphql-real-time-race-4gbk-temp-slug-3687641"&gt;AWS Amplify Workshops&lt;/a&gt;. Though never gone Live Production on something real and tangible for customers using AWS Amplify. Being able to handle 100K Matrix Avatars is Daunting and Very Exciting at the same time! I needed something that was robust and had the ability to make many changes at speed. You're able to do this with AWS Amplify, through previews and testing with CI/CD workflows by continuously deploying a progressive app on every code commit. Users of this MFC will be accessing it globally. AWS Amplify utilises reliable hosting with CloudFront's content delivery network (CDN) with hundreds of points of presence globally. Having an oversight on monitoring metrics can be done via Amplify CloudWatch integration to ensure traffic, errors, data transfer and latency of the app are working effectively. You can also share yet-to-be released features with users via setting username and password. And a whole lot more... &lt;a href="https://aws.amazon.com/amplify/" rel="noopener noreferrer"&gt;Read more here&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Idea to Reality
&lt;/h2&gt;

&lt;p&gt;Great 🤩, we've got good learnings from the past that we can utilise. Though what method shall we use to bring Ideas to Reality. There is a great book I use to map out ideas, which help me test and iterate fast. It's called &lt;a href="https://www.amazon.co.uk/Sprint-Solve-Problems-Test-Ideas/dp/0593076117/ref=sr_1_1?crid=3VZBO5TNL6AA0&amp;amp;keywords=sprint+jake+knapp&amp;amp;qid=1664206595&amp;amp;sprefix=sprint%2520jake%2520knapp%2Caps%2C92&amp;amp;sr=8-1" rel="noopener noreferrer"&gt;Sprint by Jake Knapp&lt;/a&gt;. Definitely a recommended read if you've not read it. Here is a quick 90 second overview:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://youtu.be/K2vSQPh6MCE" rel="noopener noreferrer"&gt;https://youtu.be/K2vSQPh6MCE&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I used the &lt;strong&gt;Sprint&lt;/strong&gt; approach to set &lt;em&gt;a long-term goal&lt;/em&gt;. Why are we doing this project? Where do we want to be by the end of this hackathon (1 Month)?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Allow the user to Fight against another User with their Matrix NFT Avatar.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Simple right? Though it's important we have clarity as you can easily get carried away with features / requirements that do not lead you to that goal. Now we have an idea of where we are heading it's time to select some front-end frameworks as we'll be using the learnings of the past to implement AWS Amplify.&lt;/p&gt;

&lt;h2&gt;
  
  
  Frameworks
&lt;/h2&gt;

&lt;p&gt;I've opted to build MFC with &lt;a href="https://reactjs.org/" rel="noopener noreferrer"&gt;React Javascript library&lt;/a&gt;, &lt;a href="https://tailwindcss.com/" rel="noopener noreferrer"&gt;Tailwind CSS&lt;/a&gt; and using &lt;a href="https://aws.amazon.com/amplify/" rel="noopener noreferrer"&gt;AWS Amplify&lt;/a&gt; to host the web app. I know it could have been built with so many other choices. Though, there is a lot of support available to the choices and I'm already familiar with these libraries. This enables us to move faster and prototype something useful within the timeframe available.&lt;/p&gt;

&lt;h2&gt;
  
  
  LET'S GO! BUILD!
&lt;/h2&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Blank Canvas...&lt;/strong&gt;
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;ol&gt;
&lt;li&gt;&lt;p&gt;We need a way for a user to input their information and bring back data of their Matrix Avatar&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;We need a way for the user to select an opponent&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The system will need to do a calculation to battle each other&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Display who is the Winner / Loser&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;

&lt;p&gt;Uhh, I had forgotten how to build in React (it's good to be open and honest 🙃, so we can move forward faster), so I did 32 Video Tutorials on React! Yes, insane, though it was a really good refresher and I learnt a lot on best practices and got me back into the swing. You can view the Playlist &lt;a href="https://www.youtube.com/playlist?list=PL4cUxeGkcC9gZD-Tvwfod2gaISzfRiP9d" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Once the refresher was done, I loaded up a blank create react app and got on with figuring out how to get the Data. Then I read up on the differences between Fetch API and Axios. I found &lt;a href="https://www.freecodecamp.org/news/how-to-use-axios-with-react/#what-is-axios" rel="noopener noreferrer"&gt;this guide&lt;/a&gt; helpful on the benefits and opted for Axios. Synced up the Axios with the Nifty's API and made my first call to get data on a Matrix avatar. That was an amazing feeling when you see the Data come through... kinda indistinguishable from &lt;em&gt;Magic&lt;/em&gt;... I then looked at displaying this information within the app. Also, at a glance I and other users needed to understand the data without having to delve too much into the numbers. A good reference point is EA Sports Fifa games. They plot the data as a visual chart. I did this with &lt;a href="https://recharts.org/en-US/" rel="noopener noreferrer"&gt;ReCharts&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  First Prototype
&lt;/h2&gt;

&lt;p&gt;This is one of the First Prototypes that went live and was shared with users 🥳&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1664278847257%2FNwUOSAHEJ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1664278847257%2FNwUOSAHEJ.png" alt="Screenshot_2022-08-12_at_18.25.22.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Feedback from &lt;a href="https://twitter.com/_munkiboy_" rel="noopener noreferrer"&gt;Munkiboy&lt;/a&gt; " &lt;em&gt;can we actually apply our avatars to this at the moment or is it just a demo page, I got Monterey's Dojo when visiting&lt;/em&gt; "&lt;/p&gt;

&lt;p&gt;Even as a demo page, more was needed and &lt;strong&gt;&lt;em&gt;FAST&lt;/em&gt;&lt;/strong&gt; 😁. So, I set out to allow the user to input data within the application.&lt;/p&gt;

&lt;h2&gt;
  
  
  User Input
&lt;/h2&gt;

&lt;p&gt;Don't worry about the aesthetics at this stage (yes I know the input boxes look bad), this was the first iteration and it worked.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1664279310526%2FK4sLXfc8N.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1664279310526%2FK4sLXfc8N.png" alt="Screenshot_2022-08-15_at_13.58.45.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A user could input their information and bring back data of their Matrix Avatar. This is a &lt;strong&gt;great win&lt;/strong&gt; and &lt;strong&gt;gave momentum&lt;/strong&gt; to tackling the second point of selecting an opponent. I was able to do this and allow the user to see combination analysis by overlapping the data. &lt;em&gt;Really cool&lt;/em&gt; 😎 and added a level of interaction as you can tap and click on different attributes (revealing the amount i.e. 13 Strength).&lt;/p&gt;

&lt;h2&gt;
  
  
  Skeleton is Ready
&lt;/h2&gt;

&lt;p&gt;Replicate input boxes for both Players. Adding in Combination Analysis to showcase the differences too.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1664279453454%2FyZ9vD9wT4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1664279453454%2FyZ9vD9wT4.png" alt="Screenshot_2022-08-15_at_14.08.34.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We've accomplished building the first part of the logic, to pull data for Player 1 &amp;amp; 2 through user input. We now need to move onto the logic of building the battle calculations for the fight.&lt;/p&gt;

&lt;h2&gt;
  
  
  Battle Calculations
&lt;/h2&gt;

&lt;p&gt;Many users felt "tired" of simple click gamification (user feedback) or grinding for XP (points). I needed a different type of dynamic to provide a deeper level of chance and element of fun. Therefore, different types of testing took place.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1664291426070%2FW7sRCtC5B.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1664291426070%2FW7sRCtC5B.png" alt="Screenshot 2022-09-27 at 11.06.20.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The feedback was that this calculation was &lt;strong&gt;too simplistic&lt;/strong&gt; and didn't give an &lt;strong&gt;element of chance&lt;/strong&gt;. We then looked at variations:&lt;/p&gt;

&lt;h2&gt;
  
  
  Testing Ideas
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1664307172024%2F-X0xD46gB.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1664307172024%2F-X0xD46gB.png" alt="Screenshot 2022-09-27 at 20.32.38.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  D21 🎲 Integration and Updated Design
&lt;/h2&gt;

&lt;p&gt;We agreed to go forward with a Dice Roll 🎲 of 21 (D21) and used Tailwind💨 to improve the user design. Definitely adds more appeal to MFC with the updated design.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1664293148368%2FgSzy1i03i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1664293148368%2FgSzy1i03i.png" alt="Screenshot_2022-08-25_at_20.08.07.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Mobile and User Guidance
&lt;/h2&gt;

&lt;p&gt;A special emphasis was to make sure it worked well on Mobile, as a significant amount of users sent screenshots via mobile whilst using MFC.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1664546365831%2FaQ864M9Dr.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1664546365831%2FaQ864M9Dr.jpg" alt="Mobile.jpg"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I added information and guidance for users to understand the flow of information for each section, as some users felt confused on what to do (on each part). Later on (as per &lt;strong&gt;Dr Cleopatra&lt;/strong&gt; request), we had to update the guidance to bullet points. Though this is a good way of seeing the development / iteration, some users found it difficult following along with paragraphs of text.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1664293180503%2FCIjz8NccR.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1664293180503%2FCIjz8NccR.png" alt="Screenshot_2022-09-11_at_21.16.07.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We've seen lots of development! 🤯 Underneath this process I used AWS Amplify to enable these iterations at speed. Let's look at this infrastructure closer 🧐&lt;/p&gt;

&lt;h2&gt;
  
  
  AWS Amplify Enabled Speed of Development
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://aws.amazon.com/amplify/" rel="noopener noreferrer"&gt;AWS Amplify&lt;/a&gt; helped me to speed up the development process. It has many built in features that expedited and reduced the hassle to look externally. These included registering a domain and setting it up from within AWS Amplify application, domain management and hosting the web app. Creating a testing site for new ideas and previews before going live was the next step. I then enabled password protection to allow certain users access, to test and provide feedback.&lt;/p&gt;

&lt;h3&gt;
  
  
  Custom Domain Name with SSL Certification
&lt;/h3&gt;

&lt;p&gt;This integration was silky smooth via AWS Amplify Domain Management. I went via &lt;a href="https://aws.amazon.com/route53/" rel="noopener noreferrer"&gt;Route 53&lt;/a&gt; and checked for domain name availability. Then picked the one I liked and paid. You can also attach domains not registered with Route 53. Then simply attach it in Amplify, under domain management. It sets up the Free SSL certificate and you've moved from idea / prototype to live production (&lt;em&gt;INCREDIBLE!&lt;/em&gt;) in a few clicks.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1664311558064%2Faq-Xh0OKM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1664311558064%2Faq-Xh0OKM.png" alt="Screenshot 2022-09-27 at 20.35.50.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Test Version of MFC + Password Protected
&lt;/h3&gt;

&lt;p&gt;Throughout building this application, I needed to test ideas in private (small user group) whilst maintaining a live working version. Amplify enabled this by having a test version (branch) feature. A couple of clicks and you too can set it up.&lt;/p&gt;

&lt;p&gt;Feel free to check out the feature branch, I've left the web address, username and password below. Please drop any feedback in the comments below too. Or reach out to me directly on &lt;a href="https://twitter.com/markramrattan" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I'll be testing new features of The Matrix Fight club here:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://feature.d1zshvo1xzu1rw.amplifyapp.com/" rel="noopener noreferrer"&gt;https://feature.d1zshvo1xzu1rw.amplifyapp.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It's password protected,&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;username:&lt;/strong&gt; neo&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;password:&lt;/strong&gt; whiterabbit&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I am also testing !&lt;/strong&gt; some 3D tilting of Matrix avatars. &lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1664362806185%2FKAp5ZYZ_B.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1664362806185%2FKAp5ZYZ_B.png" alt="3d.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We also tried to incorporate 3D Dice 🎲, where a user can spin it. Though we had issues with browser compatibility. Again, this shows some of the powerful features available to us with AWS Amplify. I'd highly recommend using them in your project.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1664363151878%2FZ7ESwACZ9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1664363151878%2FZ7ESwACZ9.png" alt="Screenshot_2022-08-28_at_19.01.26.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;We did it! 🙌 And we hit some stretch goals 🎯 with added features. I hope you took it for a test drive, if not, here is the link again: &lt;a href="https://www.matrixfightclub.com" rel="noopener noreferrer"&gt;https://www.matrixfightclub.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We set out to &lt;strong&gt;&lt;em&gt;Allow the User to Fight against another User with their Matrix NFT Avatar.&lt;/em&gt;&lt;/strong&gt; This was achieved! 🥳 We also created a responsive design for mobile users. This worked well for the targeted users.&lt;/p&gt;

&lt;h2&gt;
  
  
  Mobile Optimisation
&lt;/h2&gt;

&lt;p&gt;Many users access MFC via mobile. Spending time and energy ensuring it displays well at different break points helped create a greater adoption. Emphasis on building for Mobile is extremely important. Tailwind provided a great way to tailor the design for mobile.&lt;/p&gt;

&lt;h2&gt;
  
  
  High Resolution Matrix Avatars
&lt;/h2&gt;

&lt;p&gt;I always wanted to easily access and view a High resolution version of users' matrix avatar. You can't do that directly via the Nifty's platform. Though you can do this via MFC. If you click the Camera 📸 icon you get a full HD version displayed in &lt;strong&gt;BIG&lt;/strong&gt; format. Love looking at the details in that format. I would definitely recommend checking that out.&lt;/p&gt;

&lt;h2&gt;
  
  
  Battle Calculations
&lt;/h2&gt;

&lt;p&gt;Battle calculation, added a great element of chance. No longer do the avatars with the highest stats win. With stronger odds, now a weaker avatar could end up winning. Though a stronger stats avatar does increase probability of winning 😉 The use of SmartCrop with A.I. to bring focus on a matrix avatar head gave the battle calculations deeper visualisation.&lt;/p&gt;

&lt;p&gt;Even though feedback of click gamification isnt desirable, having the Sprint goal helps prioritise what needs to be achieved by the end of this hackathon. What's done so far hasn't fixed that problem. We need to drastically improve the game dynamics to create a more engaging experience. Though this is a great start 😃. &lt;strong&gt;From Zero to something tangible in Production within One Month.&lt;/strong&gt; 🚀&lt;/p&gt;

&lt;h2&gt;
  
  
  ADHD Users
&lt;/h2&gt;

&lt;p&gt;Found it extremely difficult reading long text of paragraphs. Switching it to bullet points made it more easily readable and understood by more users. Made me also reflect on the length of this blog and how it's currently written. More than one learning in this area 🤓.&lt;/p&gt;

&lt;h2&gt;
  
  
  Future Plans
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;OAuth 2.0.&lt;/strong&gt; - We will try to check user wallet using OAuth 2.0 and allow only the owner to fight with their Matrix Avatars (using Authentication - AWS Cognito). &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;League Tables and Tournaments&lt;/strong&gt; - by storing Data (using AWS Dynamo DB) will help retention. Enabling recurring visits and continuous engagement. This is the life blood of any product or service. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Translation into other languages&lt;/strong&gt; - The Matrix Avatars NFT program has a wide scope of nationalities and English isn't the main language for many. Ranging from Spanish, German and French.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Notifications to Users&lt;/strong&gt; that are fighting each other. Or sending notification to a user, that you would like to challenge them or invite them into a tournament or league table.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Dark Mode&lt;/strong&gt; - I would have loved to make a version, though ran out of time and other aspects had a higher priority. Maybe even add in some Dynamic Matrix Rain 😉&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Animations and interactions&lt;/strong&gt; - to make it more interactive (sliders). This is a key area of development going forward. Would be great to align this with storylines too. Creating a more immersive experience. &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Special Shout Out&lt;/strong&gt; - to the amazing members on the &lt;a href="https://discord.com/invite/niftys" rel="noopener noreferrer"&gt;Nifty's Discord&lt;/a&gt;. Feedback from Marquise, Wolfs-Faun, Munki, Cheef, Tupper, Kamron and OpticDojo is greatly appreciated. No doubt the list is longer of people who helped (each feedback helped!), thank you. Feel free to share more feedback or if you'd like to help build the next iteration with me, get in contact.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;I'm Out...&lt;/em&gt;&lt;/strong&gt; 😎&lt;/p&gt;

&lt;p&gt;Editor: Dr Cleopatra&lt;/p&gt;

</description>
      <category>amplify</category>
      <category>javascript</category>
      <category>begineers</category>
    </item>
    <item>
      <title>A beginners guide to AWS Amplify Studio</title>
      <dc:creator>Mark Ramrattan </dc:creator>
      <pubDate>Sat, 01 Jan 2022 16:46:08 +0000</pubDate>
      <link>https://forem.com/aws-builders/a-beginners-guide-to-aws-amplify-studio-391</link>
      <guid>https://forem.com/aws-builders/a-beginners-guide-to-aws-amplify-studio-391</guid>
      <description>&lt;p&gt;Are you trying to learn more about AWS Amplify Studio? If your answer is Yes, then this guide may help you get a better understanding. Hopefully it will also help you keep track of related information around this new release. There are a few different videos, blogs, tweets popping up on Amplify Studio. I needed something to connect them all together (maybe you do too). We all know how fast it changes in this space and a guide can help keep this information in one place and relevant. As I find new resources / links, I'll be updating this same guide to keep it up to date :) If you have recommended resources, please do share them and I'll add them to this guide. Probably a good time to drop that famous &lt;em&gt;African&lt;/em&gt; proverb:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;If you want to go fast, go alone, but if you want to go far, go together&lt;/strong&gt; &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I'll be explaining and listing essential resources on Amplify Studio. We will also be taking AWS Amplify Studio for a test drive! Hopefully you will find value in this guide / blog. Even if it's just understanding concepts, please do follow along (at your own pace) and test it out with me. If you're not aware of this new update… let's explain below (feel free to skip this if you've already gone through it):&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is AWS Amplify Studio?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/KJSD6LFErgE"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;AWS Amplify Studio is a &lt;strong&gt;visual development environment&lt;/strong&gt; for building full-stack web and mobile apps. &lt;em&gt;Studio&lt;/em&gt; builds on existing backend building capabilities in AWS Amplify, allowing you to accelerate your UI development. With Studio, you can quickly build an entire web app, front-to-back, with minimal coding, while still maintaining full control over your app design and behaviour through code.&lt;/p&gt;

&lt;p&gt;I like to think of amplify as &lt;em&gt;&lt;strong&gt;a great way for you to go from idea to production ready app, fast&lt;/strong&gt;&lt;/em&gt;. I also think this shift to Amplify Studio will help bring ideas to life for non developers too. Have you got a startup idea? I would recommend trying this out! Let's have a look at what resources are available to you: &lt;/p&gt;




&lt;h3&gt;
  
  
  Documentation Resources
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;About Amplify Studio&lt;/em&gt;: &lt;a href="https://aws.amazon.com/amplify/studio/" rel="noopener noreferrer"&gt;https://aws.amazon.com/amplify/studio/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;General information on Amplify Studio. Great for quickly understanding what it can be used for.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Amplify Studio Docs&lt;/em&gt;: &lt;a href="https://docs.amplify.aws/console/" rel="noopener noreferrer"&gt;https://docs.amplify.aws/console/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This website is where most of the magic happens. It explains how to setup your Amplify (Studio) environment. Key concepts are explained, helping you to turn your idea into UI design, database modelling and binding your UI to data. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Amplify UI Docs&lt;/em&gt;: &lt;a href="https://ui.docs.amplify.aws" rel="noopener noreferrer"&gt;https://ui.docs.amplify.aws&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Great website for you to learn how you can use prebuilt UI design layouts and components within your app. This is a new feature and definitely worth checking out for inspiration!   &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Understanding CSS&lt;/em&gt;: &lt;a href="https://developer.mozilla.org/en-US/docs/Web/CSS/flex-direction/" rel="noopener noreferrer"&gt;Flex Help&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There are lots of properties now with UI / CSS aspects in the development and design of components and layouts. This website will help you fill in the gaps of what can be changed regarding design.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;What's New&lt;/em&gt;: &lt;a href="https://aws.amazon.com/about-aws/whats-new/2021/12/aws-amplify-studio/" rel="noopener noreferrer"&gt;AWS News Post on AWS Amplify Studio&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;General overview / announcement explaining region availability of Amplify Studio.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Amplify Studio features written by &lt;a class="mentioned-user" href="https://dev.to/aspittel"&gt;@aspittel&lt;/a&gt; and &lt;a class="mentioned-user" href="https://dev.to/theswaminator"&gt;@theswaminator&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;div class="ltag__link"&gt;
  &lt;a href="/aws" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__org__pic"&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-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F1726%2Fe01690b9-c8bd-4eb9-bbe2-a4db25a702a9.png" alt="AWS"&gt;
      &lt;div class="ltag__link__user__pic"&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-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F38627%2F77a2a5e7-603e-41b4-afcc-f7aff468ae2f.jpg" alt=""&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/aws/8-new-features-of-amplify-studio-14gf" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;8 New Features of Amplify Studio&lt;/h2&gt;
      &lt;h3&gt;Ali Spittel for AWS ・ Dec 6 '21&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#javascript&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#webdev&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#aws&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#react&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


&lt;p&gt;Great overview of eight new functionalities and features for Amplify Studio. &lt;/p&gt;




&lt;h3&gt;
  
  
  Tutorial Resources
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Launch Blog Tutorial&lt;/em&gt;: &lt;a href="https://aws.amazon.com/blogs/mobile/aws-amplify-studio-figma-to-fullstack-react-app-with-minimal-programming/" rel="noopener noreferrer"&gt;AWS Amplify Studio using Figma&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;René taking you through a tutorial from start to finish. Even if this is not aligned with your idea, doing this tutorial will help you gain practical understanding of key concepts.   &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;AWS Amplify Studio&lt;/em&gt;: &lt;a href="https://docs.amplify.aws/console/tutorial/buildui/" rel="noopener noreferrer"&gt;Official Getting Started Tutorial &lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You should do this official tutorial! It’s really good and probably the best place to start if you don’t really want to read anything and just build, which is completely cool to do. We all learn and build differently.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Build a Vacation Rental Site with Amplify Studio&lt;/em&gt;
&lt;div class="ltag__link"&gt;
  &lt;a href="/aws" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__org__pic"&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-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F1726%2Fe01690b9-c8bd-4eb9-bbe2-a4db25a702a9.png" alt="AWS"&gt;
      &lt;div class="ltag__link__user__pic"&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-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F38627%2F77a2a5e7-603e-41b4-afcc-f7aff468ae2f.jpg" alt=""&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/aws/build-a-vacation-rental-site-with-amplify-studio-1n10" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Build a Vacation Rental Site with Amplify Studio&lt;/h2&gt;
      &lt;h3&gt;Ali Spittel for AWS ・ Dec 14 '21&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#react&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#javascript&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#aws&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Great tutorial that helps with all those nuances that don't get explained. Lots of extra links on the different steps to help plug those gaps.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Matt's Amplify Studio Twitter Tutorial thread&lt;/em&gt;: &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1467374905033437185-864" src="https://platform.twitter.com/embed/Tweet.html?id=1467374905033437185"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1467374905033437185-864');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1467374905033437185&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;Great for understanding the steps quickly. Definitely recommended if you want to learn via Twitter. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Anna's blog on&lt;/em&gt;: &lt;a href="https://aws.amazon.com/blogs/mobile/build-newsfeed-with-aws-amplify-studio/" rel="noopener noreferrer"&gt;Building a Newsfeed with AWS Amplify Studio&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Great to see a different use case tutorial! Brings in a deeper integration of how to do different layouts and social components (profile pictures, comments) integration. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F58wg3wnnhd7nbpfmpkq2.gif" class="article-body-image-wrapper"&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-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F58wg3wnnhd7nbpfmpkq2.gif" alt="Newsfeed AWS Amplify Studio Figma"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;A Cloud Guru Tutorial&lt;/em&gt;: &lt;a href="https://acloudguru.com/blog/engineering/how-to-create-a-full-stack-app-with-aws-amplify-studio/" rel="noopener noreferrer"&gt;Create a Blog App with Studio&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ali showing us a different use case and includes building the app from a sandbox environment.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Clojurescript Tutorial&lt;/em&gt;: &lt;a href="https://dev.to/aws-builders/how-to-use-amplify-studio-figma-connector-with-clojurescript-382d"&gt;How to Use Amplify Studio Figma Connector with Clojurescript&lt;/a&gt; by &lt;a class="mentioned-user" href="https://dev.to/rberger"&gt;@rberger&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Instead of being Javascript based, the blog shows how you can use Clojurescript for the project implementation. It does incorporate the Javascript output of Amplify Studio but all code to use it is in Clojurescript. Great work! &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;(&lt;a href="https://twitter.com/ASpittel" rel="noopener noreferrer"&gt;Ali Spittel&lt;/a&gt;) Figma to React to the Cloud: Build a Fullstack App with AWS Amplify Studio: &lt;iframe width="710" height="399" src="https://www.youtube.com/embed/x8g9ti7PT8s"&gt;
&lt;/iframe&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Using AWS Amplify Studio to generate React code from Figma components which are fully cloud-connected. Ali builds a blog app in this tutorial!&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Figma Design Integration&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;One of the new features allows you or graphic designers to develop your app design in Figma and integrate within Amplify Studio. Let's take a look at this integration. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://figma.com" rel="noopener noreferrer"&gt;Figma&lt;/a&gt; is a free, online UI tool to create, collaborate, prototype, and handoff your application design. Amplify Studio offers an integration with Figma, allowing you to generate reusable React code by importing your Figma design file. Amplify Studio automatically converts any Figma component in your Figma file to a React component that can then be used in your app. Whenever you make a change to the component in Figma you sync the changes to Amplify Studio and update your application!&lt;/p&gt;

&lt;p&gt;There are 4 introduction videos &lt;a href="https://help.figma.com/hc/en-us/sections/4405269443991-Figma-for-Beginners-tutorial" rel="noopener noreferrer"&gt;here&lt;/a&gt; on how to use Figma. If you're like me, this is all new. I'm used to graphic designers working in adobe photoshop, illustrator etc and sending it to front-end developers (me) and then I would translate that into production. Using Figma is a new way for me to improve the design -&amp;gt; development process.   &lt;/p&gt;




&lt;h2&gt;
  
  
  Let's GO! &amp;amp; Build a Solution (MVP)
&lt;/h2&gt;

&lt;p&gt;The above is a lot of information to digest. We are not stopping there... (stick with me!) and yes we could probably split this into a series, though we have all these resources and we've got nothing tangible... We need to build something with all this knowledge! &lt;/p&gt;

&lt;p&gt;I was in the Amplify Extensibility sessions and a few people commented "&lt;em&gt;Is there anywhere on the web with all the amplify videos in one place?&lt;/em&gt;" I replied, "&lt;em&gt;I've not seen one and could easily create a youtube playlist to encapsulate them all.&lt;/em&gt;" Let's create a place (solution) to view all Amplify Studio videos.    &lt;/p&gt;

&lt;p&gt;Yep, we are going to build an app to hold all of our Amplify Studios videos. Yes, that sounds like Inception, building something for Amplify with Amplify. We need this solution, to give other users CRUD access to update / manage the content (Amplify Studio enables this functionality). That's enough talking, let's GO!  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Load up an App in Amplify Studio&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Lots of different ways to do this, I've gone via &lt;a href="https://signin.aws.amazon.com/console" rel="noopener noreferrer"&gt;AWS Management Console&lt;/a&gt;, then locate AWS Amplify and select &lt;strong&gt;New app -&amp;gt; Build an App&lt;/strong&gt;. You should see the below screen, I've called my app '&lt;em&gt;Amplify Studio Learning&lt;/em&gt;'. Select &lt;strong&gt;Confirm Deployment&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff9y74ktm8ev7c747og09.png" class="article-body-image-wrapper"&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-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff9y74ktm8ev7c747og09.png" alt="AWS Amplify Studio"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Launch Amplify Studio&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Once it loads, you'll see '&lt;strong&gt;Launch Studio&lt;/strong&gt;' button in the backend tab. Click that button, though check if your pop up is blocking it from opening (always happens to me, in chrome!).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4fi5im62xuffpg62023b.png" class="article-body-image-wrapper"&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-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4fi5im62xuffpg62023b.png" alt="Amplify Studio"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you've been using Amplify recently, you'll notice, Amplify Studio looks exactly like Amplify Admin UI and you would be correct ;) What's better than a new service, a service that's been refined and improved over time. I digress, let's get back on it! &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3: Data modelling &amp;amp; Adding Data&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Select the &lt;strong&gt;Data&lt;/strong&gt; tab on the left, we are going to do some data modelling. Mine looks like this: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffs2ae0z2uiz6nqlndfsz.png" class="article-body-image-wrapper"&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-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffs2ae0z2uiz6nqlndfsz.png" alt="Amplify Studio Data tab"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you've gone through the other tutorials, this will be familiar to you. I've added fields for &lt;em&gt;video&lt;/em&gt; url, &lt;em&gt;name&lt;/em&gt; and &lt;em&gt;type&lt;/em&gt;. Once you're happy with your data structure, click "&lt;strong&gt;Save and Deploy&lt;/strong&gt;". This is where Amplify builds it all out for you in the background. Once done, head over to the content tab. Mine looks like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6rou13xs5g8as9jyqoq1.png" class="article-body-image-wrapper"&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-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6rou13xs5g8as9jyqoq1.png" alt="Amplify Studio Content tab"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Yes we can add auto generated data, though you're on route to production / being a pro, put in some real data. I've inputed some Amplify Studio videos that are essential viewing. Once done, it's time to introduce Figma (Design). Click the &lt;strong&gt;Home menu&lt;/strong&gt; and select the '&lt;strong&gt;Build UI&lt;/strong&gt;' button. Or click the &lt;strong&gt;UI Library&lt;/strong&gt; tab and select &lt;strong&gt;Get Started&lt;/strong&gt; button. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4: Open up Figma&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Clicking the &lt;strong&gt;Get Started&lt;/strong&gt; button will open up the link to: &lt;a href="https://www.figma.com/community/file/1047600760128127424" rel="noopener noreferrer"&gt;Figma - Amplify Studio Template&lt;/a&gt;. Click &lt;strong&gt;duplicate&lt;/strong&gt; and select &lt;strong&gt;My Components&lt;/strong&gt;. You'll see the available components. I've customised &lt;em&gt;CardE&lt;/em&gt;. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fimrxliwanx35d88n4geh.png" class="article-body-image-wrapper"&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-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fimrxliwanx35d88n4geh.png" alt="Amplify Studio"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Feel free to adjust your component the way you would like it. Once you're happy with the design. Click the &lt;strong&gt;Share&lt;/strong&gt; button in the top right and copy the link. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqsi9gf8voj8uyhtpn0xg.png" class="article-body-image-wrapper"&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-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqsi9gf8voj8uyhtpn0xg.png" alt="Figma Share Link"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 5: Sync Amplify Studio with Figma&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Once you've got your link, you need to switch back over to Amplify and paste the link in the &lt;strong&gt;UI Library&lt;/strong&gt; (tab) area and click &lt;strong&gt;Continue&lt;/strong&gt;. This will prompt you to sign in with Figma, allow access and sync the files. I normally accept all, it's quicker. Then all your components will be available for you.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa9s7nlqndasxqx0ggaag.png" class="article-body-image-wrapper"&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-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa9s7nlqndasxqx0ggaag.png" alt="Figma Sync"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once that is done, you will see all the components loaded from Figma in your Amplify &lt;strong&gt;UI Library&lt;/strong&gt; tab. Here is what mine looks like:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmf5g2qpjbil9ffasbqoq.png" class="article-body-image-wrapper"&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-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmf5g2qpjbil9ffasbqoq.png" alt="UI Library Sync Figma Components"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 6: Configure &amp;amp; Bind Data to Components&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Awesome, it's looking good. Notice I've highlighted the &lt;strong&gt;Configure&lt;/strong&gt; button in the above image. We now need to turn our design into a collection and bind the data to our design. Click &lt;strong&gt;Configure&lt;/strong&gt; and you'll now be able to do this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd8evqsgkgfdqn0ygxpmi.png" class="article-body-image-wrapper"&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-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd8evqsgkgfdqn0ygxpmi.png" alt="Bind Data"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Groovy!&lt;/strong&gt;&lt;/em&gt; Add in your model name in the &lt;em&gt;Type&lt;/em&gt;. Select the top level Component (&lt;em&gt;CardE&lt;/em&gt;) and input that in and give it a name (mine's '&lt;strong&gt;Info&lt;/strong&gt;'). Go through your other elements and connect them up. The property on text is '&lt;strong&gt;label&lt;/strong&gt;' and the value would be '&lt;strong&gt;Info.name&lt;/strong&gt;'. This will be different for you, depending on what you've named your data model and component name. Once you're done connecting it up, click &lt;strong&gt;Create Collection&lt;/strong&gt; and give it a name (mine's '&lt;em&gt;CardECollection&lt;/em&gt;'). &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fomp80mx8cyed0lpuq62a.png" class="article-body-image-wrapper"&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-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fomp80mx8cyed0lpuq62a.png" alt="Collection Editing"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 7: Adjust Layout and Get Component Code&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here you can adjust the layout, spacing and order for your collection. On the left, I've selected '&lt;em&gt;Grid&lt;/em&gt;' and added 10px around each card. On the right you can adjust the order. I've added a sort filter via &lt;strong&gt;Name&lt;/strong&gt; to be ascending, which will keep the content displayed in a logical order. Feel free to do the same or make it your own. &lt;strong&gt;&lt;em&gt;Coolio&lt;/em&gt;&lt;/strong&gt; 😎, that's done! We now need to import this into our app locally to test it out. Click '&lt;strong&gt;&amp;lt;/&amp;gt; Get component code&lt;/strong&gt;' This brings up a handy prompt of what we need to pull locally into our amplify app. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqm7yh9esza236m2okity.png" class="article-body-image-wrapper"&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-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqm7yh9esza236m2okity.png" alt="Initial Project Setup"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 8: Create App Locally &amp;amp; Sync with Amplify Studio&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Create your React app locally. You can do this with running the following command in Terminal: &lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;

&lt;span class="nx"&gt;npx&lt;/span&gt; &lt;span class="nx"&gt;create&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;react&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;app&lt;/span&gt; &lt;span class="nx"&gt;amplify&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;demo&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;Move into the React app that you've just created: &lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;

&lt;span class="nx"&gt;cd&lt;/span&gt; &lt;span class="nx"&gt;amplify&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;demo&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;Remember that section with the 'initial project setup' guide. Run those commands: &lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;

&lt;span class="nx"&gt;npm&lt;/span&gt; &lt;span class="nx"&gt;install&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;g&lt;/span&gt; &lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;aws&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;amplify&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;cli&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;

&lt;span class="nx"&gt;npm&lt;/span&gt; &lt;span class="nx"&gt;install&lt;/span&gt; &lt;span class="nx"&gt;aws&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;amplify&lt;/span&gt; &lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;aws&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;amplify&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;ui&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;react&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;Once done, you'll need to switch to the other tab instruction and pull the Amplify Studio code into your project. Mine looks like this: &lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;

&lt;span class="nx"&gt;amplify&lt;/span&gt; &lt;span class="nx"&gt;pull&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;appId&lt;/span&gt; &lt;span class="nx"&gt;d22vmom8abyhk2&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;envName&lt;/span&gt; &lt;span class="nx"&gt;staging&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;In your &lt;em&gt;App.js&lt;/em&gt; file add:&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;

&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;CardECollection&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./ui-components&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;Place your collection where you would like it to be displayed: &lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;

&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;CardECollection&lt;/span&gt; &lt;span class="o"&gt;/&amp;gt;&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;My &lt;em&gt;App.js&lt;/em&gt; looks like this: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F85sw50grqe2eq926ikno.png" class="article-body-image-wrapper"&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-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F85sw50grqe2eq926ikno.png" alt="App javascript"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 9: Override &amp;amp; Extend Generated Code - React Player&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I know what you're thinking, wait a minute what happened to &lt;em&gt;CardECollection&lt;/em&gt; in your code? Don't worry it's there, I've renamed it and it's called '&lt;em&gt;PlayerCollection&lt;/em&gt;.' Why have I done this? Remember at the start we are trying to allow users (you and me) the ability to watch videos. There is no video component integrated (yet). When you use a default component, any changes will be overwritten when you re-sync with Figma. Take a look at this &lt;a href="https://docs.amplify.aws/console/uibuilder/override/#modify-generated-code" rel="noopener noreferrer"&gt;Modify Generated Code Override&lt;/a&gt;. This explains how to do this change and also everything we've gone through so far is within that documentation. Take the time to explore the docs too.&lt;/p&gt;

&lt;p&gt;I used and installed this (&lt;a href="https://github.com/CookPete/react-player" rel="noopener noreferrer"&gt;React Player&lt;/a&gt;): &lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;

&lt;span class="nx"&gt;npm&lt;/span&gt; &lt;span class="nx"&gt;install&lt;/span&gt; &lt;span class="nx"&gt;react&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;player&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;Then within your &lt;em&gt;CardE&lt;/em&gt; component import the React player. Change the url to your corresponding path in your data model. Mine would be: &lt;code&gt;url={Info?.video}&lt;/code&gt;&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;

&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;ReactPlayer&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;react-player&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;

&lt;span class="c1"&gt;// Render a Video Player&lt;/span&gt;
&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;ReactPlayer&lt;/span&gt; &lt;span class="nx"&gt;url&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;https://www.youtube.com/watch?v=ysz5S6PUM-U&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="o"&gt;/&amp;gt;&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;Remember that grey box in my &lt;em&gt;CardE&lt;/em&gt; design on Figma. I've made the React Player to be the same size and it fits nicely within that area. Here's what my &lt;em&gt;Player&lt;/em&gt; / &lt;em&gt;CardE&lt;/em&gt; component looks like: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm3megtb8vg8wul3gx0rh.png" class="article-body-image-wrapper"&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-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm3megtb8vg8wul3gx0rh.png" alt="Figma Component"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now that's added, we should load up the React server and check what this looks like... &lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;

&lt;span class="nx"&gt;npm&lt;/span&gt; &lt;span class="nx"&gt;start&lt;/span&gt; 


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;Mine looks like this: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fibwtxh09jfvkogcr7z2t.png" class="article-body-image-wrapper"&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-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fibwtxh09jfvkogcr7z2t.png" alt="Amplify Videos"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Take a moment to reflect... &lt;em&gt;if you've followed along&lt;/em&gt;. You've just turned an idea into a real, working product. &lt;strong&gt;AMAZING! Well Done!&lt;/strong&gt; You've not only created an MVP, you are the MVP! All we do now is wait for Venture Capitalists to invest ;) or integrate your own payment model and bootstrap your startup. If you feel like helping to add more videos to our Amplify Videos app, feel free to connect with me. I'll add you to Amplify Studio content management section. You can add more videos and help the community learn more about Amplify.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Summary&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I really like the direction AWS Amplify (Studio) is going. If you've got a startup idea or need to develop a solution to a problem, with an AWS service, Amplify Studio is a good option. Yes, the learning curve does take time (each person is different). I would encourage you to stick with it, the rewards are exponential when you understand how it all connects. Yes, it isn't a no-code solution and it does take time to up-skill. We've seen a deeper design integration which will exponentially help us reduce the time it take to move from idea to production ready app. I hope you found this guide useful. Leave a comment or tweet me &lt;a href="https://twitter.com/markramrattan" rel="noopener noreferrer"&gt;@markramrattan&lt;/a&gt; with any questions or resources you think could be added. You can also join the &lt;a href="https://discord.com/invite/amplify" rel="noopener noreferrer"&gt;Amplify Discord&lt;/a&gt; if you need help... They are superheroes! &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx7sjbkqngfbrkvm70wtx.png" class="article-body-image-wrapper"&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-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx7sjbkqngfbrkvm70wtx.png" alt="Amplify Multiverse"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Clean Up&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To clean up your Amplify project, run:&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;

&lt;span class="nx"&gt;amplify&lt;/span&gt; &lt;span class="k"&gt;delete&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;Or via the Amplify Web Console, go &lt;strong&gt;Actions -&amp;gt; Delete app&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F96e5w2y1ts33tvwz1rjs.png" class="article-body-image-wrapper"&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-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F96e5w2y1ts33tvwz1rjs.png" alt="Amplify Delete App"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Wishing you a healthy and happy new year! I'm looking forward to seeing what you build in 2022.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3qwvf3bm1bqyldwvwtdr.jpg" class="article-body-image-wrapper"&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-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3qwvf3bm1bqyldwvwtdr.jpg" alt="Amplify Superhero"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.figma.com/file/jYj6XQ3oGOUdyNQ4C7UCme/AWS-Amplify-UI-Kit-(Community)?node-id=861%3A3635" rel="noopener noreferrer"&gt;Figma File Link&lt;/a&gt; &lt;a class="mentioned-user" href="https://dev.to/zachjonesnoel"&gt;@zachjonesnoel&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Extra&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you want to take it a step further. Check out my other blog, it shows you how to integrate &lt;strong&gt;Chat&lt;/strong&gt; and &lt;strong&gt;GEO&lt;/strong&gt; within your Amplify App. That would be a cool extra integration:&lt;/p&gt;


&lt;div class="ltag__link"&gt;
  &lt;a href="/aws-builders" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__org__pic"&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-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F2794%2F88da75b6-aadd-4ea1-8083-ae2dfca8be94.png" alt="AWS Community Builders "&gt;
      &lt;div class="ltag__link__user__pic"&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-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F643327%2F56fc49c0-0a78-4d5a-8930-41adc0b314ed.jpeg" alt=""&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/aws-builders/build-a-serverless-real-time-application-with-modern-apis-the-graphql-real-time-race-1b48" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Build a serverless, real-time application with modern APIs: The GraphQL Real-time Race&lt;/h2&gt;
      &lt;h3&gt;Mark Ramrattan  for AWS Community Builders  ・ Jun 29 '21&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#aws&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#amplify&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#graphql&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#appsync&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;



&lt;p&gt;Editor: Dr Shivani Kochhar&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>amplify</category>
      <category>tutorial</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Build a serverless, real-time application with modern APIs: The GraphQL Real-time Race</title>
      <dc:creator>Mark Ramrattan </dc:creator>
      <pubDate>Tue, 29 Jun 2021 15:50:26 +0000</pubDate>
      <link>https://forem.com/aws-builders/build-a-serverless-real-time-application-with-modern-apis-the-graphql-real-time-race-1b48</link>
      <guid>https://forem.com/aws-builders/build-a-serverless-real-time-application-with-modern-apis-the-graphql-real-time-race-1b48</guid>
      <description>&lt;p&gt;I attended this awesome AWS virtual workshop over 5 days from June 21st - 25th, where we spent an hour and half each day going through an episode (5 episodes in total). During this time, I built a fully functioning Formula 1 based application using AWS AppSync, AWS Amplify, Amazon Location Service and many others AWS services. Apart from learning how to build solutions to different use-cases using AWS services, I'm a massive Ferrari Formula 1 fan… Therefore doing this type of workshop is double the fun for me to take on. I am sure you'll learn something in this workshop that can help you with your projects. &lt;/p&gt;

&lt;p&gt;However, like with many virtual workshops it doesn't always go smoothly :) This dev post is to help other developers overcome issues I encountered when completing this workshop. Don't worry if you didn't attend, you can still follow along and complete the workshop with the contents in this post. In the words of F1 commentator Murray Walker,  &lt;em&gt;'And it's GO! GO! GO!'&lt;/em&gt;&lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;This workshop is well suited for developers, Solution Architects, and anybody looking to get started with GraphQl on AWS. The main programing language used is Typescript and Javascript. However, you do not need to have an advance knowledge of coding. All the code is provided for you.&lt;/p&gt;

&lt;p&gt;This workshop should take you about 5 hours to complete.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Virtual Workshop Link: &lt;a href="https://catalog.us-east-1.prod.workshops.aws/workshops/2c56f971-739f-4e7b-9f24-a7b3f803f12f/en-US/lab1/gettingstarted" rel="noopener noreferrer"&gt;Click Here&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;This will take you through the workshop, step by step (including all the code)&lt;/p&gt;

&lt;h4&gt;
  
  
  OLD Workshop Link: &lt;a href="https://amplify-appsync-real-time-race.workshop.aws/en/" rel="noopener noreferrer"&gt;Click Here&lt;/a&gt;
&lt;/h4&gt;

&lt;p&gt;This is meant to be the new workshop link. However the updated version has removed the code snippets needed to complete the workshop. &lt;/p&gt;

&lt;p&gt;Shout out &lt;a class="mentioned-user" href="https://dev.to/dev_007_387ddc3e7f1626418"&gt;@dev_007_387ddc3e7f1626418&lt;/a&gt; for sourcing a working version of the workshop. &lt;/p&gt;




&lt;h3&gt;
  
  
  Video for each episode
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Episode 1: &lt;a href="https://youtu.be/4TmeoTw4xjI" rel="noopener noreferrer"&gt;Build and deploy your serverless app in minutes
&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Episode 2: &lt;a href="https://youtu.be/ahEUDx36gEo" rel="noopener noreferrer"&gt;Get started and dive into API modernization with GraphQL&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Episode 3: &lt;a href="https://youtu.be/Dx3HyyCycsc" rel="noopener noreferrer"&gt;Integrate real-time location services into your app so you can interact with users based on where they are&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Episode 4: &lt;a href="https://youtu.be/BZ0PVKSHDSE" rel="noopener noreferrer"&gt;Integrate chat and push notifications into your app to drive fan engagement via a second screen
&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Episode 5: &lt;a href="https://youtu.be/moJ3dIKYjbA" rel="noopener noreferrer"&gt;Final implementation and architecture of your application with your data
&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  All 5 Episodes in a Playlist
&lt;/h3&gt;

&lt;p&gt;I also created a playlist of all 5 videos, if you want to watch them all, one after the other: &lt;a href="https://youtube.com/playlist?list=PLihp0nPtXXMmBcprUwSCgjHOCH36FXHsl" rel="noopener noreferrer"&gt;Click Here&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Slide Deck for Each Episode &amp;amp; Lab Files
&lt;/h3&gt;

&lt;p&gt;Slide Decks 1 - 5 &amp;amp; Lab File: &lt;a href="https://www.dropbox.com/sh/0df215yzvk587b4/AAB6nZ1tJC8CSn1VGwJ-7Egma?dl=0" rel="noopener noreferrer"&gt;Click Here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Each person who conducted an episode / session had slides to work alongside the workshop. You might find this useful for understanding the concepts of each section. &lt;/p&gt;

&lt;p&gt;Shout out to &lt;a class="mentioned-user" href="https://dev.to/jjmats"&gt;@jjmats&lt;/a&gt;, who noticed the lab files have been removed from the updated workshop. I have a copy and i've uploaded the lab files to the dropbox link above. &lt;/p&gt;




&lt;h3&gt;
  
  
  Episode 1
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Build and deploy your serverless app in minutes&lt;/strong&gt;&lt;br&gt;
Video: &lt;a href="https://youtu.be/4TmeoTw4xjI" rel="noopener noreferrer"&gt;Episode 1 - Walkthrough&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://twitter.com/BricePelle" rel="noopener noreferrer"&gt;Brice Pellé&lt;/a&gt; lead this session. I found it hard keeping pace, as I had many errors and was trying to follow along whilst debugging. Below are my tips so you find a faster pathway. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;Tips:&lt;/em&gt; &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Pick Ohio (us-east-2) as your region. Don't do what I did and pick eu-west-1 / eu-west-2 (I'm in London and wanted a region closer). Amazon Location Service is only available in specific regions and in eu-west-1 I had trouble getting it all working in that region. Worked great in us-east-2…&lt;/p&gt;
&lt;/blockquote&gt;



&lt;blockquote&gt;
&lt;p&gt;Cloud9 is a great IDE service. Strongly encourage you to use that route to do this workshop. Later on in Episode 3 Video tutorial, you'll see errors and warnings. You can turn it off, to avoid seeing them.  Cloud9 -&amp;gt; Preferences -&amp;gt; Language -&amp;gt; Hints and Warnings -&amp;gt; Turn off &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnnthepbm94us8qw40wfk.png" class="article-body-image-wrapper"&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-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnnthepbm94us8qw40wfk.png" alt="Cloud9 - Hints"&gt;&lt;/a&gt;&lt;/p&gt;



&lt;blockquote&gt;
&lt;p&gt;At the start of the session, many of us had a problem with VPC errors when setting up our Cloud9 for the first time. Simple way to solve this is to create the Default VPC. Your VPCs -&amp;gt; Actions -&amp;gt; Create Default VPC &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwj5ar56373wueqia8w5c.png" class="article-body-image-wrapper"&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-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwj5ar56373wueqia8w5c.png" alt="Default VPC"&gt;&lt;/a&gt;&lt;/p&gt;



&lt;blockquote&gt;
&lt;p&gt;57:55 mins into the tutorial video (Lab 1 -&amp;gt; Add Auth), Read &amp;amp; Update is selected on Event. Make sure you select both of them, the workshop guide only instructs you to select just Read. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm5evioor51bydu3bjtac.png" class="article-body-image-wrapper"&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-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm5evioor51bydu3bjtac.png" alt="Tick Read &amp;amp; Update"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  Episode 2
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Get started and dive into API modernization with GraphQL&lt;/strong&gt;&lt;br&gt;
Video: &lt;a href="https://youtu.be/ahEUDx36gEo" rel="noopener noreferrer"&gt;Episode 2 - Walkthrough&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://twitter.com/BricePelle" rel="noopener noreferrer"&gt;Brice Pellé&lt;/a&gt; did this session and it was a good continuation from Day 1. I thought it went well, probably because I attempted this lab before the session started (prep work). Following along was easier. Main tip for this area is to make sure you take breaks when you're tired. Lots of detail in setting up the connection with DynamoDB. A typo can result in having to redo the entire section to find out what went wrong. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxpzdxs77xkc04pn34bpf.png" class="article-body-image-wrapper"&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-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxpzdxs77xkc04pn34bpf.png" alt="DynamoDB Table Setup"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  Episode 3
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Integrate real-time location services into your app so you can interact with users based on where they are&lt;/strong&gt;&lt;br&gt;
Video: &lt;a href="https://youtu.be/Dx3HyyCycsc" rel="noopener noreferrer"&gt;Episode 3 - Walkthrough&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is the section where I found out eu-west-2 didn't have Amazon Location Service available (doh moment, happens to all of us). I deleted everything and started again (in us-east-2). I did manage to adjust the code to get eu-west-1 to work though for the sake of fluidity, I went back to the beginning. Probably my favourite feature from the entire workshop. Absolutely love the geofencing and the tracking of movement. &lt;a href="https://twitter.com/mavi888uy" rel="noopener noreferrer"&gt;Marcia Villalba&lt;/a&gt; covered this session swiftly. Watch out for the right IAM role to update: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1dmrpzzd22eujuijkemx.png" class="article-body-image-wrapper"&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-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1dmrpzzd22eujuijkemx.png" alt="IAM - "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When you see the Map working for the First Time: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgbx1tdmlrh0i6dywwyes.png" class="article-body-image-wrapper"&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-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgbx1tdmlrh0i6dywwyes.png" alt="Tracking Movement"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Check out this quick screen share I made during this episode. The geofencing and tracking through amazon location service enables you to track user movement. Left side is one user and the right is another user logged in (side by side so you can see). You could do many different use cases... (Imagine showing content to users based on which paddock they are in i.e. Ferrari, Mercedes, Red Bull, etc): &lt;/p&gt;

&lt;p&gt;&lt;iframe src="https://player.vimeo.com/video/569775497" width="710" height="399"&gt;
&lt;/iframe&gt;
&lt;/p&gt;




&lt;h2&gt;
  
  
  Episode 4
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Integrate chat and push notifications into your app to drive fan engagement via a second screen&lt;/strong&gt;&lt;br&gt;
Video: &lt;a href="https://youtu.be/BZ0PVKSHDSE" rel="noopener noreferrer"&gt;Episode 4 - Walkthrough&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://twitter.com/deekob" rel="noopener noreferrer"&gt;Derek Bingham&lt;/a&gt;, talks through this section. Take your time going through the details of integrating pinpoint. The initial setup of chat is straightforward though adding images and tagging someone requires careful setup. I got bit carried away in my chat :) Yes I know Ferrari are not winning the title this year, we can dream though…  &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpbi8rtbgqxw9hzdst06u.png" class="article-body-image-wrapper"&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-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpbi8rtbgqxw9hzdst06u.png" alt="Chat"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  Episode 5
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Live real time race with AWS AppSync
&lt;/h3&gt;

&lt;p&gt;Video: &lt;a href="https://youtu.be/moJ3dIKYjbA" rel="noopener noreferrer"&gt;Episode 5 - Walkthrough&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://twitter.com/electricste" rel="noopener noreferrer"&gt;Stefano Sandrini&lt;/a&gt; went through Session 5. You can easily get something wrong in this section. Take your time, and you're better off watching Stefano video rather than just following the written instructions. During the &lt;em&gt;'Ingest real-time data into your app'&lt;/em&gt; section it asks you to open the 'parameters.json' file (There is no parameters.json file). Don't do what I did and think, he probably meant function-parameters.json file. &lt;strong&gt;You need to create a new parameters.json file&lt;/strong&gt; and insert the code into that file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;stepFunctionprocessWorkflowArn&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Fn::GetAtt&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
      &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;stepFunctionprocessWorkflow&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Outputs.Arn&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
    &lt;span class="p"&gt;]&lt;/span&gt;
  &lt;span class="p"&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 final outcome of the workshop is awesome, definitely worth seeing your car sprint around the track:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frzsxqce6nif53ec5qs0y.png" class="article-body-image-wrapper"&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-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frzsxqce6nif53ec5qs0y.png" alt="Live Race"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Summary
&lt;/h3&gt;

&lt;p&gt;Great workshop, thoroughly enjoyed undertaking this one. I definitely know a lot more now than when I started. I'll definitely be adapting this workshop and building this knowledge within my own project. I've gone through this workshop probably 3 times. I will still need to go through it again, understanding how each part of the code interacts. I would recommend you do the same. It's great when it all works at the end, though if you don't understand what's going on in each section (code) you'll have difficulty transferring that over to problems you're trying to solve. Feel free to drop your thoughts in the comments. If you encounter any problems when doing this workshop, feel free to drop them in the comments and you can also find me on Twitter: &lt;a href="https://twitter.com/markramrattan" rel="noopener noreferrer"&gt;@markramrattan&lt;/a&gt; More information and solutions can be found on &lt;a href="https://discord.com/invite/amplify" rel="noopener noreferrer"&gt;AWS Amplify Discord&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;I have a live fully working version running, so if you have any questions or you want to check something out, let me know. I could do a live code session of me doing it all again from scratch, though the AWS team members have done a great job with the video walkthroughs.&lt;/p&gt;




&lt;h3&gt;
  
  
  Clean Up
&lt;/h3&gt;

&lt;p&gt;Many of the services used in this workshop have a free tier. However, make sure to clean up at the end of the workshop to avoid incurring charges.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;To clean up your Amplify project, run:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;amplify&lt;/span&gt; &lt;span class="k"&gt;delete&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;To clean up your Location resources, head to the Location service AWS console:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Maps: Select &lt;strong&gt;GraphQlRealTimeRacing&lt;/strong&gt; and click &lt;strong&gt;Delete Map&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Geofence collections: Select &lt;strong&gt;MonzaCircuit&lt;/strong&gt; and click &lt;strong&gt;Delete geofence collection&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;&lt;p&gt;If you used Cloud9 for this workshop, head to the Cloud9 AWS console, select your environment, and click &lt;strong&gt;Delete&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;

&lt;/ul&gt;

</description>
      <category>aws</category>
      <category>amplify</category>
      <category>graphql</category>
      <category>appsync</category>
    </item>
  </channel>
</rss>
