<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Smaylle Jhonson</title>
    <description>The latest articles on DEV Community by Smaylle Jhonson (@smaylle_oliveira).</description>
    <link>https://dev.to/smaylle_oliveira</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%2F2749004%2Fa8388eb8-8f2d-4c8f-bfc3-3973dbf8319c.jpg</url>
      <title>DEV Community: Smaylle Jhonson</title>
      <link>https://dev.to/smaylle_oliveira</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/smaylle_oliveira"/>
    <language>en</language>
    <item>
      <title>🚀 Building an AWS Flashcards App to Study for the SAA-C03 Exam</title>
      <dc:creator>Smaylle Jhonson</dc:creator>
      <pubDate>Fri, 23 Jan 2026 19:40:31 +0000</pubDate>
      <link>https://dev.to/smaylle_oliveira/building-an-aws-flashcards-app-to-study-for-the-saa-c03-exam-42i2</link>
      <guid>https://dev.to/smaylle_oliveira/building-an-aws-flashcards-app-to-study-for-the-saa-c03-exam-42i2</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;⚠️ &lt;strong&gt;Disclaimer&lt;/strong&gt;: I’m using AI (Gemini) to help guide me through this project and to assist with writing these blog posts. The project is still hands-on — I’m doing all the setup, and AWS work myself — but AI is acting as a mentor and documentation assistant along the way.  &lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Why This Project?
&lt;/h2&gt;

&lt;p&gt;I’m currently preparing for the &lt;strong&gt;AWS Solutions Architect Associate (SAA-C03)&lt;/strong&gt; certification. Instead of only watching videos or reading notes, I wanted a &lt;strong&gt;hands-on project&lt;/strong&gt; that would:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ Help me practice real AWS services in a practical way.
&lt;/li&gt;
&lt;li&gt;✅ Keep me motivated through daily progress.
&lt;/li&gt;
&lt;li&gt;✅ Double as a tool I can use to study for the exam itself.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That’s how I came up with this project: &lt;strong&gt;build a flashcards web app&lt;/strong&gt; for AWS exam prep, hosted entirely on AWS.  &lt;/p&gt;




&lt;h2&gt;
  
  
  The Plan
&lt;/h2&gt;

&lt;p&gt;The idea is simple:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A web app where I can log in, flip through AWS flashcards, and track my study progress.
&lt;/li&gt;
&lt;li&gt;The app itself will run on &lt;strong&gt;AWS services&lt;/strong&gt; I need to know for the exam (S3, CloudFront, DynamoDB, Cognito, API Gateway, Lambda, CloudWatch, etc.).
&lt;/li&gt;
&lt;li&gt;I’ll build it step by step over ~6 weeks, dedicating ~10–15 hours per week.
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🛠️ Returning to the Path: Building Tamriel for my AWS Journey
&lt;/h2&gt;

&lt;p&gt;For the last five years, the &lt;strong&gt;AWS Solutions Architect Associate (SAA-C03)&lt;/strong&gt; exam has been a looming mountain on my horizon. I’ve started the journey, completed labs, and studied documentation more times than I can count. But as many of us know, life doesn't always care about your study schedule. Personal reasons and life’s unpredictable turns kept me from reaching the finish line.&lt;/p&gt;

&lt;p&gt;But 2026 is different. Instead of just picking up where I left off, I’m building a fresh foundation. I’m moving away from just following guided cloud tutorials and building a &lt;strong&gt;Hybrid Cloud Lab&lt;/strong&gt; on a physical laptop I've named &lt;strong&gt;Tamriel&lt;/strong&gt;. This is my "re-entry" project to master the bridge between on-premise Linux and the AWS ecosystem.&lt;/p&gt;




&lt;h2&gt;
  
  
  🏗️ Phase 0: The Physical Foundation
&lt;/h2&gt;

&lt;p&gt;The mission is to build an &lt;strong&gt;AWS Flashcards App&lt;/strong&gt; to help me study, but the app needs a home. Today was about setting up that home on a repurposed Lenovo laptop running &lt;strong&gt;Ubuntu Server 24.04 LTS&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Hardening the Entryway
&lt;/h3&gt;

