Mini- Project #1 - Creating SkillSync: Launching My AWS 2-Tier App with CI/CD (Plus All the Debugging Adventures)Your blog post

SkillSync is a fully serverless, cloud-native web app designed to help users track, update, and showcase their technical skills over time. It leverages modern cloud architecture, Infrastructure as Code (IaC), and DevOps best practices to deliver a reliable and scalable user experience.

8/16/20255 min read

When I began preparing for the AWS Developer Associate certification, I made a deal with myself: I wouldn’t just binge videos or memorize service names. I’d build something. Something real, cloud-based, and user-friendly, something that could prove I understood AWS beyond just the docs.

SkillSync was developed as a two-tier web application to assist users in tracking their technology skills. AWS fully powers it and features an automated CI/CD pipeline.

The Reason Behind It

In the fast-moving world of tech, it’s tough to figure out what to learn next. Should you go deeper into Python? Pick up Kubernetes? Master cloud architecture? As someone actively working toward my first software engineering job, I know that feeling of overwhelm all too well — constantly wondering if I’m on the right path or falling behind.

SkillSync grew from that feeling. It’s a full-stack app that lets you visually track and organize your skills by category. Whether you’re updating your resume, prepping for an interview, or figuring out what to learn next, SkillSync gives you a clear picture of your skillset.

But beyond solving a personal problem, I also wanted to understand what it takes to build and ship a cloud-native app from initial architecture to fully automated deployments, including all the inevitable bugs and failures.

Tech Stack Breakdown

Here’s a closer look at what’s inside:

Frontend

  • Static site with HTML, CSS, and vanilla JS

  • Hosted on Amazon S3

  • Served globally through CloudFront

  • Responsive and mobile-friendly UI

Backend

  • AWS Lambda for serverless logic

  • API Gateway to create RESTful endpoints

  • Custom logic for skill tracking and organization

Database

  • DynamoDB for quick, scalable data storage

  • Designed for fast read/write operations

DevOps Tools

  • GitHub Actions for CI

  • AWS CodePipeline for automated delivery

  • AWS SAM for infrastructure as code

How It All Connects

User Request → CloudFront → S3 (Frontend) ↓ User Action → API Gateway → Lambda → DynamoDB ↓ Response ← API Gateway ← Lambda ← DynamoDB

This isn’t just theory — it works. And it’s budget-friendly too: the whole thing runs for under $5/ month thanks to AWS’s usage-based pricing.

Roadblocks I Hit (and What I Learned)

SkillSync was a great learning experience, but I hit plenty of snags. Each one taught me something new about building real-world cloud apps.

1. CloudFront Caching Confusion: Everything worked as expected on my local machine, but the version that was deployed showed old files. I discovered that I hadn’t been executing the CloudFront cache invalidation correctly. I had to modify my buildspec to include the invalidation command in the build process explicitly.

2. IAM Permission Puzzles: A frustrating “AccessDenied” error sent me on a deep dive into IAM. The role for CodePipeline was missing PutObject permissions for S3. I discovered the importance of correctly setting up both role policies and trust relationships through my own experience.

3. Build Directory Mix-Up: The frontend wouldn’t render because I was uploading the entire repo instead of just the build directory. Fixing my GitHub Actions workflow to point to the correct folder solved the issue.

4. Endless Pipeline Timeout: During one specific deployment, the process became stalled for a frustrating 30 minutes. After a thorough investigation, I pinpointed the issue: a crucial environment variable was missing in the CodeBuild configuration, which led to the Lambda function hanging indefinitely and not proceeding with its tasks.

5. Git Commit Fail: In a rush to test a final update, I forgot to commit my code. Nothing worked, and I couldn’t figure out why — until I realized the code hadn’t been pushed. Classic mistake.

Every one of these hiccups helped me build better habits — like slowing down, reading AWS docs more carefully, and learning how to think like an ops engineer.

CI/CD: Not Quite Magic

I envisioned a seamless process: committing to GitHub and seeing AWS deploy effortlessly. The truth? I have gained a profound appreciation for DevOps engineers.

