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
.env
files for environment variables - We use
dotenv-webpack
plugin to:- Load environment variables from
.env
files - Access these variables using
process.env
in 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
.env
file 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: '[email protected]',
// ... 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
.env
file
- 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:css
to 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