This is an Angular adaptation of the excellent Developer Portfolio project originally created by Abu Said in Next.js.
A modern, responsive, and customizable portfolio website built with Angular 19. Perfect for developers looking to showcase their work, skills, and professional journey.
- π± Fully Responsive Design
- π¨ Modern UI with Tailwind CSS
- π Dynamic Blog Integration with Dev.to API
- π§ Contact Form with EmailJS
- π Optimized Performance
- π SEO Friendly
- π Dark Mode Support
- π Analytics Ready
Before you begin, ensure you have the following installed:
- Node.js (v18 or higher)
- Angular CLI (v19 or higher)
- Git
-
Clone the repository
git clone https://github.com/JaveedIshaq/ng-dev-folio cd ng-dev-folio -
Install dependencies
npm install --legacy-peer-deps
We use npm install --legacy-peer-deps because Angular 19 has strict peer dependency requirements. This flag allows us to:
- Install packages with peer dependency conflicts
- Maintain compatibility with packages that haven't yet updated to support Angular 19
- Work around the dependency conflict between @angular-builders/custom-webpack and Angular 19
The custom-webpack.config.js is essential because:
- Angular 19 doesn't natively support
.envfiles for environment variables - We use
dotenv-webpackplugin to:- Load environment variables from
.envfiles - Access these variables using
process.envin our application - Keep sensitive information like API keys secure
- Support different configurations for development and production
- Load environment variables from
This setup allows us to maintain secure and flexible environment configurations while working with Angular 19's architecture.
-
Set up environment variables
- Create a
.envfile in the root directory - Copy contents from
.env.template - Fill in your values:
EMAILJS_PUBLIC_KEY=your_public_key EMAILJS_SERVICE_ID=your_service_id EMAILJS_TEMPLATE_ID=your_template_id
- Create a
-
Start development server
ng serve
-
View your portfolio Open http://localhost:4200 in your browser
Edit src/app/core/data/personal-info.ts:
export const personalInfo = {
name: 'Your Name',
title: 'Your Title',
email: 'your.email@example.com',
// ... other personal details
};Edit src/app/core/data/projects.ts:
export const projects = [
{
title: 'Project Name',
description: 'Project Description',
technologies: ['Angular', 'TypeScript', 'Tailwind'],
github: 'https://github.com/...',
demo: 'https://demo-link...'
},
// ... more projects
];- Get your Dev.to username
- Update
src/utils/data/personal-data.ts:export const personalData = { // ... other config devUsername: 'your-devto-username' };
- Create an EmailJS account
- Create an email template
- Get your credentials
- Add them to your
.envfile
- Main styles:
src/styles.css - Tailwind config:
tailwind.config.js - Component-specific styles:
src/app/components/*/*.css
- Components:
src/app/components/ - Data:
src/app/core/data/ - Assets:
src/assets/
-
Build the project
ng build --configuration production
-
Test the production build locally
npm install -g http-server http-server dist/ngdevfolio
- Install Vercel CLI:
npm i -g vercel - Run:
vercel - Follow the prompts
- Push to GitHub
- Connect repository in Netlify
- Configure build settings:
- Build command:
ng build --configuration production - Publish directory:
dist/ngdevfolio
- Build command:
-
EmailJS not working
- Check if environment variables are properly set
- Verify EmailJS template configuration
-
Blog posts not loading
- Confirm Dev.to username is correct
- Check network requests for API errors
-
Styling issues
- Run
npm run build:cssto rebuild Tailwind - Clear browser cache
- Run
- 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
This project is licensed under the MIT License - see the LICENSE file for details.
- Original Portfolio Design by Abu Said built with Next.js
- Angular Team for the amazing framework
- Tailwind CSS for the utility-first CSS framework
- EmailJS for the email service
- Dev.to for the blog integration capabilities
- Add support for multiple blog platforms
- Integrate with other services (e.g. Twitter, GitHub, etc.)
- Add more customization options
- Improve accessibility
- Add a feedback system
dev version: 1.0
Made with β€οΈ by Javeed Ishaq
