A modern, cloud-native portfolio website built to demonstrate DevOps engineering expertise. This project showcases best practices in cloud infrastructure, Infrastructure as Code (IaC), CI/CD automation, security, and observability.
π Live Site: fitzs.io
%%{init: {'theme':'base', 'themeVariables': {'background': '#f8fafc', 'primaryColor': '#ffffff', 'primaryTextColor': '#1e293b'}}}%%
block-beta
columns 3
block:dev:3
columns 5
space
space
devTitle("π§ Development & CI/CD")
space
space
A["GitHub Repository<br/>(Source Code)"]
space
B["GitHub Actions<br/>(CI/CD Pipeline)"]
space
C["Terraform Cloud<br/>(State Management)"]
end
space:3
block:aws:3
columns 7
space
space
space
awsTitle("βοΈ AWS Cloud Infrastructure")
space
space
space
F["S3 Bucket<br/>(Static Website Hosting)"]
space
space
space
space
space
H["Certificate Manager<br/>(SSL/TLS Certificates)"]
space
space
space
E["CloudFront<br/>(Global CDN)"]
space
space
space
I["CloudWatch<br/>(Monitoring & Logging)"]
space
D["Route 53<br/>(DNS Management)"]
space
G["AWS WAF<br/>(Web Application Firewall)"]
end
space:3
block:external:3
columns 5
space
space
extTitle("π External")
space
space
space
J["fitzs.io<br/>(Custom Domain)"]
space
K["π<br/>End Users<br/>(Global Visitors)"]
space
end
%% Development Flow
A --> B
B --> C
%% Deployment Flow
B --> E
B --> F
%% DNS Flow
J --> D
D --> E
%% Content Flow
E --> F
%% User Flow
K --> E
%% Security & Monitoring
G --> E
H --> E
I -.-> E
I -.-> F
I -.-> D
%% Styling
classDef aws fill:#f97316,stroke:#ea580c,stroke-width:2px,color:#ffffff
classDef github fill:#0f172a,stroke:#1e293b,stroke-width:2px,color:#f1f5f9
classDef external fill:#06b6d4,stroke:#0891b2,stroke-width:2px,color:#ffffff
class D,E,F,G,H,I aws
class A,B,C github
class J,K external
class devTitle,awsTitle,extTitle BT
classDef BT stroke:transparent,fill:transparent
%% Add padding to blocks for better arrow spacing
style A padding:10px
style B padding:10px
style C padding:10px
style D padding:10px
style E padding:10px
style F padding:10px
style G padding:10px
style H padding:10px
style I padding:10px
style J padding:10px
style K padding:10px
- Cloud Provider: Amazon Web Services (AWS)
- Infrastructure as Code: Terraform with Terraform Cloud
- CDN: Amazon CloudFront
- Storage: Amazon S3
- DNS: Amazon Route 53
- Security: AWS WAF, AWS Certificate Manager
- Monitoring: Amazon CloudWatch
- CI/CD: GitHub Actions
- Version Control: Git with GitHub
- Container Registry: GitHub Container Registry
- Secrets Management: GitHub Secrets
- State Management: Terraform Cloud
- Framework: [To be determined - React/Vue/Static]
- Build Tool: [To be determined - Vite/Webpack/Parcel]
- Testing: [To be determined - Jest/Cypress]
- Linting: ESLint, Prettier
- Security Scanning: CodeQL, npm audit
- AWS Account with appropriate permissions
- Terraform Cloud Account for state management
- GitHub Account with repository access
- Custom Domain Name for production deployment (configured via IONOS at the time of writing)
- Terraform CLI for infrastructure development
- Python 3 and pip for pre-commit hooks
-
Clone the repository
git clone https://github.com/VanSteve/portfolio.git cd portfolio -
Install pre-commit hooks (required for Terraform contributors)
pip install pre-commit pre-commit install
This installs a git hook that automatically checks Terraform formatting before each commit. If formatting issues are found, the hook will fix them β just re-stage the corrected files and commit again.
-
Install dependencies
npm install
-
Set up environment variables
cp .env.example .env.local # Edit .env.local with your configuration -
Start development server
npm run dev
-
Configure Terraform Cloud
- Create workspace in Terraform Cloud
- Set up AWS credentials as environment variables
- Configure backend in
terraform/environments/*/backend.tf - Set
domain_namevariable for production custom domain
-
Deploy infrastructure
- Development: CLI-driven workflow (
terraform apply) - Staging/Production: VCS-driven workflow (merge to
maintriggers auto-deployment)
- Development: CLI-driven workflow (
-
Deploy website
- TBD: Website build and deployment pipeline not yet implemented
- Future: Will include automated content deployment on code changes
- Current: Only infrastructure (S3, CloudFront, Route 53) is deployed
-
Pull Request Validation (
pr.yml)- Code linting and formatting
- Security vulnerability scanning
- Build verification
- Terraform plan (dry-run)
- Accessibility testing
-
Staging Deployment (
deploy-staging.yml)- Triggered on push to
mainbranch - Infrastructure deployment
- Website build and deployment
- Integration testing
- Slack notifications
- Triggered on push to
-
Production Deployment (
deploy-prod.yml)- Triggered on release tag creation
- Production infrastructure updates
- Website deployment with smoke tests
- Monitoring alerts validation
| Environment | Trigger | URL | Purpose |
|---|---|---|---|
| Development | Local | localhost:3000 |
Local development |
| Staging | Push to main |
CloudFront URL | Integration testing |
| Production | Release tag | https://fitzs.io |
Live website |
- AWS WAF: Protection against common web exploits
- HTTPS Everywhere: SSL/TLS certificates via AWS Certificate Manager
- Security Headers: HSTS, CSP, X-Frame-Options via CloudFront
- Access Controls: S3 bucket policies with least privilege
- SAST Scanning: CodeQL static analysis
- Dependency Scanning: npm audit and Dependabot
- Secrets Management: GitHub Secrets for sensitive data
- Container Scanning: Security scanning for any containerized components
- Audit Logging: AWS CloudTrail for API calls
- Compliance Monitoring: AWS Config rules
- Vulnerability Management: Automated security updates
- Incident Response: Automated alerting and response procedures
- Core Web Vitals: LCP, FID, CLS tracking
- Real User Monitoring: CloudWatch RUM integration
- Synthetic Monitoring: Automated health checks
- Lighthouse CI: Performance regression detection
- CloudWatch Metrics: Custom application and infrastructure metrics
- Alarms: Availability, performance, and error rate monitoring
- Dashboards: Real-time operational dashboards
- Log Aggregation: Centralized logging with search capabilities
- Email Notifications: Critical alerts via SNS
- Slack Integration: Team notifications for deployments
- PagerDuty: On-call escalation (if configured)
- Unit Tests: Component and utility function testing
- Integration Tests: API and service integration testing
- E2E Tests: Critical user journey testing
- Performance Tests: Load testing and benchmarking
- Security Tests: SAST, DAST, and penetration testing
- All tests must pass before deployment
- Code coverage minimum thresholds
- Performance budgets enforcement
- Security vulnerability scanning
- Accessibility compliance testing
- Infrastructure Plan: Detailed architecture and implementation plan
- API Documentation: API endpoints and usage (if applicable)
- Deployment Guide: Step-by-step deployment instructions
- Security Guide: Security best practices and procedures
- Troubleshooting Guide: Common issues and solutions
This project is licensed under the MIT License - see the LICENSE file for details.
Steve Fitzsimmons - DevOps Specialist - (LinkedIn) (Website)
Note: This portfolio website demonstrates some basic examples of my real-world DevOps skills including Infrastructure as Code (IaC), CI/CD automation, cloud architecture, security implementation, and is produced with high-quality operational practices. Feel free to explore the code and infrastructure to see these practices in action.