From 78b2b50b6c461ea9eb96c850d71fd977dd7596aa Mon Sep 17 00:00:00 2001 From: LG <76845820+im-coder-lg@users.noreply.github.com> Date: Tue, 20 Jun 2023 21:16:24 +0530 Subject: [PATCH] Initial commit --- .github/workflows/main.yml | 16 + .gitignore | 659 +++++++++++++++++++++++++++++++++++++ README.md | 29 ++ ci/check-page.js | 51 +++ custom.css | 41 +++ package-lock.json | 119 +++++++ package.json | 6 + page.json | 32 ++ profile-picture.jpeg | Bin 0 -> 33023 bytes 9 files changed, 953 insertions(+) create mode 100644 .github/workflows/main.yml create mode 100644 .gitignore create mode 100644 README.md create mode 100644 ci/check-page.js create mode 100644 custom.css create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 page.json create mode 100644 profile-picture.jpeg diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 0000000..d364b1c --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,16 @@ +name: CI + +on: + push: + branches: + - main + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: Install dependencies + run: npm install + - name: Check Page + run: node ./ci/check-page.js \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..35026a6 --- /dev/null +++ b/.gitignore @@ -0,0 +1,659 @@ +# Created by https://www.toptal.com/developers/gitignore/api/pycharm,pycharm+iml,pycharm+all,python,macos,node,visualstudiocode,vim,emacs +# Edit at https://www.toptal.com/developers/gitignore?templates=pycharm,pycharm+iml,pycharm+all,python,macos,node,visualstudiocode,vim,emacs + +### Emacs ### +# -*- mode: gitignore; -*- +*~ +\#*\# +/.emacs.desktop +/.emacs.desktop.lock +*.elc +auto-save-list +tramp +.\#* + +# Org-mode +.org-id-locations +*_archive + +# flymake-mode +*_flymake.* + +# eshell files +/eshell/history +/eshell/lastdir + +# elpa packages +/elpa/ + +# reftex files +*.rel + +# AUCTeX auto folder +/auto/ + +# cask packages +.cask/ +dist/ + +# Flycheck +flycheck_*.el + +# server auth directory +/server/ + +# projectiles files +.projectile + +# directory configuration +.dir-locals.el + +# network security +/network-security.data + + +### macOS ### +# General +.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +### macOS Patch ### +# iCloud generated files +*.icloud + +### Node ### +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +lerna-debug.log* +.pnpm-debug.log* + +# Diagnostic reports (https://nodejs.org/api/report.html) +report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage +*.lcov + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# Snowpack dependency directory (https://snowpack.dev/) +web_modules/ + +# TypeScript cache +*.tsbuildinfo + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional stylelint cache +.stylelintcache + +# Microbundle cache +.rpt2_cache/ +.rts2_cache_cjs/ +.rts2_cache_es/ +.rts2_cache_umd/ + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variable files +.env +.env.development.local +.env.test.local +.env.production.local +.env.local + +# parcel-bundler cache (https://parceljs.org/) +.cache +.parcel-cache + +# Next.js build output +.next +out + +# Nuxt.js build / generate output +.nuxt +dist + +# Gatsby files +.cache/ +# Comment in the public line in if your project uses Gatsby and not Next.js +# https://nextjs.org/blog/next-9-1#public-directory-support +# public + +# vuepress build output +.vuepress/dist + +# vuepress v2.x temp and cache directory +.temp + +# Docusaurus cache and generated files +.docusaurus + +# Serverless directories +.serverless/ + +# FuseBox cache +.fusebox/ + +# DynamoDB Local files +.dynamodb/ + +# TernJS port file +.tern-port + +# Stores VSCode versions used for testing VSCode extensions +.vscode-test + +# yarn v2 +.yarn/cache +.yarn/unplugged +.yarn/build-state.yml +.yarn/install-state.gz +.pnp.* + +### Node Patch ### +# Serverless Webpack directories +.webpack/ + +# Optional stylelint cache + +# SvelteKit build / generate output +.svelte-kit + +### PyCharm ### +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider +# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 + +# User-specific stuff +.idea/**/workspace.xml +.idea/**/tasks.xml +.idea/**/usage.statistics.xml +.idea/**/dictionaries +.idea/**/shelf + +# AWS User-specific +.idea/**/aws.xml + +# Generated files +.idea/**/contentModel.xml + +# Sensitive or high-churn files +.idea/**/dataSources/ +.idea/**/dataSources.ids +.idea/**/dataSources.local.xml +.idea/**/sqlDataSources.xml +.idea/**/dynamic.xml +.idea/**/uiDesigner.xml +.idea/**/dbnavigator.xml + +# Gradle +.idea/**/gradle.xml +.idea/**/libraries + +# Gradle and Maven with auto-import +# When using Gradle or Maven with auto-import, you should exclude module files, +# since they will be recreated, and may cause churn. Uncomment if using +# auto-import. +# .idea/artifacts +# .idea/compiler.xml +# .idea/jarRepositories.xml +# .idea/modules.xml +# .idea/*.iml +# .idea/modules +# *.iml +# *.ipr + +# CMake +cmake-build-*/ + +# Mongo Explorer plugin +.idea/**/mongoSettings.xml + +# File-based project format +*.iws + +# IntelliJ +out/ + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Cursive Clojure plugin +.idea/replstate.xml + +# SonarLint plugin +.idea/sonarlint/ + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties +fabric.properties + +# Editor-based Rest Client +.idea/httpRequests + +# Android studio 3.1+ serialized cache file +.idea/caches/build_file_checksums.ser + +### PyCharm Patch ### +# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721 + +# *.iml +# modules.xml +# .idea/misc.xml +# *.ipr + +# Sonarlint plugin +# https://plugins.jetbrains.com/plugin/7973-sonarlint +.idea/**/sonarlint/ + +# SonarQube Plugin +# https://plugins.jetbrains.com/plugin/7238-sonarqube-community-plugin +.idea/**/sonarIssues.xml + +# Markdown Navigator plugin +# https://plugins.jetbrains.com/plugin/7896-markdown-navigator-enhanced +.idea/**/markdown-navigator.xml +.idea/**/markdown-navigator-enh.xml +.idea/**/markdown-navigator/ + +# Cache file creation bug +# See https://youtrack.jetbrains.com/issue/JBR-2257 +.idea/$CACHE_FILE$ + +# CodeStream plugin +# https://plugins.jetbrains.com/plugin/12206-codestream +.idea/codestream.xml + +# Azure Toolkit for IntelliJ plugin +# https://plugins.jetbrains.com/plugin/8053-azure-toolkit-for-intellij +.idea/**/azureSettings.xml + +### PyCharm+all ### +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider +# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 + +# User-specific stuff + +# AWS User-specific + +# Generated files + +# Sensitive or high-churn files + +# Gradle + +# Gradle and Maven with auto-import +# When using Gradle or Maven with auto-import, you should exclude module files, +# since they will be recreated, and may cause churn. Uncomment if using +# auto-import. +# .idea/artifacts +# .idea/compiler.xml +# .idea/jarRepositories.xml +# .idea/modules.xml +# .idea/*.iml +# .idea/modules +# *.iml +# *.ipr + +# CMake + +# Mongo Explorer plugin + +# File-based project format + +# IntelliJ + +# mpeltonen/sbt-idea plugin + +# JIRA plugin + +# Cursive Clojure plugin + +# SonarLint plugin + +# Crashlytics plugin (for Android Studio and IntelliJ) + +# Editor-based Rest Client + +# Android studio 3.1+ serialized cache file + +### PyCharm+all Patch ### +# Ignore everything but code style settings and run configurations +# that are supposed to be shared within teams. + +.idea/* + +!.idea/codeStyles +!.idea/runConfigurations + +### PyCharm+iml ### +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider +# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 + +# User-specific stuff + +# AWS User-specific + +# Generated files + +# Sensitive or high-churn files + +# Gradle + +# Gradle and Maven with auto-import +# When using Gradle or Maven with auto-import, you should exclude module files, +# since they will be recreated, and may cause churn. Uncomment if using +# auto-import. +# .idea/artifacts +# .idea/compiler.xml +# .idea/jarRepositories.xml +# .idea/modules.xml +# .idea/*.iml +# .idea/modules +# *.iml +# *.ipr + +# CMake + +# Mongo Explorer plugin + +# File-based project format + +# IntelliJ + +# mpeltonen/sbt-idea plugin + +# JIRA plugin + +# Cursive Clojure plugin + +# SonarLint plugin + +# Crashlytics plugin (for Android Studio and IntelliJ) + +# Editor-based Rest Client + +# Android studio 3.1+ serialized cache file + +### PyCharm+iml Patch ### +# Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-249601023 + +*.iml +modules.xml +.idea/misc.xml +*.ipr + +### Python ### +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ +cover/ + +# Translations +*.mo +*.pot + +# Django stuff: +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +.pybuilder/ +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# .python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# poetry +# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. +# This is especially recommended for binary packages to ensure reproducibility, and is more +# commonly ignored for libraries. +# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control +#poetry.lock + +# pdm +# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. +#pdm.lock +# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it +# in version control. +# https://pdm.fming.dev/#use-with-ide +.pdm.toml + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ + +# PyCharm +# JetBrains specific template is maintained in a separate JetBrains.gitignore that can +# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore +# and can be added to the global gitignore or merged into this file. For a more nuclear +# option (not recommended) you can uncomment the following to ignore the entire idea folder. +#.idea/ + +### Python Patch ### +# Poetry local configuration file - https://python-poetry.org/docs/configuration/#local-configuration +poetry.toml + + +### Vim ### +# Swap +[._]*.s[a-v][a-z] +!*.svg # comment out if you don't need vector files +[._]*.sw[a-p] +[._]s[a-rt-v][a-z] +[._]ss[a-gi-z] +[._]sw[a-p] + +# Session +Session.vim +Sessionx.vim + +# Temporary +.netrwhist +# Auto-generated tag files +tags +# Persistent undo +[._]*.un~ + +### VisualStudioCode ### +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +!.vscode/*.code-snippets + +# Local History for Visual Studio Code +.history/ + +# Built Visual Studio Code Extensions +*.vsix + +### VisualStudioCode Patch ### +# Ignore all local history of files +.history +.ionide + +# End of https://www.toptal.com/developers/gitignore/api/pycharm,pycharm+iml,pycharm+all,python,macos,node,visualstudiocode,vim,emacs +/icon.py \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..7371263 --- /dev/null +++ b/README.md @@ -0,0 +1,29 @@ +# my-links for links.dev + +## Do not open a PR or an issue! Instead fork this or create your own `my-links` repo. +This is my personal `my-links` repo. You need your own. + +## Welcome to `my-links` +a repo for individuals to customize their page on links.dev + +### To use this repo, follow these steps + +- Fork this repo to your own GitHub account. + +- In the root directory of the repo, update the "page.json". This file should contain the data for your link in bio + page, such as the links you want to include, the titles for each link, and any other relevant information. + +- Update the file called "custom.css" in the same directory. This file will be used to customize the look and feel of + your link in bio page. You can use this file to add your own styles, such as fonts, colors, and layout. + +- Once you have created/updated your page.json and custom.css files, you can view your link in bio page by visiting the + URL for your forked repo. For example, if your username is "fatih", the URL for your link in bio page would + be https://links.dev/fatih + +- If you want to invalidate the cache after you update your page, hit your page with refresh parameter, like + this: https://links.dev/fatih?refresh=1 + +If you want to make changes to your link in bio page, simply update your page.json and custom.css files, commit the +changes to your repo, and refresh the page to see the updates. + +Happy customizing! diff --git a/ci/check-page.js b/ci/check-page.js new file mode 100644 index 0000000..cc4a45f --- /dev/null +++ b/ci/check-page.js @@ -0,0 +1,51 @@ +const fs = require('fs'); +const url = require('url'); +const axios = require('axios'); +const yaml = require('js-yaml'); + +async function validateJson() { + try { + const isCI = process.env.CI; + let path = isCI ? 'page.json' : '../page.json'; + const pageJsonString = fs.readFileSync(path, 'utf8'); + + // Try to parse the JSON string + const pageJson = JSON.parse(pageJsonString); + + // Validate the URLs in the links array + for (const link of pageJson.links) { + try { + url.parse(link.url); + console.log(`URL "${link.url}" is valid`); + } catch (error) { + console.error(`URL "${link.url}" is invalid:`, error.message); + process.exit(1); + } + + // Fetch the remote YAML file using Axios + try { + const response = await axios.get('https://raw.githubusercontent.com/fatih-yavuz/links.dev/main/available-icons.yaml'); + + // Parse the YAML file + const yamlData = yaml.load(response.data); + + // Check if the icon is in the list of available icons + if (yamlData.icons.includes(link.icon)) { + console.log(`Icon "${link.icon}" is valid`); + } else { + console.error(`Icon "${link.icon}" is invalid`); + process.exit(1); + } + } catch (error) { + console.error('Error fetching or parsing YAML file:', error.message); + process.exit(1); + } + } + } catch (error) { + console.error('JSON is invalid:', error.message); + process.exit(1); + } +} + + +validateJson(); diff --git a/custom.css b/custom.css new file mode 100644 index 0000000..b785d42 --- /dev/null +++ b/custom.css @@ -0,0 +1,41 @@ + +.ld-custom-name { + color: black; +} + +.ld-custom-name:visited { + color: black; +} + +.ld-custom-button-container { + -webkit-transition: box-shadow 0.25s cubic-bezier(0.08, 0.59, 0.29, 0.99), color 0.25s cubic-bezier(0.08, 0.59, 0.29, 0.99), border-color 0.25s cubic-bezier(0.08, 0.59, 0.29, 0.99), + -webkit-transform 0.25s cubic-bezier(0.08, 0.59, 0.29, 0.99), background-color 0.25s cubic-bezier(0.08, 0.59, 0.29, 0.99); + -webkit-transition: box-shadow 0.25s cubic-bezier(0.08, 0.59, 0.29, 0.99), color 0.25s cubic-bezier(0.08, 0.59, 0.29, 0.99), border-color 0.25s cubic-bezier(0.08, 0.59, 0.29, 0.99), + transform 0.25s cubic-bezier(0.08, 0.59, 0.29, 0.99), background-color 0.25s cubic-bezier(0.08, 0.59, 0.29, 0.99); + transition: box-shadow 0.25s cubic-bezier(0.08, 0.59, 0.29, 0.99), color 0.25s cubic-bezier(0.08, 0.59, 0.29, 0.99), border-color 0.25s cubic-bezier(0.08, 0.59, 0.29, 0.99), + transform 0.25s cubic-bezier(0.08, 0.59, 0.29, 0.99), background-color 0.25s cubic-bezier(0.08, 0.59, 0.29, 0.99); + -webkit-transition: -webkit-transform 0.15s cubic-bezier(0, 0.2, 0.5, 3); + -webkit-transition: transform 0.15s cubic-bezier(0, 0.2, 0.5, 3); + transition: transform 0.15s cubic-bezier(0, 0.2, 0.5, 3); + background-color: #2665d6; + color: #fff; +} + +.ld-custom-button-container:hover { + -webkit-transform: scale(1.02); + -ms-transform: scale(1.02); + transform: scale(1.02); +} + +.ld-custom-button { + -webkit-transition: box-shadow 0.25s cubic-bezier(0.08, 0.59, 0.29, 0.99), border-color 0.25s cubic-bezier(0.08, 0.59, 0.29, 0.99), -webkit-transform 0.25s cubic-bezier(0.08, 0.59, 0.29, 0.99), + background-color 0.25s cubic-bezier(0.08, 0.59, 0.29, 0.99); + -webkit-transition: box-shadow 0.25s cubic-bezier(0.08, 0.59, 0.29, 0.99), border-color 0.25s cubic-bezier(0.08, 0.59, 0.29, 0.99), transform 0.25s cubic-bezier(0.08, 0.59, 0.29, 0.99), + background-color 0.25s cubic-bezier(0.08, 0.59, 0.29, 0.99); + transition: box-shadow 0.25s cubic-bezier(0.08, 0.59, 0.29, 0.99), border-color 0.25s cubic-bezier(0.08, 0.59, 0.29, 0.99), transform 0.25s cubic-bezier(0.08, 0.59, 0.29, 0.99), + background-color 0.25s cubic-bezier(0.08, 0.59, 0.29, 0.99); +} + +.ld-custom-background-layer { + background-color: #fff; +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..e54276b --- /dev/null +++ b/package-lock.json @@ -0,0 +1,119 @@ +{ + "name": "my-links", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "dependencies": { + "axios": "^1.2.1", + "js-yaml": "^4.1.0" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/axios": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.2.1.tgz", + "integrity": "sha512-I88cFiGu9ryt/tfVEi4kX2SITsvDddTajXTOFmt2uK1ZVA8LytjtdeyefdQWEf5PU8w+4SSJDoYnggflB5tW4A==", + "dependencies": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..24dde97 --- /dev/null +++ b/package.json @@ -0,0 +1,6 @@ +{ + "dependencies": { + "axios": "^1.2.1", + "js-yaml": "^4.1.0" + } +} diff --git a/page.json b/page.json new file mode 100644 index 0000000..0ec5c62 --- /dev/null +++ b/page.json @@ -0,0 +1,32 @@ +{ + "name": "Fatih Yavuz", + "description": "Backend Engineer @Spotify", + "image_url": "https://raw.githubusercontent.com/fatih-yavuz/my-links/main/profile-picture.jpeg", + "links": [ + { + "title": "Instagram", + "url": "https://bit.ly/3LaBWc2", + "icon": "instagram" + }, + { + "title": "Twitter", + "url": "http://bit.ly/3CCjbJk", + "icon": "twitter" + }, + { + "title": "LinkedIn", + "url": "http://bit.ly/3GfuFF1", + "icon": "linkedin" + }, + { + "title": "GitHub", + "url": "http://bit.ly/3GfuTvR", + "icon": "github" + }, + { + "title": "GitLab", + "url": "http://bit.ly/3Cejhqr", + "icon": "gitlab" + } + ] +} diff --git a/profile-picture.jpeg b/profile-picture.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..12a213a100afb9b47754f64fedeb4780a69ec081 GIT binary patch literal 33023 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

