+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -135,10 +161,18 @@
+
+
+
+
+
+
+
+
@@ -167,6 +201,9 @@
+
+
+
1660658552230
@@ -239,4 +276,7 @@
+
+
+
\ No newline at end of file
diff --git a/README.md b/README.md
index bb82315..5de77df 100644
--- a/README.md
+++ b/README.md
@@ -1,16 +1,18 @@
-
+
+
+
+
+
## 🚀 About Me
-I'm a passionate developer from 🇫🇷 **Albi, France**.
+I'm a passionate developer from 🇫🇷 **Pau, France**.
-## 🔗 Links
-[](https://lucasvbr.github.io/links/?portfolio)
+## 🔗 Social Links
[](https://www.linkedin.com/in/lucasvbr)
[](https://www.freecodecamp.org/LucasVbr)
[](https://openclassrooms.com/fr/members/97j9zltv6225)
[](https://exercism.org/profiles/LucasVbr)
-
## 🛠Skills


@@ -18,18 +20,18 @@ I'm a passionate developer from 🇫🇷 **Albi, France**.



-
+

-
+


-
+





-
+



@@ -38,13 +40,12 @@ I'm a passionate developer from 🇫🇷 **Albi, France**.



-
+

-
---
-
+
\ No newline at end of file
+
\ No newline at end of file
diff --git a/assets/banner.svg b/assets/banner.svg
new file mode 100644
index 0000000..8709496
--- /dev/null
+++ b/assets/banner.svg
@@ -0,0 +1,223 @@
+
\ No newline at end of file
diff --git a/components/ImageComponent.ts b/components/ImageComponent.ts
deleted file mode 100644
index ffbcdc9..0000000
--- a/components/ImageComponent.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-const ImageComponent = (label: string, url: URL) => ``;
-
-export default ImageComponent
\ No newline at end of file
diff --git a/components/LinkComponent.ts b/components/LinkComponent.ts
deleted file mode 100644
index c22d25a..0000000
--- a/components/LinkComponent.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-const LinkComponent = (label: string, url: string) => `[${label}](${url})`;
-
-export default LinkComponent;
\ No newline at end of file
diff --git a/config.yaml b/config.yaml
index 0062615..ca25801 100644
--- a/config.yaml
+++ b/config.yaml
@@ -1,128 +1,107 @@
-file:
- template: "template.njk"
- output: "README.md"
+user: "LucasVbr"
-view:
- userName: "LucasVbr"
+socials:
+# - name: "My Portfolio"
+# url: "https://lucasvbr.github.io/portfolio"
+# img: "https://img.shields.io/static/v1?style=for-the-badge&label=+&logoColor=white&message=My+Portfolio&logo=ko-fi&color=000"
- banner:
- type: "glitch"
- text1: "Hi I'm Lucà s👋"
- width: 1000
- height: 400
+ - name: "Linkedin"
+ url: "https://www.linkedin.com/in/lucasvbr"
+ img: "https://img.shields.io/static/v1?style=for-the-badge&label=+&logoColor=white&message=Linkedin&color=0e76a8&logo=linkedin"
- about: "I'm a passionate developer from 🇫🇷 **Albi, France**."
+ - name: "FreeCodeCamp"
+ url: "https://www.freecodecamp.org/LucasVbr"
+ img: "https://img.shields.io/static/v1?style=for-the-badge&label=+&logoColor=white&message=FreeCodeCamp&color=0a0a23&logo=freecodecamp"
- links:
- - label:
- message: "My Portfolio"
- logo: "ko-fi"
- url: "https://lucasvbr.github.io/links/?portfolio"
+ - name: "OpenClassRooms"
+ url: "https://openclassrooms.com/fr/members/97j9zltv6225"
+ img: "https://img.shields.io/static/v1?style=for-the-badge&label=+&logoColor=white&message=OpenClassRooms&color=7451eb&logo=openclassrooms"
- - label:
- message: "Linkedin"
- color: "0e76a8"
- url: "https://www.linkedin.com/in/lucasvbr"
+ - name: "Exercism"
+ url: "https://exercism.org/profiles/LucasVbr"
+ img: "https://img.shields.io/static/v1?style=for-the-badge&label=+&logoColor=white&message=Exercism&color=2e57e8&logo=exercism"
- - label:
- message: "FreeCodeCamp"
- color: "0a0a23"
- url: "https://www.freecodecamp.org/LucasVbr"
+skills:
+ - name: "Android"
+ url: "https://img.shields.io/static/v1?style=flat&label=+&logoColor=white&message=Android&color=3DDC84&logo=android"
- - label:
- message: "OpenClassRooms"
- color: "7451eb"
- url: "https://openclassrooms.com/fr/members/97j9zltv6225"
+ - name: "Angular"
+ url: "https://img.shields.io/static/v1?style=flat&label=+&logoColor=white&message=Angular&color=DD0031&logo=angular"
- - label:
- message: "Exercism"
- color: "2e57e8"
- url: "https://exercism.org/profiles/LucasVbr"
+ - name: "Bootstrap"
+ url: "https://img.shields.io/static/v1?style=flat&label=+&logoColor=white&message=Bootstrap&color=7952B3&logo=bootstrap"
- skills:
- - message: "Android"
- color: "3DDC84"
+ - name: "Bulma"
+ url: "https://img.shields.io/static/v1?style=flat&label=+&logoColor=white&message=Bulma&color=00D1B2&logo=bulma"
- - message: "Angular"
- color: "DD0031"
+ - name: "C"
+ url: "https://img.shields.io/static/v1?style=flat&label=+&logoColor=white&message=C&color=A8B9CC&logo=c"
- - message: "Bootstrap"
- color: "7952B3"
+ - name: "CSS3"
+ url: "https://img.shields.io/static/v1?style=flat&label=+&logoColor=white&message=CSS3&color=1572B6&logo=css3"
- - message: "Bulma"
- color: "00D1B2"
+ - name: "Deno"
+ url: "https://img.shields.io/static/v1?style=flat&label=+&logoColor=white&message=Deno&color=black&logo=deno"
- - message: "C"
- color: "A8B9CC"
+ - name: "Docker"
+ url: "https://img.shields.io/static/v1?style=flat&label=+&logoColor=white&message=Docker&color=2496ED&logo=docker"
- - message: "CSS3"
- color: "1572B6"
+ - name: "Express"
+ url: "https://img.shields.io/static/v1?style=flat&label=+&logoColor=white&message=Express&color=black&logo=express"
- - message: "Deno"
+ - name: "Figma"
+ url: "https://img.shields.io/static/v1?style=flat&label=+&logoColor=white&message=Figma&color=F24E1E&logo=figma"
- - message: "Docker"
- color: "2496ED"
+ - name: "Git"
+ url: "https://img.shields.io/static/v1?style=flat&label=+&logoColor=white&message=Git&color=F05032&logo=git"
- - message: "Express"
+ - name: "GNU Bash"
+ url: "https://img.shields.io/static/v1?style=flat&label=+&logoColor=white&message=GNU%20Bash&color=4EAA25&logo=gnu-bash"
- - message: "Figma"
- color: "F24E1E"
+ - name: "HTML5"
+ url: "https://img.shields.io/static/v1?style=flat&label=+&logoColor=white&message=HTML5&color=E34F26&logo=html5"
- - message: "Git"
- color: "F05032"
+ - name: "JavaScript"
+ url: "https://img.shields.io/static/v1?style=flat&label=+&logoColor=white&message=JavaScript&color=F7DF1E&logo=javascript"
- - message: "GNU Bash"
- color: "4EAA25"
+ - name: "MariaDB"
+ url: "https://img.shields.io/static/v1?style=flat&label=+&logoColor=white&message=MariaDB&color=003545&logo=mariadb"
- - message: "HTML5"
- color: "E34F26"
+ - name: "MongoDB"
+ url: "https://img.shields.io/static/v1?style=flat&label=+&logoColor=white&message=MongoDB&color=47A248&logo=mongodb"
- - message: "JavaScript"
- color: "F7DF1E"
+ - name: "MySQL"
+ url: "https://img.shields.io/static/v1?style=flat&label=+&logoColor=white&message=MySQL&color=4479A1&logo=mysql"
- - message: "MariaDB"
- color: "003545"
+ - name: "Node.js"
+ url: "https://img.shields.io/static/v1?style=flat&label=+&logoColor=white&message=Node.js&color=339933&logo=node.js"
- - message: "MongoDB"
- color: "47A248"
+ - name: "Nunjucks"
+ url: "https://img.shields.io/static/v1?style=flat&label=+&logoColor=white&message=Nunjucks&color=1C4913&logo=nunjucks"
- - message: "MySQL"
- color: "4479A1"
+ - name: "OCaml"
+ url: "https://img.shields.io/static/v1?style=flat&label=+&logoColor=white&message=OCaml&color=EC6813&logo=ocaml"
- - message: "Node.js"
- color: "339933"
- logo: "nodedotjs"
+ - name: "PHP"
+ url: "https://img.shields.io/static/v1?style=flat&label=+&logoColor=white&message=PHP&color=777BB4&logo=php"
- - message: "Nunjucks"
- color: "1C4913"
+ - name: "PostgreSQL"
+ url: "https://img.shields.io/static/v1?style=flat&label=+&logoColor=white&message=PostgreSQL&color=4169E1&logo=postgresql"
- - message: "OCaml"
- color: "EC6813"
+ - name: "Pug"
+ url: "https://img.shields.io/static/v1?style=flat&label=+&logoColor=white&message=Pug&color=A86454&logo=pug"
- - message: "PHP"
- color: "777BB4"
+ - name: "Python"
+ url: "https://img.shields.io/static/v1?style=flat&label=+&logoColor=white&message=Python&color=3776AB&logo=python"
- - message: "PostgreSQL"
- color: "4169E1"
+ - name: "React"
+ url: "https://img.shields.io/static/v1?style=flat&label=+&logoColor=white&message=React&color=61DAFB&logo=react"
- - message: "Pug"
- color: "A86454"
+ - name: "SQLite"
+ url: "https://img.shields.io/static/v1?style=flat&label=+&logoColor=white&message=SQLite&color=003B57&logo=sqlite"
- - message: "Python"
- color: "3776AB"
+ - name: "Symfony"
+ url: "https://img.shields.io/static/v1?style=flat&label=+&logoColor=white&message=Symfony&color=black&logo=symfony"
- - message: "React"
- color: "61DAFB"
-
- - message: "SQLite"
- color: "003B57"
-
- - message: "Symfony"
-
- - message: "TypeScript"
- color: "3178C6"
-
- footer:
- - ""
- - ""
- - ""
\ No newline at end of file
+ - name: "TypeScript"
+ url: "https://img.shields.io/static/v1?style=flat&label=+&logoColor=white&message=TypeScript&color=3178C6&logo=typescript"
diff --git a/main.py b/main.py
new file mode 100644
index 0000000..903b851
--- /dev/null
+++ b/main.py
@@ -0,0 +1,19 @@
+from src.config import load_data
+from src.template import load_template
+
+CONFIG_FILE = 'config.yaml'
+TEMPLATE_FILE = 'template.md'
+OUTPUT_FILE = 'README.md'
+
+if __name__ == '__main__':
+ data = load_data(CONFIG_FILE)
+ template = load_template(TEMPLATE_FILE)
+
+ # Add data to template
+ result = template.format(**data)
+
+ # Generate README file
+ with open(OUTPUT_FILE, 'w') as readme_file:
+ readme_file.write(result)
+
+ print(f"{OUTPUT_FILE} generated successfully! 🎉")
diff --git a/main.ts b/main.ts
deleted file mode 100644
index f630d6a..0000000
--- a/main.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-import {parse} from 'https://deno.land/std@0.82.0/encoding/yaml.ts';
-import nunjucks from 'https://deno.land/x/nunjucks@3.2.3-2/mod.js';
-import makeContext from './src/Context.ts';
-import type ConfigModel from './models/ConfigModel.ts';
-
-// Load Config file
-const config: ConfigModel = parse(await Deno.readTextFile('config.yaml')) as ConfigModel;
-const context = makeContext(config.view)
-
-// Render
-nunjucks.configure('views/', {autoescape: true});
-nunjucks.render(config.file.template, context, (err, res) => {
- if (err) return console.error(err);
-
- Deno.writeTextFile(config.file.output, res ?? '')
- .then(() => console.info(`[INFO] ${config.file.output} successfully generated`))
- .catch(err => console.error(err));
-});
\ No newline at end of file
diff --git a/models/BadgeModel.ts b/models/BadgeModel.ts
deleted file mode 100644
index e722f07..0000000
--- a/models/BadgeModel.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-type BadgeModel = {
- label?: string,
- message?: string,
- color?: string,
- logo?: string,
- style: "plastic" | "flat" | "flat-square" | "for-the-badge" | "social",
- logoColor?: string,
- logoWidth?: number,
- link?: string,
- labelColor?: string,
- cacheSeconds?: number,
-}
-export default BadgeModel;
\ No newline at end of file
diff --git a/models/BannerModel.ts b/models/BannerModel.ts
deleted file mode 100644
index d72058e..0000000
--- a/models/BannerModel.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-type BannerModel = {
- text1: string,
- text2?: string,
- type: "origin" | "textBox" | "glitch" | "luminance" | "typeWriter" | "rainbow",
- width: number,
- height: number,
-}
-
-export default BannerModel;
\ No newline at end of file
diff --git a/models/ConfigModel.ts b/models/ConfigModel.ts
deleted file mode 100644
index b21793d..0000000
--- a/models/ConfigModel.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import type BannerModel from './BannerModel.ts';
-import type LinkModel from './LinkModel.ts';
-import type BadgeModel from './BadgeModel.ts';
-
-type ConfigModel = {
- file: {
- template: string,
- output: string
- },
- view: {
- userName: string,
- banner: BannerModel,
- about: string,
- links: LinkModel[],
- skills: BadgeModel[],
- footer: string[]
- }
-}
-
-export default ConfigModel;
\ No newline at end of file
diff --git a/models/LinkModel.ts b/models/LinkModel.ts
deleted file mode 100644
index 81e80cf..0000000
--- a/models/LinkModel.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-import BadgeModel from './BadgeModel.ts';
-
-type LinkModel = {
- label: BadgeModel,
- url: string
-}
-
-export default LinkModel
\ No newline at end of file
diff --git a/requirements b/requirements
new file mode 100644
index 0000000..5e4f91a
--- /dev/null
+++ b/requirements
@@ -0,0 +1,3 @@
+pyyaml
+json
+requests
\ No newline at end of file
diff --git a/src/Banner.ts b/src/Banner.ts
deleted file mode 100644
index 4f81a34..0000000
--- a/src/Banner.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-import ImageComponent from '../components/ImageComponent.ts';
-import type BannerModel from '../models/BannerModel.ts';
-import BannerUrlBuilder from './url_builder/BannerUrlBuilder.ts';
-
-export default class Banner {
-
- constructor(private model: BannerModel) {
- };
-
- toString(): string {
- const url = new BannerUrlBuilder()
- .setParameters({...this.model})
- .build()
- ;
-
- return ImageComponent(this.model.text1, url);
- }
-}
\ No newline at end of file
diff --git a/src/Context.ts b/src/Context.ts
deleted file mode 100644
index f5cacb3..0000000
--- a/src/Context.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-import Skill from './Skill.ts';
-import Banner from './Banner.ts';
-import Link from './Link.ts';
-
-export default function makeContext(viewConfig) {
- return {
- ...viewConfig,
- banner: new Banner(viewConfig.banner).toString(),
- links: viewConfig.links.map(link => (new Link(link)).toString()),
- skills: viewConfig.skills.map(skill => (new Skill(skill)).toString()),
- }
-}
\ No newline at end of file
diff --git a/src/Link.ts b/src/Link.ts
deleted file mode 100644
index 9e1aa96..0000000
--- a/src/Link.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-import BadgeUrlBuilder from './url_builder/BadgeUrlBuilder.ts';
-import ImageComponent from '../components/ImageComponent.ts';
-import LinkModel from '../models/LinkModel.ts';
-import LinkComponent from '../components/LinkComponent.ts';
-
-export default class Link {
-
- constructor(private model: LinkModel) {}
-
- handleLabel() {
- const {label: badge} = this.model;
- const defaultLogo = badge.message.toLowerCase().replace(/\s+/g, '')
-
- const url = new BadgeUrlBuilder()
- .setParameters({
- ...badge,
- style: "for-the-badge",
- logo: badge.logo ?? defaultLogo,
- color: badge.color ?? '000',
- },
- )
- .build()
- ;
-
- return ImageComponent(badge.message, url);
- }
-
- toString(): string {
- const label = this.handleLabel().toString()
- return LinkComponent(label, this.model.url).toString()
- }
-}
\ No newline at end of file
diff --git a/src/Skill.ts b/src/Skill.ts
deleted file mode 100644
index 0c2846a..0000000
--- a/src/Skill.ts
+++ /dev/null
@@ -1,24 +0,0 @@
-import BadgeUrlBuilder from './url_builder/BadgeUrlBuilder.ts';
-import ImageComponent from '../components/ImageComponent.ts';
-import type SkillModel from '../models/SkillModel.ts';
-
-export default class Skill {
-
- constructor(private model: SkillModel) {};
-
- toString(): string {
- const defaultLogo = this.model.message.toLowerCase().replace(/\s+/g, '');
-
- const url = new BadgeUrlBuilder()
- .setParameters({
- ...this.model,
- color: this.model.color ?? '000',
- logo: this.model.logo ?? defaultLogo
- },
- )
- .build()
- ;
-
- return ImageComponent(this.model.message, url);
- }
-}
\ No newline at end of file
diff --git a/src/config.py b/src/config.py
new file mode 100644
index 0000000..997c641
--- /dev/null
+++ b/src/config.py
@@ -0,0 +1,80 @@
+import yaml
+
+from src.model.skill_list import SkillList
+import requests
+
+from src.model.social_list import SocialList
+
+
+def load_data(config_file_path: str) -> dict:
+ """Load data from config file and return a dict"""
+ config_data_builder = ConfigDataBuilder(config_file_path)
+ return (config_data_builder
+ .load_config_file()
+ .load_user_info()
+ .load_skill_section()
+ .load_social_section()
+ .build())
+
+
+class ConfigDataBuilder:
+
+ def __init__(self, config_file_path: str):
+ """
+ Initialize ConfigDataBuilder
+
+ :param config_file_path: Path to config file
+ """
+ self.config_file_path = config_file_path
+ self.config_data = None
+
+ def load_config_file(self) -> 'ConfigDataBuilder':
+ """
+ Load config file and return ConfigDataBuilder
+
+ :return: ConfigDataBuilder
+ """
+ with open(self.config_file_path, 'r') as config_file:
+ self.config_data = yaml.safe_load(config_file)
+ return self
+
+ def load_user_info(self) -> 'ConfigDataBuilder':
+ """
+ Load user info from GitHub API and return ConfigDataBuilder
+
+ :return: ConfigDataBuilder
+ """
+ user = self.config_data["user"]
+ response = requests.get(f"https://api.github.com/users/{user}")
+
+ if response.status_code != 200:
+ raise Exception("User not found")
+
+ self.config_data["user"] = response.json()
+ return self
+
+ def load_social_section(self) -> 'ConfigDataBuilder':
+ """
+ Load social section and return ConfigDataBuilder
+
+ :return: ConfigDataBuilder
+ """
+ self.config_data["socials"] = str(SocialList(self.config_data["socials"]))
+ return self
+
+ def load_skill_section(self) -> 'ConfigDataBuilder':
+ """
+ Load skill section and return ConfigDataBuilder
+
+ :return: ConfigDataBuilder
+ """
+ self.config_data["skills"] = str(SkillList(self.config_data["skills"]))
+ return self
+
+ def build(self) -> dict:
+ """
+ Return config data
+
+ :return: dict
+ """
+ return self.config_data
diff --git a/src/model/skill.py b/src/model/skill.py
new file mode 100644
index 0000000..31ee08f
--- /dev/null
+++ b/src/model/skill.py
@@ -0,0 +1,10 @@
+class Skill:
+ def __init__(self, name: str, url: str):
+ self.name = name
+ self.url = url
+
+ def __str__(self):
+ return f""
+
+ def __repr__(self):
+ return f""
\ No newline at end of file
diff --git a/src/model/skill_list.py b/src/model/skill_list.py
new file mode 100644
index 0000000..2966801
--- /dev/null
+++ b/src/model/skill_list.py
@@ -0,0 +1,13 @@
+from src.model.skill import Skill
+
+
+class SkillList:
+ def __init__(self, skills: list):
+ self.skills = [Skill(skill.get("name"), skill.get("url")) for skill in skills]
+
+ def __str__(self) -> str:
+ return "\n".join([str(skill) for skill in self.skills])
+
+ def __repr__(self) -> str:
+ return "\n".join([repr(skill) for skill in self.skills])
+
diff --git a/src/model/social.py b/src/model/social.py
new file mode 100644
index 0000000..80ce615
--- /dev/null
+++ b/src/model/social.py
@@ -0,0 +1,11 @@
+class Social:
+ def __init__(self, name: str, url: str, img: str):
+ self.name = name
+ self.url = url
+ self.img = img
+
+ def __repr__(self) -> str:
+ return f"[]({self.url})"
+
+ def __str__(self) -> str:
+ return f"[]({self.url})"
\ No newline at end of file
diff --git a/src/model/social_list.py b/src/model/social_list.py
new file mode 100644
index 0000000..b5f912c
--- /dev/null
+++ b/src/model/social_list.py
@@ -0,0 +1,12 @@
+from src.model.social import Social
+
+
+class SocialList:
+ def __init__(self, socials: list):
+ self.socials = [Social(social.get("name"), social.get("url"), social.get("img")) for social in socials]
+
+ def __str__(self) -> str:
+ return "\n".join([str(social) for social in self.socials])
+
+ def __repr__(self) -> str:
+ return "\n".join([str(social) for social in self.socials])
\ No newline at end of file
diff --git a/src/template.py b/src/template.py
new file mode 100644
index 0000000..f19f5ec
--- /dev/null
+++ b/src/template.py
@@ -0,0 +1,4 @@
+def load_template(template_file_path: str):
+ with open(template_file_path, 'r') as template_file:
+ template_content = template_file.read()
+ return template_content
diff --git a/src/url_builder/BadgeUrlBuilder.ts b/src/url_builder/BadgeUrlBuilder.ts
deleted file mode 100644
index 1ff113f..0000000
--- a/src/url_builder/BadgeUrlBuilder.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-import type BadgeModel from '../../models/BadgeModel.ts';
-import UrlBuilder from './UrlBuilder.ts';
-
-export default class BadgeUrlBuilder extends UrlBuilder {
- static BASE_URL = 'https://img.shields.io/static/v1';
- static DEFAULT_PARAMETERS: BadgeModel = {style: 'flat', label: " ", logoColor: "white"};
-
- constructor(parameters?: BadgeModel) {
- super(BadgeUrlBuilder.BASE_URL,
- parameters,
- BadgeUrlBuilder.DEFAULT_PARAMETERS,
- );
- };
-
- public setParameters(parameters: BadgeModel): this {
- return super.setParameters(parameters);
- }
-}
\ No newline at end of file
diff --git a/src/url_builder/BannerUrlBuilder.ts b/src/url_builder/BannerUrlBuilder.ts
deleted file mode 100644
index f350548..0000000
--- a/src/url_builder/BannerUrlBuilder.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-import UrlBuilder from './UrlBuilder.ts';
-import type BannerModel from '../../models/BannerModel.ts';
-
-export default class BannerUrlBuilder extends UrlBuilder {
- static BASE_URL = 'https://svg-banners.vercel.app/api';
-
- constructor(parameters: BannerModel) {
- super(BannerUrlBuilder.BASE_URL, parameters, {});
- }
-
- public setParameters(parameters: BannerModel): this {
- return super.setParameters(parameters);
- }
-}
\ No newline at end of file
diff --git a/src/url_builder/UrlBuilder.ts b/src/url_builder/UrlBuilder.ts
deleted file mode 100644
index 35e9a64..0000000
--- a/src/url_builder/UrlBuilder.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-export default abstract class UrlBuilder {
-
- private parameters;
-
- protected constructor(
- private baseUrl: string,
- parameters,
- private defaultParameters,
- ) {
- this.parameters = {...defaultParameters, ...parameters};
- };
-
- setParameters(parameters) {
- this.parameters = {...this.parameters, ...parameters};
- return this;
- }
-
- build(): URL {
- const url = new URL(this.baseUrl);
- for (const [key, value] of Object.entries(this.parameters)) {
- if (value) url.searchParams.set(key, value);
- }
- return url;
- };
-}
\ No newline at end of file
diff --git a/template.md b/template.md
new file mode 100644
index 0000000..f3826ad
--- /dev/null
+++ b/template.md
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+## 🚀 About Me
+I'm a passionate developer from 🇫🇷 **{user[location]}**.
+
+## 🔗 Social Links
+{socials}
+
+## 🛠Skills
+{skills}
+
+---
+
+
\ No newline at end of file
diff --git a/views/template.njk b/views/template.njk
deleted file mode 100644
index b49058a..0000000
--- a/views/template.njk
+++ /dev/null
@@ -1,26 +0,0 @@
-{{banner}}
-
-## 🚀 About Me
-{{about}}
-
-## 🔗 Links
-{% for link in links -%}
- {{link}}
-{% endfor %}
-
-## 🛠Skills
-{% for skill in skills -%}
- {{skill}}
-{% endfor %}
-
----
-
-
-
-
-
-{% for badge in footer -%}
- {{badge}}
-{% endfor %}
-
-
\ No newline at end of file