Issues I Ran Into:

  • IAM roles not set up correctly → pipeline couldn’t pull from GitHub

  • Missing AWS credentials → GitHub Actions kept failing

  • Build artifacts weren’t showing up in S3 → wrong paths in config

  • CORS errors → frontend couldn’t talk to the backend

  • Environment variables mismatched → local builds worked, deployed ones didn’t

Solving these issues gave me a crash course in diagnosing and fixing production problems — skills that are way more valuable than just deploying successfully the first time.

Why This App Matters in the Real World

SkillSync isn’t just a side project — it mirrors real production systems that cloud engineers work with daily.

Enterprise-Ready Design

  • Serverless architecture = minimal maintenance

  • Event-driven backend = great for scaling or adding features

  • Infrastructure as Code = repeatable, safe deployments

  • CI/CD = fast, reliable updates

Cost-Efficient

  • No server costs when idle

  • DynamoDB scales up/down with usage

  • Static site + CloudFront = high performance, low price

Production Features

  • Logs and error handling through CloudWatch

  • Separate environments for dev, staging, and prod

  • Strong security with IAM and HTTPS

  • Alerts and monitoring in place

Press enter or click to view image in full size

Key Takeaways

These are the biggest lessons I walked away with:

1. IAM is Core Infrastructure: If you don’t understand permissions, nothing else will work. Least privilege may be a hassle upfront, but it pays off long-term.

2. Logs Are Your Best Friend: CloudWatch helped me figure out every issue. Logging isn’t optional — it’s essential.

3. Automate Early: CI/CD took time to set up, but after the fifth deployment, I was saving hours. By the twentieth, it was game-changing.

4. Use Git Properly: Don’t skip commits or forget branches. Version control is your lifeline when troubleshooting.

What This Means for My Career

SkillSync is more than just a student project — it’s a micro-version of the real systems I want to build professionally.

In Real Jobs, This Setup Makes Sense:

  • Serverless = scalable and affordable

  • Static frontend = fast and globally available

  • DynamoDB = flexible for future growth

  • CI/CD = less human error, more speed

What’s even more impressive? The troubleshooting experiences helped me develop my problem-solving skills like a genuine cloud engineer.

The Future of SkillSync

SkillSync has a strong foundation, but I have plans to elevate it further:

  • Add user logins using Amazon Cognito.

  • Suggest personalized learning paths with Amazon Bedrock.

  • Recommend projects tailored to your skill set.

  • Utilize machine learning to identify gaps between your skills and job descriptions.

  • Incorporate analytics to track learning progress.

  • Connect with LinkedIn and job boards.

  • Create team dashboards for skill tracking at the organizational level.

  • Develop a mobile-friendly version or a native app.

Right now, I’m locking down the last of the CI/CD bugs and prepping for my AWS Developer Associate exam. But SkillSync will stick around as a portfolio centerpiece and proof of everything I’ve learned.

Tips for AWS Learners

Here’s what I wish I had known when I started:

  • Build as You Go: Don’t wait until you feel like you “know everything.” Start building small projects along the way; this approach will help you learn faster.

  • Learn from Errors: Every bug teaches you something valuable. Embrace these learning opportunities.

  • Keep Notes: Documenting what went wrong and how you fixed it will save you a significant amount of time in the future.

  • Progress Over Perfection: You won’t get everything right the first time, and that’s completely normal. Build, break, fix, and repeat.

  • Share Your Work: Upload your projects to GitHub, write about your experiences in a blog, and showcase your projects.

Today’s Big Win

After a week of work, SkillSync is live. People can use it to track skills. The UI works, the backend is stable, and it’s all powered by real AWS infrastructure.

Now I can take an idea, build it from scratch, troubleshoot every step, and deploy it to production.

Final Thoughts

SkillSync started as a learning tool — but turned into proof that I can design, build, and manage full-stack, cloud-native apps.

More than that, it taught me that understanding AWS goes beyond memorizing services. It’s about knowing how those services work together and how to fix them when things go wrong.

If you’re prepping for an AWS cert, build something you care about.

The SkillSync repo is public on GitHub, complete with setup guides and lessons learned. Because the best way to grow? Build — and then share what you’ve built.

Curious about the code? GitHub Repo