A high-performance, aesthetically pleasing personal portfolio for a Full Stack Developer and Software Engineer. This project features a modern dark-themed UI, an interactive AI assistant powered by Google Gemini, and a built-in content management system that syncs directly with GitHub.
- 🤖 AI Assistant: Integrated Gemini 2.5 Flash API that acts as a personal agent to answer questions about skills, projects, and background.
- 🛠️ Built-in CMS: Manage your projects and blog posts directly from the UI with full CRUD (Create, Read, Update, Delete) capabilities.
- 🔄 GitHub Sync: A unique feature that allows you to "Commit and Push" your UI changes back to your GitHub repository using the REST API.
- 📄 Dynamic CV Generation: One-click PDF resume generation using
jsPDFwith a professional layout. - 🌓 Dark/Light Mode: Fully responsive theme switching with a smooth star-background transition for dark mode.
- 📧 Contact System: Real-time email notifications via
EmailJS. - 📱 Responsive Design: Optimized for all devices using Tailwind CSS and mobile-first principles.
- Frontend: React 19, TypeScript, Vite
- Styling: Tailwind CSS, Lucide React (Icons)
- AI: Google Gemini API (@google/genai)
- Persistence: LocalStorage + GitHub REST API
- Deployment: GitHub Actions + GitHub Pages
- Utilities: EmailJS, jsPDF
- Node.js (v18+)
- npm or yarn
- A Google Gemini API Key (Get one here)
-
Clone the repository:
git clone https://github.com/Muler8905/portfolio.git cd portfolio -
Install dependencies:
npm install
-
Environment Setup: Create a
.envfile in the root directory:API_KEY=your_gemini_api_key_here
-
Run development server:
npm run dev
This project is pre-configured for GitHub Pages via GitHub Actions.
- Go to your GitHub Repository Settings > Secrets and variables > Actions.
- Add a New repository secret:
- Name:
API_KEY - Value: Your Gemini API Key.
- Name:
- Push your code to the
mainbranch. - The workflow in
.github/workflows/deploy.ymlwill automatically build and deploy to thegh-pagesbranch.
To make updates to your live site without touching code:
- Navigate to the Projects or Blog page.
- Add/Edit your content.
- Click the "Push to GitHub" button.
- Enter your GitHub Username, Repo Name, and a Personal Access Token (with
reposcope). - The app will commit the updated JSON data to your repository, triggering a new build automatically!
Muluken Ugamo
- 📧 Email: mulukenugamo8@gmail.com
- 📱 Phone: +251-900-632-624
✈️ Telegram: @Muler_soft- 🐙 GitHub: Muler8905
Built with ❤️ and AI integration.