&lt;p&gt;Security is the first rule of AWS, so I applied it to my local server first:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;SSH Key Auth:&lt;/strong&gt; No passwords allowed. I generated an &lt;strong&gt;ED25519&lt;/strong&gt; key pair on my Windows 11 workstation and locked the server down so it only accepts my digital signature.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Headless Setup:&lt;/strong&gt; Modified &lt;code&gt;logind.conf&lt;/code&gt; so the laptop stays awake with the lid closed. It’s now tucked away, acting as a true server.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  ⚔️ The "Layer 1" Boss Fight
&lt;/h2&gt;

&lt;p&gt;Everything was going great until I tried to set a Static IP. Suddenly, Tamriel went dark. No SSH, no internet.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Troubleshooting Journey:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Netplan Configuration:&lt;/strong&gt; We wrestled with YAML formatting. In Ubuntu 24.04, the syntax for routes has changed, and one wrong space can kill your network.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The "Dead" Service:&lt;/strong&gt; Discovered the SSH service was marked as &lt;code&gt;inactive (dead)&lt;/code&gt;. A quick &lt;code&gt;sudo systemctl enable --now ssh&lt;/code&gt; brought the "phone line" back to life.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Culprit:&lt;/strong&gt; Even with perfect code, the interface stayed &lt;code&gt;degraded (configuring)&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;The Lesson:&lt;/strong&gt; After checking every line of code, it turned out to be a &lt;strong&gt;faulty Ethernet cable&lt;/strong&gt;. Replacing the cable instantly brought the link up to &lt;strong&gt;1000Mbps Full Duplex&lt;/strong&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Pro-Tip:&lt;/strong&gt; Always check your physical layer (Layer 1) before you start rewriting your software (Layer 3)!&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  🚀 What’s Next?
&lt;/h2&gt;

&lt;p&gt;Tamriel is rock solid at &lt;code&gt;10.0.0.205&lt;/code&gt;. Now, I can finally start the real work. Next up: &lt;strong&gt;Sprint 1 — The Dockerization of the Lab.&lt;/strong&gt; I’ll be installing Docker to run the local development environment for my Flashcards App.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The mountain is still there, but this time, I’ve got better gear.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That is the perfect way to cap off the session. Documenting as you go is a hallmark of a great Solutions Architect—it turns a "task" into a "learning asset."&lt;/p&gt;

&lt;p&gt;Since we’ve pivoted from simple flashcards to a full &lt;strong&gt;Hybrid Exam Simulator&lt;/strong&gt;, here is a summary tailored for your next &lt;strong&gt;dev.to&lt;/strong&gt; post. I’ve aligned it with your 5-year journey narrative and today's technical milestones.&lt;/p&gt;




&lt;h2&gt;
  
  
  📝 Blog Update: Day 2 – Orchestrating the Hybrid Lab
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;The Pivot: From Flashcards to Exam Simulator&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;After reviewing the project goals, I decided to shift from a simple "flashcard" mechanic to a more robust &lt;strong&gt;Multiple-Choice Exam Simulator&lt;/strong&gt;. Why? Because the SAA-C03 exam is scenario-based. To pass, I need to simulate the actual pressure of choosing between four complex architectural solutions.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Technical Milestones: Moving from "Manual" to "Automated"&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Today was about moving away from "blank slate" hardware and toward a professional-grade development environment.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;1. Environment Provisioning&lt;/strong&gt;
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The Challenge:&lt;/strong&gt; Tamriel (my Ubuntu Server) was a blank slate without Node.js or Git identity.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Solution:&lt;/strong&gt; Installed &lt;strong&gt;Node.js 20&lt;/strong&gt; and &lt;strong&gt;npm&lt;/strong&gt; to support modern React development. I also configured my global Git identity to ensure every commit to my lab "Source of Truth" is tracked correctly.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;2. "Dockerizing" the Frontend&lt;/strong&gt;
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Scaffolding a fresh &lt;strong&gt;React&lt;/strong&gt; application directly on the server.&lt;/li&gt;
&lt;li&gt;Wrote a custom &lt;strong&gt;Dockerfile&lt;/strong&gt; using the &lt;code&gt;node:20-alpine&lt;/code&gt; image to keep the footprint small and secure.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;3. Real-Time Development with Docker Volumes&lt;/strong&gt;
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The Breakthrough:&lt;/strong&gt; Solved the "Container Catch-22" by implementing &lt;strong&gt;Docker Volumes&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;By mapping my local directory (&lt;code&gt;/home/sjhonson/projects/...&lt;/code&gt;) to the container's &lt;code&gt;/app&lt;/code&gt; folder, I achieved &lt;strong&gt;Hot Reloading&lt;/strong&gt;. Now, any code change I make on Tamriel is reflected instantly in my Windows 11 browser.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;4. Infrastructure as Code (IaC) with Docker Compose&lt;/strong&gt;
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;I replaced long, error-prone &lt;code&gt;docker run&lt;/code&gt; commands with a single &lt;code&gt;docker-compose.yml&lt;/code&gt; file.&lt;/li&gt;
&lt;li&gt;This is my "Mini-CloudFormation." It captures my ports, volumes, and environment variables, making the lab 100% repeatable. One command—&lt;code&gt;docker compose up -d&lt;/code&gt;—and the entire simulator is live.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Current Progress: SAA-C03 Connection&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Reliability:&lt;/strong&gt; The lab is now version-controlled and documented.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Storage:&lt;/strong&gt; Practiced the difference between persistent image storage (EBS-style) and shared live volumes (EFS-style).&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;This is the perfect way to wrap up. Your second blog post is going to show a massive jump in technical maturity—moving from "I have a server" to "I have a styled, orchestrated application."&lt;/p&gt;

