A beautiful, responsive HTML/CSS resume template with AWS deployment, dynamic themes, and data separation. Features responsive design, CloudFormation infrastructure, and cost-optimized hosting (~$1/month). Perfect for developers and professionals.
- ✅ 4 Professional Themes - Instant switching between Modern Blue, Professional Dark, Minimal Green, and Corporate Navy
- ✅ Privacy-First Data Separation - Personal data stays private, template code is shareable
- ✅ AWS Deployment Ready - CloudFormation infrastructure with security best practices
- ✅ Cost-Optimized - Deploy for ~$1-2/month with configurable features
- ✅ No Server Required - Works with direct file access for local development
- ✅ Responsive Design - Perfect on desktop, tablet, and mobile devices
- ✅ Infrastructure as Code - CloudFormation templates with tagging and monitoring
- ✅ CI/CD Ready - GitHub Actions workflow for automated deployments
View Live Demo - See the template in action
- Key Features
- Live Demo
- Quick Start
- Customization
- Available Themes
- AWS Deployment
- Privacy & Security
- Architecture
- Contributing
- License
Option 1: Direct File Access (Simplest)
- Clone or download this repository
- Copy
config.template.json
toconfig.json
- Edit
config.json
with your personal information - Run:
node sync-config.js
(syncs data for offline use) - Double-click
index.html
- works without any server!
Option 2: Local Server (Recommended)
- Follow steps 1-3 above
- Run:
python3 -m http.server 8000
- Open: http://localhost:8000
- Configure AWS CLI:
aws configure
- Run:
cd infrastructure && ./deploy.sh
- Your resume will be live on CloudFront with HTTPS
resume-template/
├── index.html # Main resume HTML file
├── config.json # Personal data (excluded from git)
├── config.template.json # Template for personal data
├── css/
│ └── styles.css # Main stylesheet
├── js/
│ ├── theme-switcher.js # Theme switching functionality
│ └── data-loader.js # Dynamic data loading
├── assets/
│ └── images/ # Profile photos and images
├── themes/ # Theme variations
│ ├── modern-blue.css
│ ├── professional-dark.css
│ ├── minimal-green.css
│ └── corporate-navy.css
├── infrastructure/ # AWS deployment
│ ├── resume-website.yaml # CloudFormation template
│ └── deploy.sh # Deployment script
├── .github/workflows/
│ └── deploy.yml # GitHub Actions deployment
├── README.md # This file
└── .gitignore # Git ignore file
- Dynamic Theme Switching - 4 beautiful themes with instant switching
- Data Separation - Personal data kept separate from template code
- AWS Deployment Ready - CloudFormation template with best practices
- Responsive Design - Looks great on desktop, tablet, and mobile
- Modern Aesthetic - Clean, professional design with subtle animations
- Print-Friendly - Optimized for printing to PDF
- Centered Timeline - Beautiful alternating timeline for experience
- Skill Tags - Visual skill representation with color-coded categories
- Certification Section - Dedicated space for professional certifications
- GitHub Actions - Automated deployment pipeline
All personal data is stored in config.json
. Copy config.template.json
to config.json
and customize:
{
"personal": {
"name": "Your Full Name",
"title": "Your Professional Title",
"location": "Your City, Country",
"email": "your.email@domain.com",
"linkedin": "linkedin.com/in/yourprofile",
"profileImage": "assets/images/profile.jpg",
"profileInitials": "YN"
},
"summary": "Your professional summary...",
"experience": [...],
"skills": [...],
"certifications": [...],
"education": {...}
}
Create new themes by copying existing theme files in the themes/
directory. Each theme uses CSS variables:
:root {
--primary-color: #667eea;
--secondary-color: #764ba2;
--accent-color: #28a745;
--dark-color: #2c3e50;
--light-bg: #f8f9fa;
--text-color: #333;
}
- Place your image in
assets/images/
(e.g.,profile.jpg
) - Update
config.json
:{ "personal": { "profileImage": "assets/images/profile.jpg", "profileInitials": "YN" } }
- Important: Run
node sync-config.js
after updating config.json - Recommended size: 150x150px or larger (square format)
- config.template.json - Template with dummy data (committed to git)
- config.json - Your personal data (excluded from git)
- js/config-data.js - Auto-generated fallback (excluded from git)
- Sync command:
node sync-config.js
- Run after editing config.json
Privacy Protection:
- ✅ Personal data never committed to git
- ✅ Template code is shareable publicly
- ✅ Only dummy/example data in repository
- ✅ Personal images excluded from git
Why two files?
- Enables direct file access (double-click index.html)
- Maintains server compatibility (local/AWS deployment)
- Same template works everywhere
- Modern Blue - Original blue gradient theme
- Professional Dark - Dark theme for modern look
- Minimal Green - Clean green theme
- Corporate Navy - Professional navy blue theme
- Copy an existing theme file from
themes/
- Modify the CSS variables
- Add the new theme to the dropdown in
js/theme-switcher.js
- Desktop: 1200px and above
- Tablet: 768px - 1199px
- Mobile: Below 768px
The template includes print-specific CSS:
- Removes background gradients
- Optimizes spacing for A4 paper
- Ensures all content fits properly
- Maintains professional appearance
To create a PDF:
- Open in browser
- Press Ctrl+P (Cmd+P on Mac)
- Select "Save as PDF"
- Choose appropriate settings
- AWS CLI configured (
aws configure
) - Appropriate AWS permissions
Basic deployment (Melbourne region, all features enabled):
cd infrastructure
./deploy.sh
Deploy to different region:
./deploy.sh --region us-west-2 # Deploy to US West (Oregon)
./deploy.sh --region eu-west-1 # Deploy to EU (Ireland)
./deploy.sh --region ap-northeast-1 # Deploy to Asia Pacific (Tokyo)
With custom domain:
./deploy.sh --domain resume.example.com --hosted-zone-id Z1234567890 --certificate-arn arn:aws:acm:us-east-1:123456789:certificate/...
Minimal deployment (no WAF, no Route 53, no access logs):
./deploy.sh --disable-waf --disable-route53 --disable-access-logs
Full custom configuration:
./deploy.sh --region ap-southeast-2 --environment prod --project-name my-resume --enable-waf false
- Fork this repository
- Add GitHub Secrets:
AWS_ROLE_ARN
: IAM role for deploymentPERSONAL_NAME
,PERSONAL_TITLE
, etc.: Your personal dataDOMAIN_NAME
,HOSTED_ZONE_ID
,CERTIFICATE_ARN
: For custom domain
- Add GitHub Variables (optional):
AWS_REGION
: AWS region (default: ap-southeast-2)ENABLE_WAF
: true/false (default: false)ENABLE_ROUTE53
: true/false (default: true)ENABLE_ACCESS_LOGS
: true/false (default: true)ENVIRONMENT
: dev/staging/prod (default: prod)PROJECT_NAME
: Project name for cost tracking (default: resume-website)
- Push to main branch to trigger deployment
Core Features (Always Enabled):
- ✅ S3 static website hosting with encryption
- ✅ CloudFront CDN with HTTP/2, HTTP/3, and gzip
- ✅ SSL/TLS certificate support (custom or CloudFront default)
- ✅ Origin Access Control (OAC) for security
- ✅ Custom error pages (404/403 → index.html)
- ✅ Automated cache invalidation
Optional Features (Configurable):
- 🔧 Route 53 DNS - Custom domain configuration (enabled by default)
- 🔧 WAF Protection - Rate limiting and common attack protection (disabled by default)
- 🔧 Access Logs - CloudFront and S3 access logging (enabled by default)
Cost Optimization:
- Deploy to cheaper regions (Melbourne/Sydney often more cost-effective than US)
- WAF disabled by default (saves ~$5-10/month, enable with
--enable-waf true
) - Route 53: ~$0.50/month per hosted zone (only needed with custom domains)
- Access Logs: Minimal storage costs for log files
Region Selection:
- ap-southeast-2 (Melbourne): Default, often cost-effective for Australian users
- us-east-1 (N. Virginia): Cheapest overall, but higher latency for Australian users
- us-west-2 (Oregon): Good balance of cost and latency for US users
- eu-west-1 (Ireland): Good for European users
Important: ACM certificates for CloudFront must be created in us-east-1 regardless of deployment region
- Chrome (recommended)
- Firefox
- Safari
- Edge
- Internet Explorer 11+
Data Protection:
- Personal data (
config.json
) is excluded from version control - Generated fallback file (
js/config-data.js
) is also excluded from git - Template code can be safely shared publicly
Security Considerations:
- Direct file access: Data embedded in JavaScript (viewable in source)
- Server deployment: Data loaded via secure JSON (preferred)
- Production tip: Remove
js/config-data.js
before AWS deployment for extra privacy
AWS Security:
- WAF protection against common attacks
- HTTPS-only with modern TLS
- S3 bucket encryption and access controls
┌─────────────┐ ┌──────────────┐ ┌─────────────┐
│ Route 53 │────│ CloudFront │────│ S3 │
│ DNS │ │ CDN │ │ Bucket │
└─────────────┘ └──────────────┘ └─────────────┘
│
┌──────────────┐
│ WAF │
│ Protection │
└──────────────┘
Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature
) - Commit your changes (
git commit -m 'Add some AmazingFeature'
) - Push to the branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
- Additional theme variations
- New deployment targets (Netlify, Vercel, etc.)
- Enhanced responsive design
- Additional customization options
- Performance optimizations
This project is licensed under the MIT License - see the LICENSE file for details.
- Built with modern web standards
- AWS best practices implementation
- Community-driven development
- Made with ❤️ for professional developers and architects
⭐ Star this repository if you found it helpful!
🔗 Links: