Untitled
Musfiq R. Farhan Portfolio - Complete Setup Guide
🎯 Project Overview
This is a professional portfolio and blog website for Musfiq R. Farhan, showcasing his multi-talented career as a Radio Jockey, actor, and content creator. The site is built with:
- Frontend: Pure HTML, CSS, and JavaScript (no frameworks)
- CMS: Decap CMS for blog management
- Hosting: GitHub Pages
- Domain: MusfiqrFarhan.blog (custom domain)
📋 What's Been Built
✅ Completed Components
Professional Homepage (
docs/index.html)- Hero section with call-to-action buttons
- About section with biography
- Career highlights (4 key areas)
- Portfolio/works section (3 featured projects)
- Blog section with latest posts
- Contact section with social links
- Responsive footer
Styling (
assets/css/style.css)- Modern, professional design
- Responsive grid layouts
- Smooth transitions and hover effects
- Mobile-first approach
- Color scheme: Blue (#1e40af), Amber (#f59e0b), Purple (#8b5cf6)
JavaScript (
assets/js/main.js)- Smooth scrolling navigation
- Active link highlighting
- Lazy image loading
- Scroll animations
- Mobile menu support
Decap CMS Admin (
docs/admin/)config.yml: CMS configurationindex.html: Admin interface- Collections for blog posts and projects
- Media upload support
Content Structure
_posts/: Blog posts in Jekyll format_pages/: Additional pagesassets/: Images, CSS, JavaScript_config.yml: Jekyll configuration
Documentation
README.md: Project overview and featuresSETUP_GUIDE.md: This file.gitignore: Git ignore rules
🚀 Deployment Steps
Step 1: Enable GitHub Pages
- Go to your repository: https://github.com/Sayadbayezid/MusfiqrFarhan
- Click Settings (top right)
- Scroll to Pages section (left sidebar)
- Under "Build and deployment":
- Select Deploy from a branch
- Choose branch: main
- Choose folder: /docs
- Click Save
Your site will be available at: https://sayadbayezid.github.io/MusfiqrFarhan/
Step 2: Configure Custom Domain
In repository Settings → Pages
Under "Custom domain":
- Enter:
musfiqrfarhan.blog - Click Save
- Enter:
GitHub will create a
CNAMEfile automaticallyUpdate DNS Records (with your domain registrar):
- Add an
Arecord pointing to GitHub Pages IP addresses:185.199.108.153185.199.109.153185.199.110.153185.199.111.153
OR use a
CNAMErecord:- Name:
www - Value:
sayadbayezid.github.io
- Add an
Wait 24-48 hours for DNS propagation
Enable HTTPS: Check "Enforce HTTPS" in Settings → Pages
Step 3: Set Up Decap CMS Authentication
Create GitHub OAuth App:
- Go to: https://github.com/settings/developers
- Click New OAuth App
- Fill in details:
- Application name:
Musfiq Portfolio CMS - Homepage URL:
https://musfiqrfarhan.blog - Authorization callback URL:
https://api.netlify.com/auth/done - Description:
Admin dashboard for blog management
- Application name:
- Click Register application
Save Credentials:
- Copy Client ID
- Generate and copy Client Secret (save immediately!)
Configure in Netlify:
- Go to: https://app.netlify.com
- Create new site or use existing
- Go to Site settings → Access & security → OAuth
- Click Install Provider
- Select GitHub
- Paste Client ID and Client Secret
- Click Save
Access Admin Panel:
- Navigate to:
https://musfiqrfarhan.blog/admin - Click "Login with GitHub"
- Authorize the application
- Start managing content!
- Navigate to:
📝 Content Management
Adding Blog Posts
Via Decap CMS (Recommended):
- Go to
https://musfiqrfarhan.blog/admin - Click Blog Posts
- Click New Blog Post
- Fill in:
- Title
- Publish Date
- Featured Image
- Description
- Body (Markdown)
- Tags
- Category
- Click Publish
Manually (via Git):
- Create file:
_posts/YYYY-MM-DD-post-title.md - Add frontmatter:
--- layout: post title: "Your Post Title" date: 2026-05-07 image: "/assets/images/uploads/image.jpg" category: "Radio" tags: ["tag1", "tag2"] --- - Write content in Markdown
- Commit and push to GitHub
Adding Projects
Via Decap CMS:
- Go to
https://musfiqrfarhan.blog/admin - Click Projects & Works
- Fill in project details
- Publish
Manually:
- Create file:
_pages/projects/project-name.md - Add similar frontmatter with project details
🎨 Customization
Change Colors
Edit assets/css/style.css - modify CSS variables:
:root {
--primary: #1e40af; /* Main blue */
--secondary: #f59e0b; /* Amber accent */
--accent: #8b5cf6; /* Purple highlight */
--text-dark: #1f2937; /* Dark text */
--text-light: #6b7280; /* Light gray text */
--bg-light: #f9fafb; /* Light background */
}
Update Social Links
Edit docs/index.html - find the contact section:
<a href="https://facebook.com/your-profile" class="social-link">f</a>
<a href="https://instagram.com/your-profile" class="social-link">📷</a>
Add New Sections
- Add HTML section in
docs/index.html - Add CSS styling in
assets/css/style.css - Add navigation link in header
- Commit and push
🔍 SEO & Analytics
Add Google Analytics
- Get your Google Analytics ID from Google Analytics
- Update
_config.yml:google_analytics: "G-XXXXXXXXXX" - Commit and push
Update Meta Tags
Edit docs/index.html - update Open Graph tags:
<meta property="og:title" content="Your Title">
<meta property="og:description" content="Your description">
<meta property="og:image" content="https://musfiqrfarhan.blog/assets/images/hero.jpg">
🐛 Troubleshooting
Site Not Loading
Problem: Getting 404 or blank page
Solution:
- Verify
/docsfolder is set as source in Settings → Pages - Check that
index.htmlexists indocs/folder - Clear browser cache (Ctrl+Shift+Delete)
- Hard refresh (Ctrl+F5)
Images Not Showing
Problem: Broken image links
Solution:
- Check image paths are relative to
docs/folder - Verify images exist in
assets/images/ - Check file extensions (.jpg, .png, etc.)
- Use correct path format:
../assets/images/filename.jpg
Admin Panel Not Loading
Problem: Decap CMS admin page blank
Solution:
- Check browser console for errors (F12)
- Verify
docs/admin/config.ymlexists - Check YAML syntax is valid
- Verify GitHub OAuth App is configured correctly
- Ensure Authorization callback URL is exactly:
https://api.netlify.com/auth/done
Authentication Failed
Problem: Can't log in to admin panel
Solution:
- Verify you have push access to the repository
- Check GitHub OAuth App credentials are correct
- Ensure Client Secret is valid (regenerate if needed)
- Verify Netlify OAuth provider is configured
- Try logging out and logging back in
📚 File Structure Reference
MusfiqrFarhan/
├── docs/ # GitHub Pages root
│ ├── index.html # Main portfolio page
│ ├── admin/
│ │ ├── config.yml # Decap CMS config
│ │ └── index.html # Admin interface
│ └── [other pages]
├── assets/
│ ├── css/
│ │ └── style.css # Main stylesheet
│ ├── js/
│ │ └── main.js # JavaScript
│ └── images/
│ ├── uploads/ # Media uploads
│ ├── hero.jpg
│ ├── about.jpg
│ ├── work1.jpg, work2.jpg, work3.jpg
│ └── blog1.jpg, blog2.jpg, blog3.jpg
├── _posts/ # Blog posts
│ └── 2026-05-07-welcome-to-my-portfolio.md
├── _pages/ # Additional pages
│ └── projects/
├── _config.yml # Jekyll config
├── README.md # Project readme
├── SETUP_GUIDE.md # This file
├── .gitignore # Git ignore rules
└── LICENSE # MIT License
🔗 Important Links
- Repository: https://github.com/Sayadbayezid/MusfiqrFarhan
- Live Site: https://musfiqrfarhan.blog
- Admin Panel: https://musfiqrfarhan.blog/admin
- GitHub Pages Docs: https://docs.github.com/en/pages
- Decap CMS Docs: https://decapcms.org/docs/
- Jekyll Docs: https://jekyllrb.com/docs/
📧 Support & Contact
For issues or questions:
- Create an issue on GitHub
- Contact: contact@musfiqrfarhan.blog
- Check the README.md for additional resources
✨ Next Steps
- Replace placeholder images with real photos
- Update social media links with actual profiles
- Customize colors to match brand identity
- Add more blog posts via Decap CMS
- Set up Google Analytics for traffic tracking
- Configure email contact form (optional)
- Add more portfolio projects as needed
📝 Notes
- The site is fully responsive and works on all devices
- All content is version controlled via Git
- Changes are automatically deployed to GitHub Pages
- Decap CMS provides an easy interface for non-technical users
- The site uses Jekyll for static site generation
- No database or backend server required
Created: May 7, 2026
Version: 1.0.0
Status: Ready for deployment