mirror of
https://github.com/NohamR/gitprofile.git
synced 2026-05-25 12:27:17 +00:00
Compare commits
3 Commits
dependabot
...
431-restru
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
00ceae9337 | ||
|
|
3ef0ca3a14 | ||
|
|
c0d9eb7aa9 |
@@ -3,11 +3,37 @@
|
|||||||
const config = {
|
const config = {
|
||||||
github: {
|
github: {
|
||||||
username: 'arifszn', // Your GitHub org/user name. (Required)
|
username: 'arifszn', // Your GitHub org/user name. (Required)
|
||||||
sortBy: 'stars', // stars | updated
|
},
|
||||||
limit: 10, // How many projects to display.
|
projects: {
|
||||||
exclude: {
|
github: {
|
||||||
forks: false, // Forked projects will not be displayed if set to true.
|
header: 'Github Projects',
|
||||||
projects: [], // These projects will not be displayed. example: ['my-project1', 'my-project2']
|
display: true, // Display GitHub projects?
|
||||||
|
sortBy: 'stars', // stars | updated
|
||||||
|
limit: 10, // How many projects to display.
|
||||||
|
exclude: {
|
||||||
|
forks: false, // Forked projects will not be displayed if set to true.
|
||||||
|
projects: [], // These projects will not be displayed. example: ['my-project1', 'my-project2']
|
||||||
|
},
|
||||||
|
},
|
||||||
|
external: {
|
||||||
|
header: 'External Projects',
|
||||||
|
display: true, // Display external projects?
|
||||||
|
projects: [
|
||||||
|
{
|
||||||
|
title: 'Project Name',
|
||||||
|
description:
|
||||||
|
'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed euismod, nunc ut.',
|
||||||
|
imageUrl: 'https://via.placeholder.com/250x250',
|
||||||
|
link: 'https://example.com',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Project Name',
|
||||||
|
description:
|
||||||
|
'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed euismod, nunc ut.',
|
||||||
|
imageUrl: 'https://via.placeholder.com/250x250',
|
||||||
|
link: 'https://example.com',
|
||||||
|
},
|
||||||
|
],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
social: {
|
social: {
|
||||||
@@ -87,23 +113,6 @@ const config = {
|
|||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
|
||||||
// To hide the `My Projects` section, keep it empty.
|
|
||||||
externalProjects: [
|
|
||||||
{
|
|
||||||
title: 'Project Name',
|
|
||||||
description:
|
|
||||||
'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed euismod, nunc ut.',
|
|
||||||
imageUrl: 'https://via.placeholder.com/250x250',
|
|
||||||
link: 'https://example.com',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: 'Project Name',
|
|
||||||
description:
|
|
||||||
'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed euismod, nunc ut.',
|
|
||||||
imageUrl: 'https://via.placeholder.com/250x250',
|
|
||||||
link: 'https://example.com',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
// Display blog posts from your medium or dev account. (Optional)
|
// Display blog posts from your medium or dev account. (Optional)
|
||||||
blog: {
|
blog: {
|
||||||
source: 'dev', // medium | dev
|
source: 'dev', // medium | dev
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import Skill from './skill';
|
|||||||
import Experience from './experience';
|
import Experience from './experience';
|
||||||
import Certification from './certification';
|
import Certification from './certification';
|
||||||
import Education from './education';
|
import Education from './education';
|
||||||
import Project from './project';
|
import GitHubProject from './github-project';
|
||||||
import Blog from './blog';
|
import Blog from './blog';
|
||||||
import Footer from './footer';
|
import Footer from './footer';
|
||||||
import {
|
import {
|
||||||
@@ -77,15 +77,15 @@ const GitProfile = ({ config }) => {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
sanitizedConfig.github.exclude.projects.forEach((project) => {
|
sanitizedConfig.projects.github.exclude.projects.forEach((project) => {
|
||||||
excludeRepo += `+-repo:${sanitizedConfig.github.username}/${project}`;
|
excludeRepo += `+-repo:${sanitizedConfig.github.username}/${project}`;
|
||||||
});
|
});
|
||||||
|
|
||||||
let query = `user:${
|
let query = `user:${
|
||||||
sanitizedConfig.github.username
|
sanitizedConfig.github.username
|
||||||
}+fork:${!sanitizedConfig.github.exclude.forks}${excludeRepo}`;
|
}+fork:${!sanitizedConfig.projects.github.exclude.forks}${excludeRepo}`;
|
||||||
|
|
||||||
let url = `https://api.github.com/search/repositories?q=${query}&sort=${sanitizedConfig.github.sortBy}&per_page=${sanitizedConfig.github.limit}&type=Repositories`;
|
let url = `https://api.github.com/search/repositories?q=${query}&sort=${sanitizedConfig.projects.github.sortBy}&per_page=${sanitizedConfig.projects.github.limit}&type=Repositories`;
|
||||||
|
|
||||||
axios
|
axios
|
||||||
.get(url, {
|
.get(url, {
|
||||||
@@ -197,7 +197,7 @@ const GitProfile = ({ config }) => {
|
|||||||
</div>
|
</div>
|
||||||
<div className="lg:col-span-2 col-span-1">
|
<div className="lg:col-span-2 col-span-1">
|
||||||
<div className="grid grid-cols-1 gap-6">
|
<div className="grid grid-cols-1 gap-6">
|
||||||
<Project
|
<GitHubProject
|
||||||
repo={repo}
|
repo={repo}
|
||||||
loading={loading}
|
loading={loading}
|
||||||
github={sanitizedConfig.github}
|
github={sanitizedConfig.github}
|
||||||
@@ -236,13 +236,31 @@ GitProfile.propTypes = {
|
|||||||
config: PropTypes.shape({
|
config: PropTypes.shape({
|
||||||
github: PropTypes.shape({
|
github: PropTypes.shape({
|
||||||
username: PropTypes.string.isRequired,
|
username: PropTypes.string.isRequired,
|
||||||
sortBy: PropTypes.oneOf(['stars', 'updated']),
|
|
||||||
limit: PropTypes.number,
|
|
||||||
exclude: PropTypes.shape({
|
|
||||||
forks: PropTypes.bool,
|
|
||||||
projects: PropTypes.array,
|
|
||||||
}),
|
|
||||||
}).isRequired,
|
}).isRequired,
|
||||||
|
projects: {
|
||||||
|
github: PropTypes.shape({
|
||||||
|
header: PropTypes.string,
|
||||||
|
display: PropTypes.bool,
|
||||||
|
sortBy: PropTypes.oneOf(['stars', 'updated']),
|
||||||
|
limit: PropTypes.number,
|
||||||
|
exclude: PropTypes.shape({
|
||||||
|
forks: PropTypes.bool,
|
||||||
|
projects: PropTypes.array,
|
||||||
|
}),
|
||||||
|
}),
|
||||||
|
projects: PropTypes.shape({
|
||||||
|
header: PropTypes.string,
|
||||||
|
display: PropTypes.bool,
|
||||||
|
projects: PropTypes.arrayOf(
|
||||||
|
PropTypes.shape({
|
||||||
|
title: PropTypes.string.isRequired,
|
||||||
|
description: PropTypes.string.isRequired,
|
||||||
|
link: PropTypes.string.isRequired,
|
||||||
|
imageUrl: PropTypes.string,
|
||||||
|
})
|
||||||
|
),
|
||||||
|
}),
|
||||||
|
},
|
||||||
social: PropTypes.shape({
|
social: PropTypes.shape({
|
||||||
linkedin: PropTypes.string,
|
linkedin: PropTypes.string,
|
||||||
twitter: PropTypes.string,
|
twitter: PropTypes.string,
|
||||||
@@ -265,14 +283,6 @@ GitProfile.propTypes = {
|
|||||||
fileUrl: PropTypes.string,
|
fileUrl: PropTypes.string,
|
||||||
}),
|
}),
|
||||||
skills: PropTypes.array,
|
skills: PropTypes.array,
|
||||||
externalProjects: PropTypes.arrayOf(
|
|
||||||
PropTypes.shape({
|
|
||||||
title: PropTypes.string.isRequired,
|
|
||||||
description: PropTypes.string.isRequired,
|
|
||||||
link: PropTypes.string.isRequired,
|
|
||||||
imageUrl: PropTypes.string,
|
|
||||||
})
|
|
||||||
),
|
|
||||||
experiences: PropTypes.arrayOf(
|
experiences: PropTypes.arrayOf(
|
||||||
PropTypes.shape({
|
PropTypes.shape({
|
||||||
company: PropTypes.string,
|
company: PropTypes.string,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import { AiOutlineFork, AiOutlineStar } from 'react-icons/ai';
|
|||||||
import { MdInsertLink } from 'react-icons/md';
|
import { MdInsertLink } from 'react-icons/md';
|
||||||
import { ga, languageColor, skeleton } from '../../helpers/utils';
|
import { ga, languageColor, skeleton } from '../../helpers/utils';
|
||||||
|
|
||||||
const Project = ({ repo, loading, github, googleAnalytics }) => {
|
const GitHubProject = ({ repo, loading, github, googleAnalytics }) => {
|
||||||
if (!loading && Array.isArray(repo) && repo.length === 0) {
|
if (!loading && Array.isArray(repo) && repo.length === 0) {
|
||||||
return <></>;
|
return <></>;
|
||||||
}
|
}
|
||||||
@@ -166,11 +166,11 @@ const Project = ({ repo, loading, github, googleAnalytics }) => {
|
|||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
Project.propTypes = {
|
GitHubProject.propTypes = {
|
||||||
repo: PropTypes.array,
|
repo: PropTypes.array,
|
||||||
loading: PropTypes.bool.isRequired,
|
loading: PropTypes.bool.isRequired,
|
||||||
github: PropTypes.object.isRequired,
|
github: PropTypes.object.isRequired,
|
||||||
googleAnalytics: PropTypes.object.isRequired,
|
googleAnalytics: PropTypes.object.isRequired,
|
||||||
};
|
};
|
||||||
|
|
||||||
export default Project;
|
export default GitHubProject;
|
||||||
@@ -137,11 +137,22 @@ export const sanitizeConfig = (config) => {
|
|||||||
return {
|
return {
|
||||||
github: {
|
github: {
|
||||||
username: config?.github?.username || '',
|
username: config?.github?.username || '',
|
||||||
sortBy: config?.github?.sortBy || 'stars',
|
},
|
||||||
limit: config?.github?.limit || 8,
|
projects: {
|
||||||
exclude: {
|
github: {
|
||||||
forks: config?.github?.exclude?.forks || false,
|
header: config?.projects?.github?.header || 'GitHub Projects',
|
||||||
projects: config?.github?.exclude?.projects || [],
|
display: config?.projects?.github?.display || true,
|
||||||
|
sortBy: config?.projects?.github?.sortBy || 'stars',
|
||||||
|
limit: config?.projects?.github?.limit || 8,
|
||||||
|
exclude: {
|
||||||
|
forks: config?.projects?.github?.exclude?.forks || false,
|
||||||
|
projects: config?.projects?.github?.exclude?.projects || [],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
external: {
|
||||||
|
header: config?.projects?.external?.header || 'External Projects',
|
||||||
|
display: config?.projects?.external?.display || true,
|
||||||
|
projects: config?.projects?.external?.projects || [],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
social: {
|
social: {
|
||||||
@@ -166,7 +177,6 @@ export const sanitizeConfig = (config) => {
|
|||||||
fileUrl: config?.resume?.fileUrl || '',
|
fileUrl: config?.resume?.fileUrl || '',
|
||||||
},
|
},
|
||||||
skills: config?.skills || [],
|
skills: config?.skills || [],
|
||||||
externalProjects: config?.externalProjects || [],
|
|
||||||
experiences: config?.experiences || [],
|
experiences: config?.experiences || [],
|
||||||
certifications: config?.certifications || [],
|
certifications: config?.certifications || [],
|
||||||
education: config?.education || [],
|
education: config?.education || [],
|
||||||
|
|||||||
81
types/index.d.ts
vendored
81
types/index.d.ts
vendored
@@ -9,32 +9,63 @@ export interface Github {
|
|||||||
* GitHub org/user name
|
* GitHub org/user name
|
||||||
*/
|
*/
|
||||||
username: string;
|
username: string;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
export interface Projects {
|
||||||
* stars | updated
|
github: {
|
||||||
*/
|
|
||||||
sortBy?: string;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* How many projects to display
|
|
||||||
*/
|
|
||||||
limit?: number;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Exclude projects option
|
|
||||||
*/
|
|
||||||
exclude?: {
|
|
||||||
/**
|
/**
|
||||||
* Forked projects will not be displayed if set to true
|
* Header Title
|
||||||
*/
|
*/
|
||||||
forks?: boolean;
|
header?: string;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* These projects will not be displayed
|
* Display GitHub projects?
|
||||||
*
|
|
||||||
* example: ['my-project1', 'my-project2']
|
|
||||||
*/
|
*/
|
||||||
projects?: Array<string>;
|
display?: boolean;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* stars | updated
|
||||||
|
*/
|
||||||
|
sortBy?: string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* How many projects to display
|
||||||
|
*/
|
||||||
|
limit?: number;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Exclude projects option
|
||||||
|
*/
|
||||||
|
exclude?: {
|
||||||
|
/**
|
||||||
|
* Forked projects will not be displayed if set to true
|
||||||
|
*/
|
||||||
|
forks?: boolean;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* These projects will not be displayed
|
||||||
|
*
|
||||||
|
* example: ['my-project1', 'my-project2']
|
||||||
|
*/
|
||||||
|
projects?: Array<string>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
external: {
|
||||||
|
/**
|
||||||
|
* Header Title
|
||||||
|
*/
|
||||||
|
header?: string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Display external projects?
|
||||||
|
*/
|
||||||
|
display?: boolean;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* External Projects
|
||||||
|
*/
|
||||||
|
projects?: Array<ExternalProjects>;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -265,6 +296,11 @@ export interface Config {
|
|||||||
*/
|
*/
|
||||||
github: Github;
|
github: Github;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Projects
|
||||||
|
*/
|
||||||
|
projects?: Projects;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Social links
|
* Social links
|
||||||
*/
|
*/
|
||||||
@@ -285,11 +321,6 @@ export interface Config {
|
|||||||
*/
|
*/
|
||||||
experiences?: Array<Experience>;
|
experiences?: Array<Experience>;
|
||||||
|
|
||||||
/**
|
|
||||||
* External Projects
|
|
||||||
*/
|
|
||||||
externalProjects?: Array<ExternalProjects>;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Certifications list
|
* Certifications list
|
||||||
*/
|
*/
|
||||||
|
|||||||
Reference in New Issue
Block a user