&lt;p&gt;Here is a structured summary of today’s achievements, formatted specifically for your &lt;strong&gt;dev.to&lt;/strong&gt; blog.&lt;/p&gt;




&lt;h2&gt;
  
  
  📝 Blog Update: Day 3 – Logic, Styling, and the "Fancy" Factor
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;The Goal: Turning Code into a Portal&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Yesterday was about the plumbing (Docker). Today was about the &lt;strong&gt;User Experience (UX)&lt;/strong&gt;. I moved the project from a blank screen to a functional AWS SAA-C03 Exam Simulator that actually helps me study.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Technical Highlights&lt;/strong&gt;
&lt;/h3&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;1. Decoupling Data from Logic&lt;/strong&gt;
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The Challenge:&lt;/strong&gt; Hard-coding questions into the app makes it impossible to scale.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Solution:&lt;/strong&gt; I created a dedicated &lt;code&gt;question.json&lt;/code&gt; "database." This follows the SAA-C03 principle of &lt;strong&gt;Separation of Concerns&lt;/strong&gt;. Now, the app logic stays the same even if I add 1,000 new questions.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;2. Instant Feedback &amp;amp; State Management&lt;/strong&gt;
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;I implemented a "Feedback Loop." When a user selects an answer, the app immediately calculates if it’s correct, displays a message (Green for success, Red for failure), and pauses for 1.5 seconds before moving on.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SAA Connection:&lt;/strong&gt; This is a micro-version of &lt;strong&gt;Asynchronous Processing&lt;/strong&gt;. I’m using React "State" to track the user’s journey in real-time.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;3. The "AWS Console" Makeover&lt;/strong&gt;
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Plain HTML buttons weren't enough. I wrote custom CSS to mimic the &lt;strong&gt;AWS Management Console&lt;/strong&gt; aesthetic—using the signature AWS Blue and Orange palette.&lt;/li&gt;
&lt;li&gt;I added a &lt;strong&gt;Dynamic Progress Bar&lt;/strong&gt; that fills up as you move through the quiz, giving that "High-End Training" feel.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;4. Disaster Recovery &amp;amp; Version Control&lt;/strong&gt;
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;I finished the day by syncing everything to GitHub. I'm treating my code like an &lt;strong&gt;EBS Snapshot&lt;/strong&gt;—snapshotting my progress (Git Commit) and replicating it to another "Region" (Git Push to GitHub) to ensure I never lose a day of work.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Current Progress: SAA-C03 Connection&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Operational Excellence:&lt;/strong&gt; My environment is repeatable via Docker.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reliability:&lt;/strong&gt; My code is backed up and versioned.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cost Optimization:&lt;/strong&gt; I'm building this entire lab on my local hardware (Tamriel) before I spend a single cent on AWS cloud resources.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Next Steps&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Now that the frontend is "Fancy," I’m ready for the &lt;strong&gt;Hybrid&lt;/strong&gt; part of the project:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Moving the question bank from a local file to a &lt;strong&gt;Cloud Database&lt;/strong&gt; (DynamoDB).&lt;/li&gt;
&lt;li&gt;Setting up a &lt;strong&gt;Python/FastAPI&lt;/strong&gt; backend to serve those questions.&lt;/li&gt;
&lt;/ul&gt;




