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