tTiItbeBVJB04=4zR)oec!sDmvLa+^BEbQiJd zFY3CQ$z-fd1Gpm7kt$TD!2lQ_>M;V4bEX9~s2xQ^Ux*bPzmz$tOz4NgA`UYSrYkcO z#A2Y^5$T8wl{ONHfYDDOpL>3#7Chg?z=0^i1WeQz&!L@QnA%l!_y8>)7w(Cdvy%S+ zioY`}PP3I$I|P0hJE0ML?f@F66#}5|#4eTysm8P|^)L`VbbiPf1^JER_ZE=SnQ33B zyhbp>T9GTnM}t=|)%?T?(`0jc7*=A|8{DOTVKo3bVYsgjCFPH(cWq)K;O$Y``t++W zFqi^hPOp~X%)5(!Mn6)l5z{cE_NAhY zM0TFNh$Dr;HN;fq8HTE+e_K>BTlh%m`dp)KvvP+3H)Rh78XHBx&D?Kma(3o(2ijOrxh;NKn=e3BS$YGgcs_^-OHPvsp|&Ei zJd*~YH2(lNgd@c;RW*2>Aa~jY0TT~6i7W!Iwjm9o_bgE!m2yTj=@x47FA&_e5`oVm zslm~gB~!17?I`HXp^oz!ga&0hspe!Fo#IF>v$z>jsjj@wVk1^pKqZJAk(snX2IzAr zLxKWShk;4(!Np!mL;JvB!HjZP{?valngXo${{Rc(HvyK5%s|?_Ktx;O4yW*r;!uU$ z)ei^e5hg)h3b?Auyg`U$O0t$L-uYCa|U49Yo9stVyM_J!?a zjz9XI_Y0%_PP#H{5~W(0cS)Kg>lC$oMur>rjta1fjG@u5+Ogdkix~6#CVbywp#4Qv zE8+=CCrbx(n`XO9$vKN(1M>SpF;S>SLN^LZ%sUFfmne>bt0hA=rYggUeRR38V-R|Z zDotr6p;X3Y?lVZ+DWVbTxgV6U*A^`qQ=CJAvI;3|eBbH~PU;U&Ojxh!q+kd(3 z5KMA{*fXKoFY|Kwnfn=+2$>s*yKrWW`%WgE;I^sMjA~L>%?cj%8`PtSLlm~vz>wqW zAISExQT3?A5W#=U${^{-i1I57pj3UcQs#QmqytsdOF>yw7J6u%6q@wsm!Z*!R#^6+`Nt9dy83# zRV=}C?yeAm)lf>!svwC^*{O74KLl0ET?d&?C%no1lGFhAgHSyVVGn>Pi<^+K2P%zR UW&48a8^^f}ATXL~f6nv&*&IpfVgLXD literal 0 HcmV?d00001