</description>
      <category>aws</category>
      <category>beginners</category>
      <category>learning</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Building an AWS Flashcards App to Study for the SAA-C03 Exam</title>
      <dc:creator>Smaylle Jhonson</dc:creator>
      <pubDate>Mon, 22 Sep 2025 19:29:58 +0000</pubDate>
      <link>https://dev.to/smaylle_oliveira/building-an-aws-flashcards-app-to-study-for-the-saa-c03-exam-4469</link>
      <guid>https://dev.to/smaylle_oliveira/building-an-aws-flashcards-app-to-study-for-the-saa-c03-exam-4469</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;⚠️ &lt;strong&gt;Disclaimer&lt;/strong&gt;: I’m using AI (ChatGPT) to help guide me through this project and to assist with writing these blog posts. The project is still hands-on — I’m doing all the setup, and AWS work myself — but AI is acting as a mentor and documentation assistant along the way.  &lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Why This Project?
&lt;/h2&gt;

&lt;p&gt;I’m currently preparing for the &lt;strong&gt;AWS Solutions Architect Associate (SAA-C03)&lt;/strong&gt; certification. Instead of only watching videos or reading notes, I wanted a &lt;strong&gt;hands-on project&lt;/strong&gt; that would:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ Help me practice real AWS services in a practical way.
&lt;/li&gt;
&lt;li&gt;✅ Keep me motivated through daily progress.
&lt;/li&gt;
&lt;li&gt;✅ Double as a tool I can use to study for the exam itself.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That’s how I came up with this project: &lt;strong&gt;build a flashcards web app&lt;/strong&gt; for AWS exam prep, hosted entirely on AWS.  &lt;/p&gt;




&lt;h2&gt;
  
  
  The Plan
&lt;/h2&gt;

&lt;p&gt;The idea is simple:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A web app where I can log in, flip through AWS flashcards, and track my study progress.
&lt;/li&gt;
&lt;li&gt;The app itself will run on &lt;strong&gt;AWS services&lt;/strong&gt; I need to know for the exam (S3, CloudFront, DynamoDB, Cognito, API Gateway, Lambda, CloudWatch, etc.).
&lt;/li&gt;
&lt;li&gt;I’ll build it step by step over ~6 weeks, dedicating ~10–15 hours per week.
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Rough Roadmap
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Week 1:&lt;/strong&gt; Environment setup + “Hello AWS Flashcards” app running locally and deployed to AWS.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Week 2:&lt;/strong&gt; Add a backend API with DynamoDB and Lambda.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Week 3:&lt;/strong&gt; Add user authentication with Cognito.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Week 4:&lt;/strong&gt; Enhance the app (progress tracking, multiple cards, UI polish).
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Week 5:&lt;/strong&gt; Automate deployment with GitHub + Amplify (CI/CD).
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Week 6:&lt;/strong&gt; Add monitoring, scaling, and optimizations.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Extras later: spaced repetition algorithm, user-created flashcards, image uploads, etc.  &lt;/p&gt;




&lt;h2&gt;
  
  
  How I’ll Track Progress
&lt;/h2&gt;

&lt;p&gt;To keep myself organized:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;📋 &lt;strong&gt;Trello board&lt;/strong&gt; → each week’s tasks broken into cards with labels.
&lt;/li&gt;
&lt;li&gt;📝 &lt;strong&gt;Daily logs (like this blog)&lt;/strong&gt; → a short write-up of what I worked on, issues I faced, fixes, and time spent.
&lt;/li&gt;
&lt;li&gt;🔁 &lt;strong&gt;Repeatable template&lt;/strong&gt; → so every entry is consistent:

&lt;ul&gt;
&lt;li&gt;✅ Accomplishments
&lt;/li&gt;
&lt;li&gt;⚠️ Issues + Fixes
&lt;/li&gt;
&lt;li&gt;⏱️ Time spent
&lt;/li&gt;
&lt;li&gt;🎯 Next steps
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;




&lt;h2&gt;
  
  
  Why Blog About It?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Writing forces me to &lt;strong&gt;document what I learn&lt;/strong&gt;.
&lt;/li&gt;
&lt;li&gt;It helps me track my journey in a way that’s easy to look back on.
&lt;/li&gt;
&lt;li&gt;Maybe it inspires others who are studying for AWS certifications to try hands-on projects instead of just videos and books.
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  What’s Next?
&lt;/h2&gt;

