Added a skill rating to all skills

This commit is contained in:
Thom Werring 2023-10-27 18:30:05 +02:00
parent f37bcad333
commit 6d7b0220a1
4 changed files with 33 additions and 2 deletions

View file

@ -8,115 +8,136 @@ export default {
description: description:
"Efficiently manage Git repositories, handling pull/merge requests, and ensuring version control integrity.", "Efficiently manage Git repositories, handling pull/merge requests, and ensuring version control integrity.",
category: "Version control systems", category: "Version control systems",
stars: 4,
}, },
{ {
name: "NodeJs, TypeScript, and Javascript", name: "NodeJs, TypeScript, and Javascript",
description: "Develop and maintain scalable microservices using NodeJs, TypeScript, and Javascript.", description: "Develop and maintain scalable microservices using NodeJs, TypeScript, and Javascript.",
category: "Programming languages", category: "Programming languages",
stars: 5,
}, },
{ {
name: "Docker", name: "Docker",
description: description:
"Containerize and orchestrate microservices in local development environments using Docker.", "Containerize and orchestrate microservices in local development environments using Docker.",
category: "Containerization", category: "Containerization",
stars: 5,
}, },
{ {
name: "Kubernetes", name: "Kubernetes",
description: "Deploy and manage containerized microservices on AWS (EKS) using Kubernetes.", description: "Deploy and manage containerized microservices on AWS (EKS) using Kubernetes.",
category: "Containerization", category: "Containerization",
stars: 4,
}, },
{ {
name: "EKS", name: "EKS",
description: "Administer and optimize Elastic Kubernetes Service (EKS) on AWS.", description: "Administer and optimize Elastic Kubernetes Service (EKS) on AWS.",
category: "AWS", category: "AWS",
stars: 3,
}, },
{ {
name: "API Gateway", name: "API Gateway",
description: "Design, implement, and deploy cloud-based applications using API Gateway on AWS.", description: "Design, implement, and deploy cloud-based applications using API Gateway on AWS.",
category: "AWS", category: "AWS",
stars: 3,
}, },
{ {
name: "Lambda", name: "Lambda",
description: "Develop and deploy serverless cloud-based applications using Lambda on AWS.", description: "Develop and deploy serverless cloud-based applications using Lambda on AWS.",
category: "AWS", category: "AWS",
stars: 3,
}, },
{ {
name: "CloudWatch", name: "CloudWatch",
description: "Monitor and analyze cloud-based applications using CloudWatch on AWS.", description: "Monitor and analyze cloud-based applications using CloudWatch on AWS.",
category: "AWS", category: "AWS",
stars: 4,
}, },
{ {
name: "ElasticSearch, Logstash and Kibana (ELK Stack)", name: "ElasticSearch, Logstash and Kibana (ELK Stack)",
description: description:
"Extract valuable insights and generate comprehensive statistics from SaaS platform data using the ELK Stack.", "Extract valuable insights and generate comprehensive statistics from SaaS platform data using the ELK Stack.",
category: "Business Intelligence", category: "Business Intelligence",
stars: 3,
}, },
{ {
name: "CI/CD pipelines", name: "CI/CD pipelines",
description: "Automate testing, building, and deployment processes using CI/CD pipelines.", description: "Automate testing, building, and deployment processes using CI/CD pipelines.",
category: "DevOps", category: "DevOps",
stars: 5,
}, },
{ {
name: "Server Management", name: "Server Management",
description: "Configure, maintain, and troubleshoot hosting servers to ensure optimal performance.", description: "Configure, maintain, and troubleshoot hosting servers to ensure optimal performance.",
category: "DevOps", category: "DevOps",
stars: 5,
}, },
{ {
name: "Webhosting", name: "Webhosting",
description: "Provision and manage web hosting environments for websites and email services.", description: "Provision and manage web hosting environments for websites and email services.",
category: "DevOps", category: "DevOps",
stars: 3,
}, },
{ {
name: "Web development", name: "Web development",
description: "Design and develop custom WordPress websites using industry best practices.", description: "Design and develop custom WordPress websites using industry best practices.",
category: "Web development", category: "Web development",
stars: 2,
}, },
{ {
name: "PHP", name: "PHP",
description: "Build and maintain dynamic websites and applications using PHP Laravel framework.", description: "Build and maintain dynamic websites and applications using PHP Laravel framework.",
category: "Programming languages", category: "Programming languages",
stars: 4,
}, },
{ {
name: "One-on-ones", name: "One-on-ones",
description: description:
"Conduct regular one-on-one meetings with junior developers and interns to guide their professional growth.", "Conduct regular one-on-one meetings with junior developers and interns to guide their professional growth.",
category: "Team Management", category: "Team Management",
stars: 4,
}, },
{ {
name: "Scrum Master", name: "Scrum Master",
description: description:
"Facilitate Scrum meetings, manage sprint backlogs, refine user stories, and collaborate with the Product Owner.", "Facilitate Scrum meetings, manage sprint backlogs, refine user stories, and collaborate with the Product Owner.",
category: "Collaboration", category: "Collaboration",
stars: 2,
}, },
{ {
name: "Finances", name: "Finances",
description: description:
"Oversee financial operations, manage budgets, and ensure financial compliance for a student organization.", "Oversee financial operations, manage budgets, and ensure financial compliance for a student organization.",
category: "Finance", category: "Finance",
stars: 2,
}, },
{ {
name: "Event Organization", name: "Event Organization",
description: description:
"Plan, organize, and execute educational events for students, ensuring engaging and informative experiences.", "Plan, organize, and execute educational events for students, ensuring engaging and informative experiences.",
category: "Organization", category: "Organization",
stars: 3,
}, },
{ {
name: "Communication", name: "Communication",
description: description:
"Effectively communicate ideas and information both verbally and in writing, adapting communication style to suit the audience and purpose.", "Effectively communicate ideas and information both verbally and in writing, adapting communication style to suit the audience and purpose.",
category: "Collaboration", category: "Collaboration",
stars: 4,
}, },
{ {
name: "Problem-solving", name: "Problem-solving",
description: description:
"Apply analytical and creative thinking to identify, analyze, and resolve complex technical challenges, considering multiple perspectives and potential solutions.", "Apply analytical and creative thinking to identify, analyze, and resolve complex technical challenges, considering multiple perspectives and potential solutions.",
category: "Problem-solving", category: "Problem-solving",
stars: 5,
}, },
{ {
name: "Teamwork", name: "Teamwork",
description: description:
"Collaborate effectively with team members in a Scrum environment, sharing knowledge, providing constructive feedback, and contributing to a positive and productive team dynamic.", "Collaborate effectively with team members in a Scrum environment, sharing knowledge, providing constructive feedback, and contributing to a positive and productive team dynamic.",
category: "Collaboration", category: "Collaboration",
stars: 5,
}, },
] satisfies SkillType[], ] satisfies SkillType[],
}; };

