mirror of
https://github.com/LucasVbr/LucasVbr.git
synced 2026-05-13 17:11:52 +00:00
feat: Clear main branch
Took 3 minutes
This commit is contained in:
@@ -1,6 +0,0 @@
|
|||||||
.idea/
|
|
||||||
.vscode/
|
|
||||||
|
|
||||||
venv/
|
|
||||||
|
|
||||||
.DS_Store
|
|
||||||
Generated
+8
@@ -0,0 +1,8 @@
|
|||||||
|
# Default ignored files
|
||||||
|
/shelf/
|
||||||
|
/workspace.xml
|
||||||
|
# Editor-based HTTP Client requests
|
||||||
|
/httpRequests/
|
||||||
|
# Datasource local storage ignored files
|
||||||
|
/dataSources/
|
||||||
|
/dataSources.local.xml
|
||||||
Generated
+14
@@ -0,0 +1,14 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<module type="PYTHON_MODULE" version="4">
|
||||||
|
<component name="NewModuleRootManager">
|
||||||
|
<content url="file://$MODULE_DIR$">
|
||||||
|
<sourceFolder url="file://$MODULE_DIR$/tests" isTestSource="true" />
|
||||||
|
</content>
|
||||||
|
<orderEntry type="inheritedJdk" />
|
||||||
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
|
</component>
|
||||||
|
<component name="PyDocumentationSettings">
|
||||||
|
<option name="format" value="PLAIN" />
|
||||||
|
<option name="myDocStringFormat" value="Plain" />
|
||||||
|
</component>
|
||||||
|
</module>
|
||||||
Generated
+7
@@ -0,0 +1,7 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="DiscordProjectSettings">
|
||||||
|
<option name="show" value="ASK" />
|
||||||
|
<option name="description" value="" />
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
+26
@@ -0,0 +1,26 @@
|
|||||||
|
<component name="InspectionProjectProfileManager">
|
||||||
|
<profile version="1.0">
|
||||||
|
<option name="myName" value="Project Default" />
|
||||||
|
<inspection_tool class="DuplicatedCode" enabled="true" level="WEAK WARNING" enabled_by_default="true">
|
||||||
|
<Languages>
|
||||||
|
<language minSize="275" name="Python" />
|
||||||
|
</Languages>
|
||||||
|
</inspection_tool>
|
||||||
|
<inspection_tool class="PyPep8NamingInspection" enabled="true" level="WEAK WARNING" enabled_by_default="true">
|
||||||
|
<option name="ignoredErrors">
|
||||||
|
<list>
|
||||||
|
<option value="N806" />
|
||||||
|
<option value="N802" />
|
||||||
|
<option value="N803" />
|
||||||
|
</list>
|
||||||
|
</option>
|
||||||
|
</inspection_tool>
|
||||||
|
<inspection_tool class="PyUnresolvedReferencesInspection" enabled="true" level="WARNING" enabled_by_default="true">
|
||||||
|
<option name="ignoredIdentifiers">
|
||||||
|
<list>
|
||||||
|
<option value="str.save" />
|
||||||
|
</list>
|
||||||
|
</option>
|
||||||
|
</inspection_tool>
|
||||||
|
</profile>
|
||||||
|
</component>
|
||||||
+6
@@ -0,0 +1,6 @@
|
|||||||
|
<component name="InspectionProjectProfileManager">
|
||||||
|
<settings>
|
||||||
|
<option name="USE_PROJECT_PROFILE" value="false" />
|
||||||
|
<version value="1.0" />
|
||||||
|
</settings>
|
||||||
|
</component>
|
||||||
Generated
+7
@@ -0,0 +1,7 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="Black">
|
||||||
|
<option name="sdkName" value="Python 3.9 (anime-scrapper)" />
|
||||||
|
</component>
|
||||||
|
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.8" project-jdk-type="Python SDK" />
|
||||||
|
</project>
|
||||||
Generated
+8
@@ -0,0 +1,8 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="ProjectModuleManager">
|
||||||
|
<modules>
|
||||||
|
<module fileurl="file://$PROJECT_DIR$/.idea/LucasVbr.iml" filepath="$PROJECT_DIR$/.idea/LucasVbr.iml" />
|
||||||
|
</modules>
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
Generated
+12
@@ -0,0 +1,12 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="CommitMessageInspectionProfile">
|
||||||
|
<profile version="1.0">
|
||||||
|
<inspection_tool class="CommitFormat" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||||
|
<inspection_tool class="CommitNamingConvention" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||||
|
</profile>
|
||||||
|
</component>
|
||||||
|
<component name="VcsDirectoryMappings">
|
||||||
|
<mapping directory="" vcs="Git" />
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
Generated
+4
@@ -0,0 +1,4 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="ProjectTasksOptions" suppressed-tasks="Pug/Jade" />
|
||||||
|
</project>
|
||||||
Generated
+14
@@ -0,0 +1,14 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="WebResourcesPaths">
|
||||||
|
<contentEntries>
|
||||||
|
<entry url="file://$PROJECT_DIR$">
|
||||||
|
<entryData>
|
||||||
|
<resourceRoots>
|
||||||
|
<path value="file://$PROJECT_DIR$/static" />
|
||||||
|
</resourceRoots>
|
||||||
|
</entryData>
|
||||||
|
</entry>
|
||||||
|
</contentEntries>
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
@@ -1,68 +0,0 @@
|
|||||||
## Hi there! <img src="https://raw.githubusercontent.com/Tarikul-Islam-Anik/Animated-Fluent-Emojis/master/Emojis/Hand%20gestures/Waving%20Hand.png" alt="Waving Hand" width="25" height="25" />
|
|
||||||
|
|
||||||
I'm **Lucàs**, a passionate developer based in 🇫🇷 **Pau, France**.<br/>
|
|
||||||
My journey in the world of programming started 7 years ago when I fell in love with   .
|
|
||||||
|
|
||||||
### <img src="https://raw.githubusercontent.com/Tarikul-Islam-Anik/Animated-Fluent-Emojis/master/Emojis/Travel%20and%20places/Rocket.png" alt="Rocket" width="25" height="25" /> What I do
|
|
||||||
|
|
||||||
- 💻 Currently, I'm studying at **UPPA** for my Master's degree in Informatics.
|
|
||||||
- 🌐 I specialize in Web Development, and I'm always eager to explore new technologies and frameworks.
|
|
||||||
- 🌱 I'm constantly learning and expanding my skill set to stay up-to-date with the ever-evolving tech landscape.
|
|
||||||
|
|
||||||
### <img src="https://raw.githubusercontent.com/Tarikul-Islam-Anik/Animated-Fluent-Emojis/master/Emojis/Travel%20and%20places/Globe%20Showing%20Europe-Africa.png" alt="Globe Showing Europe-Africa" width="25" height="25" /> Connect with me
|
|
||||||
|
|
||||||
[](https://www.lucasvbr.dev)
|
|
||||||
[](https://www.linkedin.com/in/lucasvbr)
|
|
||||||
[](https://www.freecodecamp.org/LucasVbr)
|
|
||||||
[](https://openclassrooms.com/fr/members/97j9zltv6225)
|
|
||||||
[](https://exercism.org/profiles/LucasVbr)
|
|
||||||
|
|
||||||
### <img src="https://raw.githubusercontent.com/Tarikul-Islam-Anik/Animated-Fluent-Emojis/master/Emojis/Objects/Hammer%20and%20Wrench.png" alt="Hammer and Wrench" width="25" height="25" /> Tech Stack
|
|
||||||
|
|
||||||

|
|
||||||

|
|
||||||

|
|
||||||

|
|
||||||

|
|
||||||

|
|
||||||

|
|
||||||

|
|
||||||

|
|
||||||

|
|
||||||

|
|
||||||

|
|
||||||

|
|
||||||

|
|
||||||

|
|
||||||

|
|
||||||

|
|
||||||

|
|
||||||

|
|
||||||

|
|
||||||

|
|
||||||

|
|
||||||

|
|
||||||

|
|
||||||

|
|
||||||

|
|
||||||

|
|
||||||

|
|
||||||

|
|
||||||
|
|
||||||
### <img src="https://raw.githubusercontent.com/Tarikul-Islam-Anik/Animated-Fluent-Emojis/master/Emojis/Hand%20gestures/Handshake.png" alt="Handshake" width="25" height="25" /> Let's collaborate
|
|
||||||
|
|
||||||
👀 I'm always open to collaboration and exciting projects. If you have something in mind, feel free to reach out!
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
<footer>
|
|
||||||
<div align="center">
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||

|
|
||||||

|
|
||||||
|
|
||||||
</div>
|
|
||||||
</footer>
|
|
||||||
-48
@@ -1,48 +0,0 @@
|
|||||||
user: "LucasVbr"
|
|
||||||
|
|
||||||
socials:
|
|
||||||
- name: "Portfolio"
|
|
||||||
url: "https://www.lucasvbr.dev"
|
|
||||||
|
|
||||||
- name: "Linkedin"
|
|
||||||
url: "https://www.linkedin.com/in/lucasvbr"
|
|
||||||
|
|
||||||
- name: "FreeCodeCamp"
|
|
||||||
url: "https://www.freecodecamp.org/LucasVbr"
|
|
||||||
|
|
||||||
- name: "OpenClassRooms"
|
|
||||||
url: "https://openclassrooms.com/fr/members/97j9zltv6225"
|
|
||||||
|
|
||||||
- name: "Exercism"
|
|
||||||
url: "https://exercism.org/profiles/LucasVbr"
|
|
||||||
|
|
||||||
skills:
|
|
||||||
- Android
|
|
||||||
- Angular
|
|
||||||
- Astro
|
|
||||||
- Bun
|
|
||||||
- Bootstrap
|
|
||||||
- Bulma
|
|
||||||
- C
|
|
||||||
- CSS3
|
|
||||||
- Deno
|
|
||||||
- Docker
|
|
||||||
- Express
|
|
||||||
- Figma
|
|
||||||
- Git
|
|
||||||
- GNU Bash
|
|
||||||
- HTML5
|
|
||||||
- JavaScript
|
|
||||||
- MariaDB
|
|
||||||
- MongoDB
|
|
||||||
- MySQL
|
|
||||||
- Node.js
|
|
||||||
- OCaml
|
|
||||||
- PHP
|
|
||||||
- PostgreSQL
|
|
||||||
- Pug
|
|
||||||
- Python
|
|
||||||
- React
|
|
||||||
- SQLite
|
|
||||||
- Symfony
|
|
||||||
- TypeScript
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
from src.config import Config
|
|
||||||
from src.template import Template
|
|
||||||
|
|
||||||
CONFIG_FILE = 'config.yaml'
|
|
||||||
TEMPLATE_FILE = 'template.md'
|
|
||||||
OUTPUT_FILE = 'README.md'
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
template = Template(TEMPLATE_FILE)
|
|
||||||
data = Config(CONFIG_FILE).get_data()
|
|
||||||
|
|
||||||
# Generate README file
|
|
||||||
render = template.render(**data)
|
|
||||||
with open(OUTPUT_FILE, 'w') as f:
|
|
||||||
f.write(render)
|
|
||||||
|
|
||||||
print(f"{OUTPUT_FILE} generated successfully! 🎉")
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
pyyaml
|
|
||||||
json
|
|
||||||
requests
|
|
||||||
simpleicons
|
|
||||||
urllib3
|
|
||||||
@@ -1,31 +0,0 @@
|
|||||||
import yaml
|
|
||||||
from src.model.skill_list import skill_list
|
|
||||||
import requests
|
|
||||||
from src.model.social_list import social_list
|
|
||||||
|
|
||||||
|
|
||||||
class Config:
|
|
||||||
config_file_path: str
|
|
||||||
config_data: dict[str, any] = None
|
|
||||||
|
|
||||||
def __init__(self, config_file_path: str):
|
|
||||||
self.config_file_path = config_file_path
|
|
||||||
|
|
||||||
def load_config_file(self):
|
|
||||||
with open(self.config_file_path, 'r') as config_file:
|
|
||||||
self.config_data = yaml.safe_load(config_file)
|
|
||||||
|
|
||||||
def handle_user_info(self):
|
|
||||||
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()
|
|
||||||
|
|
||||||
def get_data(self):
|
|
||||||
self.load_config_file()
|
|
||||||
self.handle_user_info()
|
|
||||||
self.config_data["skills"] = skill_list(self.config_data["skills"])
|
|
||||||
self.config_data["socials"] = social_list(self.config_data["socials"])
|
|
||||||
|
|
||||||
return self.config_data
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
from src.shield.skill_shield import SkillShield
|
|
||||||
|
|
||||||
|
|
||||||
class Skill:
|
|
||||||
alt: str
|
|
||||||
src: str
|
|
||||||
|
|
||||||
def __init__(self, name: str):
|
|
||||||
self.alt = name
|
|
||||||
self.src = SkillShield(name).__str__()
|
|
||||||
|
|
||||||
def __str__(self) -> str:
|
|
||||||
return f""
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
from src.model.skill import Skill
|
|
||||||
|
|
||||||
|
|
||||||
def skill_list(skills: list[str]) -> dict[str, str]:
|
|
||||||
# Sort and remove duplicates
|
|
||||||
skills = list(set(skills))
|
|
||||||
skills.sort()
|
|
||||||
|
|
||||||
skills = {skill: Skill(skill).__str__() for skill in skills}
|
|
||||||
skills["all"] = "\n".join([str(skill) for skill in skills.values()])
|
|
||||||
return skills
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
from src.shield.social_shield import SocialShield
|
|
||||||
|
|
||||||
|
|
||||||
class Social:
|
|
||||||
name: str
|
|
||||||
img: str
|
|
||||||
|
|
||||||
def __init__(self, name: str, url: str):
|
|
||||||
self.name = name
|
|
||||||
self.img = SocialShield(name, url).__str__()
|
|
||||||
self.url = url
|
|
||||||
|
|
||||||
def __str__(self) -> str:
|
|
||||||
return f"[]({self.url})"
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
from src.model.social import Social
|
|
||||||
|
|
||||||
|
|
||||||
def social_list(socials: list) -> dict[str, str]:
|
|
||||||
socials: dict[str, str] = {social.get("name"): str(Social(social.get("name"), social.get("url"))) for social in
|
|
||||||
socials}
|
|
||||||
socials["all"] = "\n".join([str(social) for social in socials.values()])
|
|
||||||
return socials
|
|
||||||
@@ -1,94 +0,0 @@
|
|||||||
from urllib.parse import urlunsplit, urlencode
|
|
||||||
from simpleicons.all import icons
|
|
||||||
|
|
||||||
class ShieldBuilder:
|
|
||||||
BASE_URL = "https://img.shields.io/static/v1"
|
|
||||||
|
|
||||||
message: str = None
|
|
||||||
style: str = None
|
|
||||||
logo: str = None
|
|
||||||
logo_color: str = None
|
|
||||||
label: str = None
|
|
||||||
label_color: str = None
|
|
||||||
color: str = None
|
|
||||||
cache_seconds: int = None
|
|
||||||
link: str = None
|
|
||||||
|
|
||||||
def __init__(self):
|
|
||||||
self.logo_color = "white"
|
|
||||||
self.label = " "
|
|
||||||
self.color = "black"
|
|
||||||
|
|
||||||
def set_message(self, message: str):
|
|
||||||
self.message = (
|
|
||||||
message
|
|
||||||
.replace("_", "__")
|
|
||||||
.replace("-", "--")
|
|
||||||
.replace(" ", "_")
|
|
||||||
)
|
|
||||||
return self
|
|
||||||
|
|
||||||
def set_style(self, style: str):
|
|
||||||
if not style in ["flat", "flat-square", "plastic", "for-the-badge", "social"]:
|
|
||||||
raise Exception("Invalid style")
|
|
||||||
|
|
||||||
self.style = style
|
|
||||||
return self
|
|
||||||
|
|
||||||
def set_logo(self, logo: str):
|
|
||||||
self.logo = icons.get(logo).slug if logo in icons else None
|
|
||||||
return self
|
|
||||||
|
|
||||||
def set_logo_color(self, logo_color: str):
|
|
||||||
self.logo_color = logo_color
|
|
||||||
return self
|
|
||||||
|
|
||||||
def set_label(self, label: str):
|
|
||||||
self.label = label
|
|
||||||
return self
|
|
||||||
|
|
||||||
def set_label_color(self, label_color: str):
|
|
||||||
self.label_color = label_color
|
|
||||||
return self
|
|
||||||
|
|
||||||
def set_color(self, color: str):
|
|
||||||
self.color = color
|
|
||||||
return self
|
|
||||||
|
|
||||||
def set_cache_seconds(self, cache_seconds: int):
|
|
||||||
self.cache_seconds = cache_seconds
|
|
||||||
return self
|
|
||||||
|
|
||||||
def set_link(self, link: str):
|
|
||||||
self.link = link
|
|
||||||
return self
|
|
||||||
|
|
||||||
def get_query(self):
|
|
||||||
query = {
|
|
||||||
"message": self.message,
|
|
||||||
"style": self.style,
|
|
||||||
"logo": self.logo,
|
|
||||||
"logoColor": self.logo_color,
|
|
||||||
"label": self.label,
|
|
||||||
"labelColor": self.label_color,
|
|
||||||
"color": self.color,
|
|
||||||
"cacheSeconds": self.cache_seconds,
|
|
||||||
"link": self.link
|
|
||||||
}
|
|
||||||
|
|
||||||
# Remove None values
|
|
||||||
return {k: v for k, v in query.items() if v is not None}
|
|
||||||
|
|
||||||
def build(self):
|
|
||||||
query = urlencode(self.get_query())
|
|
||||||
return urlunsplit(("", "", self.BASE_URL, query, ""))
|
|
||||||
|
|
||||||
|
|
||||||
if "__main__" == __name__:
|
|
||||||
shield_builder = (
|
|
||||||
ShieldBuilder()
|
|
||||||
.set_logo("HTML5")
|
|
||||||
.set_message("HTML5")
|
|
||||||
.build()
|
|
||||||
)
|
|
||||||
print(shield_builder)
|
|
||||||
@@ -1,33 +0,0 @@
|
|||||||
from simpleicons.all import icons
|
|
||||||
|
|
||||||
from src.shield.shield_builder import ShieldBuilder
|
|
||||||
|
|
||||||
|
|
||||||
class SkillShield:
|
|
||||||
|
|
||||||
def __init__(self, name: str = None):
|
|
||||||
self.builder = ShieldBuilder()
|
|
||||||
self.skill = self.set_skill(name) if name is not None else None
|
|
||||||
|
|
||||||
def get_skill(self):
|
|
||||||
return self.skill
|
|
||||||
|
|
||||||
def set_skill(self, name: str):
|
|
||||||
self.skill = icons.get(name)
|
|
||||||
|
|
||||||
if self.skill is not None:
|
|
||||||
(self.builder.set_message(self.skill.title)
|
|
||||||
.set_logo(self.skill.slug)
|
|
||||||
.set_color(self.skill.hex)
|
|
||||||
)
|
|
||||||
else:
|
|
||||||
self.builder.set_message(name)
|
|
||||||
|
|
||||||
def get_builder(self):
|
|
||||||
return self.builder
|
|
||||||
|
|
||||||
def __repr__(self):
|
|
||||||
self.__str__()
|
|
||||||
|
|
||||||
def __str__(self):
|
|
||||||
return self.builder.build()
|
|
||||||
@@ -1,37 +0,0 @@
|
|||||||
from simpleicons.all import icons
|
|
||||||
|
|
||||||
from src.shield.shield_builder import ShieldBuilder
|
|
||||||
|
|
||||||
|
|
||||||
class SocialShield:
|
|
||||||
|
|
||||||
def __init__(self, name: str = None, url: str = None):
|
|
||||||
self.builder = ShieldBuilder().set_style("for-the-badge")
|
|
||||||
self.name = name
|
|
||||||
self.url = url
|
|
||||||
self.social = self.set_social(name, url) if name is not None and url is not None else None
|
|
||||||
|
|
||||||
def get_social(self):
|
|
||||||
return self.social
|
|
||||||
|
|
||||||
def set_social(self, name: str, url: str):
|
|
||||||
self.social = icons.get(name)
|
|
||||||
|
|
||||||
if self.social is not None:
|
|
||||||
(self.builder.set_message(self.social.title)
|
|
||||||
.set_logo(self.social.slug)
|
|
||||||
.set_color(self.social.hex)
|
|
||||||
)
|
|
||||||
else:
|
|
||||||
self.builder.set_message(name)
|
|
||||||
|
|
||||||
self.builder.set_link(url)
|
|
||||||
|
|
||||||
def get_builder(self):
|
|
||||||
return self.builder
|
|
||||||
|
|
||||||
def __repr__(self):
|
|
||||||
self.__str__()
|
|
||||||
|
|
||||||
def __str__(self):
|
|
||||||
return self.builder.build()
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
class Template:
|
|
||||||
|
|
||||||
def __init__(self, template_path: str):
|
|
||||||
self.template_path = template_path
|
|
||||||
|
|
||||||
def render(self, **kwargs):
|
|
||||||
with open(self.template_path, 'r') as f:
|
|
||||||
template = f.read()
|
|
||||||
|
|
||||||
return template.format(**kwargs)
|
|
||||||
-36
@@ -1,36 +0,0 @@
|
|||||||
## Hi there! <img src="https://raw.githubusercontent.com/Tarikul-Islam-Anik/Animated-Fluent-Emojis/master/Emojis/Hand%20gestures/Waving%20Hand.png" alt="Waving Hand" width="25" height="25" />
|
|
||||||
|
|
||||||
I'm **{user[name]}**, a passionate developer based in 🇫🇷 **{user[location]}**.<br/>
|
|
||||||
My journey in the world of programming started 7 years ago when I fell in love with {skills[HTML5]} {skills[CSS3]} {skills[JavaScript]}.
|
|
||||||
|
|
||||||
### <img src="https://raw.githubusercontent.com/Tarikul-Islam-Anik/Animated-Fluent-Emojis/master/Emojis/Travel%20and%20places/Rocket.png" alt="Rocket" width="25" height="25" /> What I do
|
|
||||||
|
|
||||||
- 💻 Currently, I'm studying at **{user[company]}** for my Master's degree in Informatics.
|
|
||||||
- 🌐 I specialize in Web Development, and I'm always eager to explore new technologies and frameworks.
|
|
||||||
- 🌱 I'm constantly learning and expanding my skill set to stay up-to-date with the ever-evolving tech landscape.
|
|
||||||
|
|
||||||
### <img src="https://raw.githubusercontent.com/Tarikul-Islam-Anik/Animated-Fluent-Emojis/master/Emojis/Travel%20and%20places/Globe%20Showing%20Europe-Africa.png" alt="Globe Showing Europe-Africa" width="25" height="25" /> Connect with me
|
|
||||||
|
|
||||||
{socials[all]}
|
|
||||||
|
|
||||||
### <img src="https://raw.githubusercontent.com/Tarikul-Islam-Anik/Animated-Fluent-Emojis/master/Emojis/Objects/Hammer%20and%20Wrench.png" alt="Hammer and Wrench" width="25" height="25" /> Tech Stack
|
|
||||||
|
|
||||||
{skills[all]}
|
|
||||||
|
|
||||||
### <img src="https://raw.githubusercontent.com/Tarikul-Islam-Anik/Animated-Fluent-Emojis/master/Emojis/Hand%20gestures/Handshake.png" alt="Handshake" width="25" height="25" /> Let's collaborate
|
|
||||||
|
|
||||||
👀 I'm always open to collaboration and exciting projects. If you have something in mind, feel free to reach out!
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
<footer>
|
|
||||||
<div align="center">
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||

|
|
||||||

|
|
||||||
|
|
||||||
</div>
|
|
||||||
</footer>
|
|
||||||
Reference in New Issue
Block a user