&lt;p&gt;I’ve already completed:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ Session 1 (Environment setup)
&lt;/li&gt;
&lt;li&gt;✅ Session 2 (React “Hello AWS Flashcards” app running locally)
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Next up is:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🎯 Session 3 — Deploy the app to AWS (S3 + CloudFront).
&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  📓 AWS Flashcards App – Week 1, Day 1 Log
&lt;/h1&gt;

&lt;h2&gt;
  
  
  ✅ Accomplishments
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Session 1 – Environment Setup&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Verified and installed: Node.js, npm, AWS CLI, AWS CDK, Git.
&lt;/li&gt;
&lt;li&gt;Fixed npm/PowerShell script execution issue.
&lt;/li&gt;
&lt;li&gt;Installed Git for Windows and added it to PATH.
&lt;/li&gt;
&lt;li&gt;Created clean project structure:
&lt;/li&gt;
&lt;/ul&gt;

&lt;pre class="highlight plaintext"&gt;&lt;code&gt;aws-flashcards/
 ├─ frontend/   (React app)
 ├─ cdk/        (AWS CDK scripts, later)
 ├─ backend/    (Lambda/API code, later)
&lt;/code&gt;&lt;/pre&gt;



&lt;ul&gt;
&lt;li&gt;Configured VS Code with recommended extensions (Prettier, GitLens, React snippets, AWS Toolkit).
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Session 2 – Starter React App&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Created React app inside &lt;code&gt;frontend/&lt;/code&gt;.
&lt;/li&gt;
&lt;li&gt;Replaced &lt;code&gt;App.js&lt;/code&gt; with &lt;strong&gt;Hello AWS Flashcards&lt;/strong&gt; component.
&lt;/li&gt;
&lt;li&gt;Ran &lt;code&gt;npm start&lt;/code&gt; → confirmed app works locally.
&lt;/li&gt;
&lt;li&gt;Successfully tested flashcard flip on click. 🎉
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;




&lt;h2&gt;
  
  
  ⚠️ Issues Encountered &amp;amp; Fixes
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;npm not working (&lt;code&gt;npm -v&lt;/code&gt; blocked by PowerShell security policy).&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Error:
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; npm.ps1 cannot be loaded because running scripts is disabled
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Fix:&lt;/strong&gt; Changed execution policy:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Set-ExecutionPolicy&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-Scope&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;CurrentUser&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-ExecutionPolicy&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;RemoteSigned&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Git not recognized (&lt;code&gt;git init&lt;/code&gt; failed).&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Error: &lt;code&gt;'git' is not recognized as a cmdlet...&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fix:&lt;/strong&gt; Installed Git for Windows → added to PATH.
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Folder structure uncertainty.&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Fix:&lt;/strong&gt; Created &lt;code&gt;frontend/&lt;/code&gt;, &lt;code&gt;cdk/&lt;/code&gt;, &lt;code&gt;backend/&lt;/code&gt; upfront for clarity and future-proofing.
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  ⏱️ Time Spent
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Planning &amp;amp; Trello setup → ~1 hr
&lt;/li&gt;
&lt;li&gt;Environment setup → ~2.5 hrs
&lt;/li&gt;
&lt;li&gt;VS Code config &amp;amp; project structure → ~1.5 hrs
&lt;/li&gt;
&lt;li&gt;React app setup &amp;amp; test → ~1 hr
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Total today:&lt;/strong&gt; ~6 hours  &lt;/p&gt;




&lt;h2&gt;
  
  
  🎯 Next Steps (Session 3 – Deploy to AWS)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Build React app for production (&lt;code&gt;npm run build&lt;/code&gt;).
&lt;/li&gt;
&lt;li&gt;Create S3 bucket → enable static hosting.
&lt;/li&gt;
&lt;li&gt;Upload React build to S3.
&lt;/li&gt;
&lt;li&gt;Optional: Add CloudFront distribution for caching and custom domain with Route 53.
&lt;/li&gt;
&lt;/ul&gt;




</description>
    </item>
    <item>
      <title>My Cloud Resume Challenge Journey</title>
      <dc:creator>Smaylle Jhonson</dc:creator>
      <pubDate>Thu, 13 Feb 2025 22:29:40 +0000</pubDate>
      <link>https://dev.to/smaylle_oliveira/my-cloud-resume-challenge-journey-4n34</link>
      <guid>https://dev.to/smaylle_oliveira/my-cloud-resume-challenge-journey-4n34</guid>
      <description>&lt;h3&gt;
  
  
  About me:
