A modern, responsive, and customizable developer portfolio built with React, TypeScript, and Tailwind CSS. Features a beautiful design with dark mode support, animated backgrounds, and integration with GitHub and GitLab APIs.
Eshan Roy
- GitHub: @eshanized
- GitLab: @eshanized
- Email: [email protected]
- Website: snigdhaos.org
- π¨ Modern and clean design with animated gradients
- π Dark mode support
- π± Fully responsive for all devices
- β‘ Built with React, TypeScript, and Vite
- π― Integration with GitHub and GitLab APIs
- π Blog section with Dev.to and Medium integration
- π§ Contact form with EmailJS
- π SEO optimized
- π Easy deployment to GitHub/GitLab Pages
- Clone the repository
- Install dependencies:
npm install
- Start the development server:
npm run dev
Edit src/info.ts
to update your personal information:
export const developerInfo = {
name: "Your Name",
title: "Your Title",
email: "[email protected]",
location: "Your Location",
bio: "Your bio",
profileImage: {
source: "github", // 'github' | 'gitlab' | 'custom'
customUrl: "", // Only used when source is 'custom'
},
social: {
github: "yourusername",
gitlab: "yourusername",
devto: "yourusername",
medium: "@yourusername",
linkedin: "yourusername",
twitter: "yourusername",
},
skills: [
// Add your skills
],
experience: [
{
company: "Company Name",
position: "Your Position",
period: "2020 - Present",
description: "Your role description",
},
],
education: [
{
institution: "University Name",
degree: "Your Degree",
year: "Graduation Year",
description: "Description",
},
],
achievements: [
{
title: "Achievement Title",
description: "Achievement description",
icon: "award",
},
],
emailjs: {
serviceId: "YOUR_SERVICE_ID",
templateId: "YOUR_TEMPLATE_ID",
publicKey: "YOUR_PUBLIC_KEY",
},
};
The project uses Tailwind CSS for styling. You can customize the theme by editing tailwind.config.js
:
module.exports = {
content: ["./index.html", "./src/**/*.{js,ts,jsx,tsx}"],
darkMode: "class",
theme: {
extend: {
fontFamily: {
sans: ["Your Font", "sans-serif"],
},
colors: {
primary: "#your-color",
secondary: "#your-color",
},
},
},
plugins: [],
};
All components are located in the src/components
directory. Each component is well-documented and can be customized to match your needs.
The portfolio includes the following pages:
- Home (
/src/pages/Home.tsx
) - About (
/src/pages/About.tsx
) - Projects (
/src/pages/Projects.tsx
) - Articles (
/src/pages/Articles.tsx
) - Contact (
/src/pages/Contact.tsx
)
To enable the contact form:
- Create an account at EmailJS
- Create an email template
- Update the EmailJS configuration in
src/info.ts
:emailjs: { serviceId: "YOUR_SERVICE_ID", templateId: "YOUR_TEMPLATE_ID", publicKey: "YOUR_PUBLIC_KEY" }
The portfolio automatically fetches:
- Your GitHub repositories
- Your GitLab repositories
- Your Dev.to articles
- Your Medium articles
Make sure to update your usernames in src/info.ts
.
- Create a new repository on GitHub
- Push your code to the repository
- Configure GitHub Pages:
- Go to your repository settings
- Navigate to "Pages" section
- Under "Build and deployment":
- Source: GitHub Actions
- The included workflow will handle the rest
The deployment workflow will:
- Build your project
- Deploy to GitHub Pages
- Make your site available at
https://yourusername.github.io/repository-name
If you prefer manual deployment:
-
Update
vite.config.ts
:export default defineConfig({ base: "/your-repo-name/", // ... other config });
-
Build the project:
npm run build
-
Deploy using gh-pages:
npm install -D gh-pages npx gh-pages -d dist
- Create a new repository on GitLab
- Push your code to the repository
- The included
.gitlab-ci.yml
will automatically:- Build your project
- Deploy to GitLab Pages
- Make your site available at
https://yourusername.gitlab.io/repository-name
The included .gitlab-ci.yml
handles:
- Node.js setup
- Dependency installation
- Building the project
- Deploying to GitLab Pages
No additional configuration is needed - just push your code and GitLab CI will handle the rest.
If your deployment fails:
- Check the CI/CD pipeline logs
- Ensure the repository visibility is public or internal
- Verify GitLab Pages is enabled in your project settings
- Check that the
public
directory is being created correctly
For both platforms, if you're using environment variables:
-
Add them to the platform's secrets:
- GitHub: Repository Settings β Secrets and Variables β Actions
- GitLab: Settings β CI/CD β Variables
-
Reference them in the workflow files:
env: VITE_API_KEY: ${{ secrets.VITE_API_KEY }}
To use a custom domain:
- Go to repository settings
- Navigate to "Pages"
- Under "Custom domain":
- Enter your domain
- Save
- Add/update DNS records:
- A record pointing to GitHub Pages IP addresses
- CNAME record if using a subdomain
- Go to project settings
- Navigate to "Pages"
- Add your custom domain
- Verify domain ownership
- Update DNS records as instructed
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License - see the LICENSE file for details.