View file

@ -15,16 +15,19 @@ describe("SkillsService", () => {
name: "Writing tests", name: "Writing tests",
description: "Writing tests", description: "Writing tests",
category: "Testing", category: "Testing",
stars: 5,
}, },
{ {
name: "TDD", name: "TDD",
description: "Test Driven Development", description: "Test Driven Development",
category: "Testing", category: "Testing",
stars: 5,
}, },
{ {
name: "OOP", name: "OOP",
description: "Object Orientated Programming", description: "Object Orientated Programming",
category: "Programming style", category: "Programming style",
stars: 5,
}, },
]); ]);

View file

@ -15,12 +15,14 @@ export class SkillsService {
getMany(filter?: Partial<SkillType>) { getMany(filter?: Partial<SkillType>) {
const filtersValues = Object.entries(filter ?? {}).map(([key, filterValue]) => [ const filtersValues = Object.entries(filter ?? {}).map(([key, filterValue]) => [
key, key,
new RegExp(filterValue, "i"), new RegExp(String(filterValue), "i"),
]) as Array<[keyof SkillType, RegExp]>; ]) as Array<[keyof SkillType, RegExp]>;
if (!filter || filtersValues.length === 0) { if (!filter || filtersValues.length === 0) {
return this.skills; return this.skills;
} }
return this.skills.filter((skill) => filtersValues.some(([key, filterValue]) => filterValue.test(skill[key]))); return this.skills.filter((skill) =>
filtersValues.some(([key, filterValue]) => filterValue.test(String(skill[key])))
);
} }
} }

View file

@ -1,10 +1,12 @@
import { ApiProperty } from "@nestjs/swagger"; import { ApiProperty } from "@nestjs/swagger";
import { DtoClass } from "@/common/dtoClass.factory"; import { DtoClass } from "@/common/dtoClass.factory";
type StarRating = 0 | 1 | 2 | 3 | 4 | 5;
export type SkillType = { export type SkillType = {
name: string; name: string;
category: string; category: string;
description: string; description: string;
stars: StarRating;
}; };
export class SkillDto extends DtoClass<SkillType, SkillDto>() implements SkillType { export class SkillDto extends DtoClass<SkillType, SkillDto>() implements SkillType {
@ -14,6 +16,8 @@ export class SkillDto extends DtoClass<SkillType, SkillDto>() implements SkillTy
readonly category: string; readonly category: string;
@ApiProperty() @ApiProperty()
readonly description: string; readonly description: string;
@ApiProperty()
readonly stars: StarRating;
constructor(skill: SkillType) { constructor(skill: SkillType) {
super(skill); super(skill);
@ -21,6 +25,7 @@ export class SkillDto extends DtoClass<SkillType, SkillDto>() implements SkillTy
name: skill.name, name: skill.name,
category: skill.category, category: skill.category,
descriptions: skill.description, descriptions: skill.description,
stars: skill.stars,
}); });
} }
} }