&lt;/h3&gt;

&lt;p&gt;I'm an IT professional with 10+ years of experience. For about 8 years I worked as the front line of internal End User Support in training, troubleshooting software, hardware, and network issues on Mac, PC, and iOS platforms for scientists, doctors, and support staff. &lt;/p&gt;

&lt;p&gt;In 2022 I had the opportunity to move over to a Lab Technology team. In this new role, myself and my team are responsible for the secure and functional integration of complex third-party lab instrumentations projects, devices and technologies with our software systems, such as digital cages, sensors, devices, to name just a few. &lt;/p&gt;

&lt;p&gt;This new position allowed me to work in many complex system integrations, requiring me to be working directly with Cloud Engineers, Network Engineers, Database experts, etc. This experience made me realize the importance of sharpening my skills to stay relevant in the ever-evolving IT landscape. It also reignited my passion for cloud computing—a field I had explored years ago but had set aside.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;So this is my 2025 goal:&lt;/strong&gt; Complete the Cloud Resume Challenge by Q2 of 2025, and get the AWS Solutions Architect Associate by no later than Q3.  &lt;/p&gt;

&lt;h3&gt;
  
  
  The Cloud Resume Challenge:
&lt;/h3&gt;

&lt;p&gt;PS: This post is a raw collection of my thoughts as I progress through the challenge. Initially, I planned to write everything in a Word document, format it later, and then publish a polished blog. However, I decided it would be more beneficial to share my journey in real-time, updating the blog a few times a week. This approach will keep me accountable and motivated to complete each step of the challenge.&lt;/p&gt;

&lt;p&gt;Once I finish the Cloud Resume Challenge, I plan to publish a refined blog, but I’ll keep this "raw" version as a record of my progress—something to look back on and appreciate how far I've come... :-)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Day 1 (01/22/25)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For Day 1 I mostly focused on getting my AWS account ready for the challenge. I’ve used the same account through all the AWS courses I’ve done, so there were some cleaning to be done.&lt;/p&gt;

&lt;p&gt;The first challenge was to get the IAM Identity Center (Former AWS SSO) setup. As recommended by the Cloud Resume Book, I tried to follow this tutorial, however it was outdated. Even though the screenshots from the tutorial were outdated, the setup was very straight forward. I did watch this quick youtube video to help me navigate the IAM Identity Center console.&lt;/p&gt;

&lt;p&gt;Once I got the IAM Identity Center configured, by creating a group, an user and setting permissions, it was time to get CLI setup.&lt;/p&gt;

&lt;p&gt;To get the CLI setup I used those two AWS Whitepapers: &lt;/p&gt;

&lt;p&gt;CLI Install: &lt;a href="https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html" rel="noopener noreferrer"&gt;https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html&lt;/a&gt;&lt;br&gt;
CLI Configuration: &lt;a href="https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sso.html" rel="noopener noreferrer"&gt;https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sso.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I spent about 4 hours on day 1.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Day 2 (01/23/25)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Finding a template for the resume in HTML and CSS was very straight forward. Tweaking it seems easy.&lt;/p&gt;

&lt;p&gt;I’m very confused about setting up CloudFront, setting up DNS and using HTPPS for the static website. The main confusion is coming from not knowing where to start. Do I need to request a DNS name first? Do I need to configure CloudFront Distribution? To request HTTPS I need to get setup certificates first? How?&lt;/p&gt;

&lt;p&gt;After some reading, this is how I approached it: &lt;/p&gt;

&lt;p&gt;Create resume in HTML and CSS &amp;gt; Create S3 bucket and configure it to host static website &amp;gt; Move static website content to S3 bucket &amp;gt;  Use Route53 to request a domain &amp;gt; Configure domain (create a record, add CNAME and point it to your bucket) &amp;gt; Add TLS cert using CloudFront Distribution.&lt;/p&gt;

&lt;p&gt;This video helped me greatly with this challenge.&lt;/p&gt;

&lt;p&gt;I probably spent about 4-5 hours on day 2.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Day 3 (01/24/25)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Most of my day 3 I’ve spent trying to figure out why I can’t list my S3 buckets using the AWS CLI. I’ve read through Amazon whitepaper on how to configure and troubleshoot CLI issues, but I could not find a solution to the errors I’m getting when trying to list my s3 buckets. &lt;br&gt;
Some of the error messages are: “The AWS Access Key Id you provided does not exist in our records”, and “...unable to locate credentials”. I will get back to this another time, as it’s not important right now.&lt;/p&gt;

&lt;p&gt;I did get my GitHub repo created. Need to watch more videos about GitHub so I can understand it better.&lt;/p&gt;

&lt;p&gt;About 3 hours troubleshooting this on day 3.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Day 4 and 5 (01/27 and 01/28)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I mostly watched videos and read articles about APIs, DynamoDB, Lambda and Python, trying to understand each of those topics a little bit more individually first, and then how I can get them all to work together.&lt;/p&gt;

&lt;p&gt;Time spent: About 3 hours&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Day 6 (01/29/25)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Still working through understanding how Lambda and DynamoDB works together. Not really very hard to make Lambda interact with DynamoDB. Understanding how/why it works is the, and what the Python code is doing, for example, is the harder part.&lt;/p&gt;

&lt;p&gt;I got it to work in the end, by following the tutorial from the video below. But I think I’m still miles to go to fully understand everything I did. However, I’m 100% confident that today I understand Lambda and DynamoDB much more than yesterday.&lt;/p&gt;

&lt;p&gt;PS to myself: Go back to learning Python ASAP.&lt;/p&gt;

&lt;p&gt;Extremely useful tutorial video on Lambda, DynamoDB and Python: AWS Lambda Python functions with a database (DynamoDB)&lt;/p&gt;

&lt;p&gt;Time Spent: About 3 hours.&lt;/p&gt;

&lt;p&gt;** Couldn’t do much in the last 2 weeks with the kid and myself getting sick. Still watched some videos on API, DynamoDB, Lambda functions, etc.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Day 7 (02/13/25)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I was able to get the Lambda function to save a value into a DynamoDB table. I got the Python code from ChatGPT, but had to tweak it here and there to make it work. I don’t think that currently I’m capable of writing a Lambda function with Python all by myself, but I definitely have a much better understanding on how Lambda functions interact with DynamoDB.&lt;/p&gt;

&lt;p&gt;When it comes to API, and how to get it configured, I’m still having a hard time understanding and implementing it. I still don’t understand what routes, methods, integrations, CORS, etc, work. I’m currently unable to make my API invoke my Lambda function. Need to research more.&lt;/p&gt;

&lt;p&gt;PS: Feeling a bit overwhelmed and frustrated today. We'll go again tomorrow.&lt;/p&gt;

&lt;p&gt;Time spent: Not sure. At least 3 hours.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Day 8 (02/14/25)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I tried to update/change my index.html, and noticed that the changes were not going through when accessing my resume website (resume.smaylle.com). I even deleted the index.html from the S3 bucket, waited several hours, and the website was still running just fine. I did some research, and several people in the forums was saying it was a Cloudfront caching issue, and I should create an invalidation to fix it, which worked for me. AWS whitepaper is used below:&lt;br&gt;
&lt;/p&gt;
&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
      &lt;div class="c-embed__body flex items-center justify-between"&gt;
        &lt;a href="https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Invalidation.html" rel="noopener noreferrer" class="c-link fw-bold flex items-center"&gt;
          &lt;span class="mr-2"&gt;docs.aws.amazon.com&lt;/span&gt;
          

        &lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;As I was trying to figure out the caching issues, I noticed that my S3 bucket actually had public access enabled (not good). I know it doesn't need to be public because I'm using Cloudfront. I turned off the public access to the bucket, but as expected, my website is no longer accessible. I think I know what the problem is. When I was creating the Cloudfront distribution, under Origin Access, I picked the Public option, instead of the Origin Access Control settings, so there is no bucket policy created in S3 that allows Cloudfront access only to my bucket. I could go ahead and create a brand new CF distribution, but I'm going to try to attach a policy to the bucket first and see if I can make it work. I've tried a few things like changing the policy directly within the bucket permissions, but I'm getting an error every time I tried to save it. I also played around with the Cloudfront origin access, but no luck yet. I'll try a few more things, but if I can't get it to work, I'll create a new CF distribution. In the end, it will be a learning experience regardless of what path I take.&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
