Vue rewrite mostly complete

This commit is contained in:
Andrey 2023-05-01 22:23:17 +03:00
parent 3c25965f56
commit 5026537366
14 changed files with 268 additions and 64 deletions

View file

@ -2,9 +2,9 @@
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
<link rel="icon" type="image/png" href="/favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Vite + Vue + TS</title>
<title>Mootfrost DEV</title>
</head>
<body>
<div id="app"></div>

View file

@ -10,11 +10,12 @@
},
"dependencies": {
"@popperjs/core": "^2.11.7",
"axios": "^1.4.0",
"bootstrap": "^5.2.3",
"tsparticles": "^2.9.3",
"vue": "^3.2.47",
"vue-inline-svg": "^3.1.2",
"vue-router": "^4.0.13",
"vue-router": "^4.1.6",
"vue3-particles": "^2.9.3"
},
"devDependencies": {

1
frontend/public/vite.svg Normal file
View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="31.88" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 257"><defs><linearGradient id="IconifyId1813088fe1fbc01fb466" x1="-.828%" x2="57.636%" y1="7.652%" y2="78.411%"><stop offset="0%" stop-color="#41D1FF"></stop><stop offset="100%" stop-color="#BD34FE"></stop></linearGradient><linearGradient id="IconifyId1813088fe1fbc01fb467" x1="43.376%" x2="50.316%" y1="2.242%" y2="89.03%"><stop offset="0%" stop-color="#FFEA83"></stop><stop offset="8.333%" stop-color="#FFDD35"></stop><stop offset="100%" stop-color="#FFA800"></stop></linearGradient></defs><path fill="url(#IconifyId1813088fe1fbc01fb466)" d="M255.153 37.938L134.897 252.976c-2.483 4.44-8.862 4.466-11.382.048L.875 37.958c-2.746-4.814 1.371-10.646 6.827-9.67l120.385 21.517a6.537 6.537 0 0 0 2.322-.004l117.867-21.483c5.438-.991 9.574 4.796 6.877 9.62Z"></path><path fill="url(#IconifyId1813088fe1fbc01fb467)" d="M185.432.063L96.44 17.501a3.268 3.268 0 0 0-2.634 3.014l-5.474 92.456a3.268 3.268 0 0 0 3.997 3.378l24.777-5.718c2.318-.535 4.413 1.507 3.936 3.838l-7.361 36.047c-.495 2.426 1.782 4.5 4.151 3.78l15.304-4.649c2.372-.72 4.652 1.36 4.15 3.788l-11.698 56.621c-.732 3.542 3.979 5.473 5.943 2.437l1.313-2.028l72.516-144.72c1.215-2.423-.88-5.186-3.54-4.672l-25.505 4.922c-2.396.462-4.435-1.77-3.759-4.114l16.646-57.705c.677-2.35-1.37-4.583-3.769-4.113Z"></path></svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

6
frontend/src/IProject.ts Normal file
View file

@ -0,0 +1,6 @@
export default interface IProject {
name: string
description: string
link: string
}

View file

@ -1,9 +1,39 @@
<script setup lang="ts">
import { ref } from 'vue'
import { ref, onMounted } from 'vue'
import BackBtn from "./BackBtn.vue";
import axios from 'axios'
const codeStats = ref<{}>([])
const codeStats = ref<string>('❌Не удалось загрузить❌')
const age = ref<string>('')
interface ILang {
time: string
}
async function getCodeStats() {
const resp = await axios.get<ILang[]>('http://127.0.0.1:7632/api/get_code_stats')
if (resp.status !== 200) return;
if (!Object.keys(resp.data).length) {
codeStats.value = 'ничего не писал('
return;
}
codeStats.value = ''
for (let el in resp.data) {
codeStats.value += `${resp.data[el]}на ${el} , `
}
codeStats.value = codeStats.value.slice(0, -2)
}
async function getAge() {
const resp = await axios.get<string>('http://127.0.0.1:7632/api/get_age')
if (resp.status !== 200) return
age.value = resp.data
}
onMounted(async () => {
await getCodeStats()
await getAge()
})
</script>
<template>
@ -12,11 +42,11 @@
<div class="wrapper pe-none">
<span class="main-title">Обо мне:</span>
<p class="content">
Семейкин Андрей,<br>
Семейкин Андрей, {{age}}<br>
Живу в Москве, учусь в 1580<br>
Пишу на C#, Python, JS. Немного знаю C++ и Java<br>
Разбираюсь в Linux, Docker, Drone CI<br>
За последнюю неделю {{codeStats}}
За последнюю неделю: {{codeStats}}
</p>
</div>
</template>

View file

@ -17,7 +17,7 @@
<style scoped>
.btn-back {
position: relative;
position: fixed;
transition: 0.3s;
}

View file

@ -2,7 +2,7 @@
import SocialBtn from "./SocialBtn.vue";
import {ref} from "vue";
import ISocialBtn from "../ISocialBtn.ts";
const socialbtns = ref<ISocialBtn[]>([
const socialBtns = ref<ISocialBtn[]>([
{ id: 0, name: "github", link: "https://github.com/Mootfrost777", color: "#c9510c"},
{ id: 1, name: "telegram", link: "https://t.me/mootfrost", color: "#1f9bda"},
{ id: 2, name: "gitea", link: "https://git.mootfrost.dev/Mootfrost777", color: "#609926"}
@ -14,15 +14,13 @@ const socialbtns = ref<ISocialBtn[]>([
<div class="d-flex flex-column min-vh-100 justify-content-center align-items-center overlay pe-none">
<div class="main-title text-uppercase text-wrap">
<span>mootfrost</span>
<p class="thin">Development</p>
<p class="btm">Development</p>
</div>
<div class="social pe-auto">
<div class="social-icons flex-row justify-content-center align-items-center">
<SocialBtn v-for="el in socialbtns"
<SocialBtn v-for="el in socialBtns"
:btn="el"
:key="el.id"/>
<SocialBtn :btn="socialbtns[0]"/>
</div>
<div class="email flex-column flex-wrap pe-auto thin text-uppercase">
@ -48,9 +46,14 @@ const socialbtns = ref<ISocialBtn[]>([
margin: 5vh;
}
.main-title .thin {
font-family: "Comfortaa Light";
font-weight: 30;
.thin {
font-weight: 200;
line-height: 1.2em;
}
.btm {
line-height: 0.9;
font-family: Raleway;
font-weight: 200;
}
.btn-social {
@ -60,6 +63,7 @@ const socialbtns = ref<ISocialBtn[]>([
}
.lower-buttons {
font-weight: 300;
font-size: 1.3em;
margin-top: 15px;
display: flex;
@ -115,6 +119,7 @@ const socialbtns = ref<ISocialBtn[]>([
background-repeat: no-repeat;
transition: 0.3s;
opacity: 0.4;
vertical-align: 13%;
}
.lower-buttons a::after {
@ -122,7 +127,6 @@ const socialbtns = ref<ISocialBtn[]>([
margin-left: 7px;
content: "";
display: inline-block;
top: 50%;
width: 12px;
height: 12px;
border-radius: 50%;
@ -130,8 +134,8 @@ const socialbtns = ref<ISocialBtn[]>([
background-repeat: no-repeat;
transition: 0.3s;
opacity: 0.4;
vertical-align: 13%;
}
.lower-buttons a:hover::before {
transform: translateX(-10px);
opacity: 1;

View file

@ -1,13 +1,14 @@
<script setup lang="ts">
import IProject from "../IProject.ts";
defineProps<{project: IProject}>()
</script>
<template>
<div class="project-card d-flex flex-column justify-content-center align-items-center">
<h2 class="project-title" id="title">Name</h2>
<p class="project-description" id="description">Description</p>
<h2 class="project-title" id="title">{{ project.name }}</h2>
<p class="project-description" id="description">{{ project.description }}</p>
<hr class="divider">
<a id="link" class="btn-goto pe-auto"><span class="text-uppercase">Перейти</span></a>
<a id="link" class="btn-goto pe-auto" :href="project.link"><span class="text-uppercase">GitHub</span></a>
</div>
</template>

View file

@ -1,12 +1,30 @@
<script setup lang="ts">
import BackBtn from "./BackBtn.vue";
import ProjectCard from "./ProjectCard.vue";
import IProject from "../IProject.ts";
import { ref, onMounted } from "vue";
import axios from "axios";
const projects = ref<IProject[]>()
onMounted(async () => {
const resp = await axios.get<IProject[]>('http://127.0.0.1:7632/api/get_repos')
if (resp.status !== 200) return
projects.value = resp.data
console.log(projects.value)
})
</script>
<template>
<BackBtn/>
<ProjectCard/>
<div id="projects-container" class="wrapper pe-none">
<ProjectCard v-for="(el, i) in projects"
:project="el"
:key="i"
/>
</div>
</template>
<style scoped>

View file

@ -3,9 +3,10 @@
import InlineSvg from "vue-inline-svg";
const props = defineProps<{btn: ISocialBtn}>()
const onHover = (e: Event) => {(e.target as HTMLInputElement).setAttribute('style', `fill: ${ props.btn.color }`)}
const reset = (e: Event) => { (e.target as HTMLInputElement).setAttribute('style', 'fill: #fff')}
</script>
</script>s
<template>
<a class="btn-social" :href="btn.link" target="_blank">
@ -20,6 +21,6 @@
<style scoped>
inline-svg {
fill: #fff !important;
fill: #fff;
}
</style>

View file

@ -1,5 +1,6 @@
@import url(./fonts/Raleway/stylesheet.css);
@import url(./fonts/Comfortaa/stylesheet.css);
@import url('./fonts/Raleway/stylesheet.css');
@import url('./fonts/Comfortaa/stylesheet.css');
body {
font-family: Raleway, sans-serif;
@ -12,8 +13,6 @@ body {
padding: 50px;
}
path {
transition: 0.3s;
}

View file

@ -2,7 +2,7 @@
# yarn lockfile v1
"@babel/parser@^7.16.4":
"@babel/parser@^7.16.4", "@babel/parser@^7.20.15", "@babel/parser@^7.21.3":
version "7.21.5"
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.21.5.tgz#821bb520118fd25b982eaf8d37421cf5c64a312b"
integrity sha512-J+IxH2IsxV4HbnTrSWgMAQj0UEo61hDA4Ny8h8PCX0MLXiibqHbqIOVneqdocemSBc22VpBKxt4J6FQzy9HarQ==
@ -117,6 +117,11 @@
resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.17.18.tgz#3a8e57153905308db357fd02f57c180ee3a0a1fa"
integrity sha512-qU25Ma1I3NqTSHJUOKi9sAH1/Mzuvlke0ioMJRthLXKm7JiSKVwFghlGbDLOO2sARECGhja4xYfRAZNPAkooYg==
"@jridgewell/sourcemap-codec@^1.4.13":
version "1.4.15"
resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32"
integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==
"@popperjs/core@^2.11.7":
version "2.11.7"
resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.7.tgz#ccab5c8f7dc557a52ca3288c10075c9ccd37fff7"
@ -148,28 +153,28 @@
dependencies:
"@volar/language-core" "1.4.1"
"@volar/vue-language-core@1.6.1":
version "1.6.1"
resolved "https://registry.yarnpkg.com/@volar/vue-language-core/-/vue-language-core-1.6.1.tgz#41bcce44d543e461a4e1aa912af677ef862933a2"
integrity sha512-lIuxzvIx5U8MfoF+vrXNG1aZgmk8T0uyPEwI8g3EUJdESuU0qIKM84o+L4TUw77IQCYXiSefaJmsSSY87/VWnA==
"@volar/vue-language-core@1.6.2":
version "1.6.2"
resolved "https://registry.yarnpkg.com/@volar/vue-language-core/-/vue-language-core-1.6.2.tgz#1652e74dd41f5e546d68dbc773fec21dc16b1a66"
integrity sha512-xcp4PMSoWAwBC6Lq8vmCCL6dShQtmgJXYvDeaBotGsKl5YbHermcR7U5Mog3mv6p2EIV1ErjhAzy5RgBsz17rQ==
dependencies:
"@volar/language-core" "1.4.1"
"@volar/source-map" "1.4.1"
"@vue/compiler-dom" "^3.2.0"
"@vue/compiler-sfc" "^3.2.0"
"@vue/reactivity" "^3.2.0"
"@vue/shared" "^3.2.0"
"@vue/compiler-dom" "^3.3.0-beta.3"
"@vue/compiler-sfc" "^3.3.0-beta.3"
"@vue/reactivity" "^3.3.0-beta.3"
"@vue/shared" "^3.3.0-beta.3"
minimatch "^9.0.0"
muggle-string "^0.2.2"
vue-template-compiler "^2.7.14"
"@volar/vue-typescript@1.6.1":
version "1.6.1"
resolved "https://registry.yarnpkg.com/@volar/vue-typescript/-/vue-typescript-1.6.1.tgz#788b7d454e9ba66ff83695ecc2e17939e5ac9222"
integrity sha512-5mhG6Lv2niq/AGNvHy4RSAGlJhkR+EcH7zRQ19JlffzhWDVXEdDp8luSSabCkrJzejXIMh0rsTGlKy2EFYy7vQ==
"@volar/vue-typescript@1.6.2":
version "1.6.2"
resolved "https://registry.yarnpkg.com/@volar/vue-typescript/-/vue-typescript-1.6.2.tgz#6ca23f42d6b0598e9e1cf1b0e7fa9c69781a11a7"
integrity sha512-9eWmdB2oW48FhQwebjrzk2uphlEw9RxJACN8DCz3xwShT/XyfDDUT99aTT1esULSV2fWijoSImXzb+bq4Vo3mQ==
dependencies:
"@volar/typescript" "1.4.1"
"@volar/vue-language-core" "1.6.1"
"@volar/vue-language-core" "1.6.2"
"@vue/compiler-core@3.2.47":
version "3.2.47"
@ -181,7 +186,17 @@
estree-walker "^2.0.2"
source-map "^0.6.1"
"@vue/compiler-dom@3.2.47", "@vue/compiler-dom@^3.2.0":
"@vue/compiler-core@3.3.0-beta.3":
version "3.3.0-beta.3"
resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.3.0-beta.3.tgz#3cc98d9ef25d2f890717f8a15fe65870910e984f"
integrity sha512-mv2rPo4JHou6ebm7+U/wO1HpA6W1zDfTqbt4fqjoXrMwU4DWNgRcLKTXG6G3cXV4mOe+2YgWspfxEzo7fPTMKg==
dependencies:
"@babel/parser" "^7.21.3"
"@vue/shared" "3.3.0-beta.3"
estree-walker "^2.0.2"
source-map-js "^1.0.2"
"@vue/compiler-dom@3.2.47":
version "3.2.47"
resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.2.47.tgz#a0b06caf7ef7056939e563dcaa9cbde30794f305"
integrity sha512-dBBnEHEPoftUiS03a4ggEig74J2YBZ2UIeyfpcRM2tavgMWo4bsEfgCGsu+uJIL/vax9S+JztH8NmQerUo7shQ==
@ -189,7 +204,15 @@
"@vue/compiler-core" "3.2.47"
"@vue/shared" "3.2.47"
"@vue/compiler-sfc@3.2.47", "@vue/compiler-sfc@^3.2.0":
"@vue/compiler-dom@3.3.0-beta.3", "@vue/compiler-dom@^3.3.0-beta.3":
version "3.3.0-beta.3"
resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.3.0-beta.3.tgz#8b1d76428413d51d76a7b3f567ccea47428d5ebe"
integrity sha512-e7VpjN9wYiuJdJos6Uoe501CzdMkfaEr/27Ks4Ss7Irtcj5YA/S1OROZ35Xl2Pc3ctx6beq5RpcOvnMqh0hcaA==
dependencies:
"@vue/compiler-core" "3.3.0-beta.3"
"@vue/shared" "3.3.0-beta.3"
"@vue/compiler-sfc@3.2.47":
version "3.2.47"
resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.2.47.tgz#1bdc36f6cdc1643f72e2c397eb1a398f5004ad3d"
integrity sha512-rog05W+2IFfxjMcFw10tM9+f7i/+FFpZJJ5XHX72NP9eC2uRD+42M3pYcQqDXVYoj74kHMSEdQ/WmCjt8JFksQ==
@ -205,6 +228,22 @@
postcss "^8.1.10"
source-map "^0.6.1"
"@vue/compiler-sfc@^3.3.0-beta.3":
version "3.3.0-beta.3"
resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.3.0-beta.3.tgz#8d60a57eaf6a8675463c4640124dafecf78c8961"
integrity sha512-6shZNooetShjSMHJvgVoE0EM8pOMV5vnrzsHoCU06stzV+kqRJQpbN7xf2s9wK2fgHMIBSMINrM9AuZiQnNCJg==
dependencies:
"@babel/parser" "^7.20.15"
"@vue/compiler-core" "3.3.0-beta.3"
"@vue/compiler-dom" "3.3.0-beta.3"
"@vue/compiler-ssr" "3.3.0-beta.3"
"@vue/reactivity-transform" "3.3.0-beta.3"
"@vue/shared" "3.3.0-beta.3"
estree-walker "^2.0.2"
magic-string "^0.30.0"
postcss "^8.1.10"
source-map-js "^1.0.2"
"@vue/compiler-ssr@3.2.47":
version "3.2.47"
resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.2.47.tgz#35872c01a273aac4d6070ab9d8da918ab13057ee"
@ -213,7 +252,15 @@
"@vue/compiler-dom" "3.2.47"
"@vue/shared" "3.2.47"
"@vue/devtools-api@^6.0.0":
"@vue/compiler-ssr@3.3.0-beta.3":
version "3.3.0-beta.3"
resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.3.0-beta.3.tgz#179e2c0a4de617addfb6ebc0776225265f5c7829"
integrity sha512-egJ0lEVAod3Hpnw96cJ/0a9qv5f5h5/VCBpKYT8scqkzoMsikh8AJant2omokBCL/Ut5UAMLVQlA5b66+2Ys/g==
dependencies:
"@vue/compiler-dom" "3.3.0-beta.3"
"@vue/shared" "3.3.0-beta.3"
"@vue/devtools-api@^6.4.5":
version "6.5.0"
resolved "https://registry.yarnpkg.com/@vue/devtools-api/-/devtools-api-6.5.0.tgz#98b99425edee70b4c992692628fa1ea2c1e57d07"
integrity sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q==
@ -229,13 +276,31 @@
estree-walker "^2.0.2"
magic-string "^0.25.7"
"@vue/reactivity@3.2.47", "@vue/reactivity@^3.2.0":
"@vue/reactivity-transform@3.3.0-beta.3":
version "3.3.0-beta.3"
resolved "https://registry.yarnpkg.com/@vue/reactivity-transform/-/reactivity-transform-3.3.0-beta.3.tgz#424a70d43fb4893131b2c1fba9a9e6806ebeabe0"
integrity sha512-aM3TgBca9QMMu/9B9ASRVvckeZpAdJO9nmQh5UCznhoDYjVxQPS+sCQvH6TLOjPB1MDQMVQYg4ZiPqfVVo7NbA==
dependencies:
"@babel/parser" "^7.20.15"
"@vue/compiler-core" "3.3.0-beta.3"
"@vue/shared" "3.3.0-beta.3"
estree-walker "^2.0.2"
magic-string "^0.30.0"
"@vue/reactivity@3.2.47":
version "3.2.47"
resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.2.47.tgz#1d6399074eadfc3ed35c727e2fd707d6881140b6"
integrity sha512-7khqQ/75oyyg+N/e+iwV6lpy1f5wq759NdlS1fpAhFXa8VeAIKGgk2E/C4VF59lx5b+Ezs5fpp/5WsRYXQiKxQ==
dependencies:
"@vue/shared" "3.2.47"
"@vue/reactivity@^3.3.0-beta.3":
version "3.3.0-beta.3"
resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.3.0-beta.3.tgz#8f4929df4195f9d1b5a083d4c66d22932dfcc89d"
integrity sha512-9VjWfWgZJ18YXEkfnDfZr33RyLBa6zc0RARLkMqMApWvM26eusZAZ4hhyxlgODBU/mEFk4XOGIAtwwSQedA0MQ==
dependencies:
"@vue/shared" "3.3.0-beta.3"
"@vue/runtime-core@3.2.47":
version "3.2.47"
resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.2.47.tgz#406ebade3d5551c00fc6409bbc1eeb10f32e121d"
@ -261,11 +326,30 @@
"@vue/compiler-ssr" "3.2.47"
"@vue/shared" "3.2.47"
"@vue/shared@3.2.47", "@vue/shared@^3.2.0":
"@vue/shared@3.2.47":
version "3.2.47"
resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.2.47.tgz#e597ef75086c6e896ff5478a6bfc0a7aa4bbd14c"
integrity sha512-BHGyyGN3Q97EZx0taMQ+OLNuZcW3d37ZEVmEAyeoA9ERdGvm9Irc/0Fua8SNyOtV1w6BS4q25wbMzJujO9HIfQ==
"@vue/shared@3.3.0-beta.3", "@vue/shared@^3.3.0-beta.3":
version "3.3.0-beta.3"
resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.3.0-beta.3.tgz#dc19df6124e157030b3e7c8f471f497f9528a7be"
integrity sha512-st1SnB/Bkbb9TsieeI4TRX9TqHYIR5wvIma3ZtEben55EYSWa1q5u2BhTNgABSdH+rv3Xwfrvpwh5PmCw6Y53g==
asynckit@^0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==
axios@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/axios/-/axios-1.4.0.tgz#38a7bf1224cd308de271146038b551d725f0be1f"
integrity sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==
dependencies:
follow-redirects "^1.15.0"
form-data "^4.0.0"
proxy-from-env "^1.1.0"
balanced-match@^1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
@ -283,6 +367,13 @@ brace-expansion@^2.0.1:
dependencies:
balanced-match "^1.0.0"
combined-stream@^1.0.8:
version "1.0.8"
resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==
dependencies:
delayed-stream "~1.0.0"
csstype@^2.6.8:
version "2.6.21"
resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.21.tgz#2efb85b7cc55c80017c66a5ad7cbd931fda3a90e"
@ -293,6 +384,11 @@ de-indent@^1.0.2:
resolved "https://registry.yarnpkg.com/de-indent/-/de-indent-1.0.2.tgz#b2038e846dc33baa5796128d0804b455b8c1e21d"
integrity sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==
delayed-stream@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==
esbuild@^0.17.5:
version "0.17.18"
resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.17.18.tgz#f4f8eb6d77384d68cd71c53eb6601c7efe05e746"
@ -326,6 +422,20 @@ estree-walker@^2.0.2:
resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac"
integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==
follow-redirects@^1.15.0:
version "1.15.2"
resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13"
integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==
form-data@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452"
integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==
dependencies:
asynckit "^0.4.0"
combined-stream "^1.0.8"
mime-types "^2.1.12"
fsevents@~2.3.2:
version "2.3.2"
resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
@ -350,6 +460,25 @@ magic-string@^0.25.7:
dependencies:
sourcemap-codec "^1.4.8"
magic-string@^0.30.0:
version "0.30.0"
resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.0.tgz#fd58a4748c5c4547338a424e90fa5dd17f4de529"
integrity sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==
dependencies:
"@jridgewell/sourcemap-codec" "^1.4.13"
mime-db@1.52.0:
version "1.52.0"
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70"
integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
mime-types@^2.1.12:
version "2.1.35"
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a"
integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
dependencies:
mime-db "1.52.0"
minimatch@^9.0.0:
version "9.0.0"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.0.tgz#bfc8e88a1c40ffd40c172ddac3decb8451503b56"
@ -381,10 +510,15 @@ postcss@^8.1.10, postcss@^8.4.23:
picocolors "^1.0.0"
source-map-js "^1.0.2"
proxy-from-env@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2"
integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==
rollup@^3.21.0:
version "3.21.1"
resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.21.1.tgz#d56f32ee041383b60909e3d3195b54b69912dbb0"
integrity sha512-GpUgqWCw56OSiBKf7lcAITstYiBV1/EKaKYPl9r8HgAxc6/qYAVw1PaHWnvHWFziRaf4HsVCDLq/IGtBi1K/Zw==
version "3.21.2"
resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.21.2.tgz#c3a06bc8d235a0c0a8f1f7d9da73426f53706bdc"
integrity sha512-c4vC+JZ3bbF4Kqq2TtM7zSKtSyMybFOjqmomFax3xpfYaPZDZ4iz8NMIuBRMjnXOcKYozw7bC6vhJjiWD6JpzQ==
optionalDependencies:
fsevents "~2.3.2"
@ -763,12 +897,12 @@ vue-inline-svg@^3.1.2:
resolved "https://registry.yarnpkg.com/vue-inline-svg/-/vue-inline-svg-3.1.2.tgz#bc83ad67aacfda6c7c76364d89775a06e8270136"
integrity sha512-K01sLANBnjosObee4JrBu/igXpYIFhQfy4EcEyVWxEWf6nmrxp7Isz6pmeRCsWx6XGrGWfrQH3uNwt4nOmrFdA==
vue-router@^4.0.13:
version "4.0.13"
resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-4.0.13.tgz#47f06e2f8ff6120bfff3c27ade1356cc9de7d870"
integrity sha512-LmXrC+BkDRLak+d5xTMgUYraT3Nj0H/vCbP+7usGvIl9Viqd1UP6AsP0i69pSbn9O0dXK/xCdp4yPw21HqV9Jw==
vue-router@^4.1.6:
version "4.1.6"
resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-4.1.6.tgz#b70303737e12b4814578d21d68d21618469375a1"
integrity sha512-DYWYwsG6xNPmLq/FmZn8Ip+qrhFEzA14EI12MsMgVxvHFDYvlr4NXpVF5hrRH1wVcDP8fGi5F4rxuJSl8/r+EQ==
dependencies:
"@vue/devtools-api" "^6.0.0"
"@vue/devtools-api" "^6.4.5"
vue-template-compiler@^2.7.14:
version "2.7.14"
@ -779,12 +913,12 @@ vue-template-compiler@^2.7.14:
he "^1.2.0"
vue-tsc@^1.4.2:
version "1.6.1"
resolved "https://registry.yarnpkg.com/vue-tsc/-/vue-tsc-1.6.1.tgz#9fbc3ee8ba643c41e051c4f04b3af847b7b6ef59"
integrity sha512-cKKKrv98MdU9kgd434fkjcIpU7a5bUflhklF9usf/GzebjmZpaht7tYGm/MNdBz7V9icySceCzCr3RiG02mOJg==
version "1.6.2"
resolved "https://registry.yarnpkg.com/vue-tsc/-/vue-tsc-1.6.2.tgz#65989e0fb68be561b3e810b5e066d83df31b579f"
integrity sha512-ts3I9x4Psx2q+DVo/ks1xjPdQ+EefaRxCBMU9U9EFz8IJFKpWrKBFelbzsGkfXvqbM0oZsmh/4wpYhgkrSKCoQ==
dependencies:
"@volar/vue-language-core" "1.6.1"
"@volar/vue-typescript" "1.6.1"
"@volar/vue-language-core" "1.6.2"
"@volar/vue-typescript" "1.6.2"
semver "^7.3.8"
vue3-particles@^2.9.3:

View file

@ -2,6 +2,7 @@ from fastapi import FastAPI
from fastapi.staticfiles import StaticFiles
from fastapi.templating import Jinja2Templates
from fastapi import Request
from starlette.middleware.cors import CORSMiddleware
import uvicorn
import requests
@ -31,6 +32,14 @@ app = FastAPI()
app.mount("/static", StaticFiles(directory="static"), name="static")
templates = Jinja2Templates(directory="static/templates")
app.add_middleware(
CORSMiddleware,
allow_origins=['*'],
allow_credentials=True,
allow_methods=['*'],
allow_headers=['*'],
)
# Initialize global variables
repos = []
code_stats = {}

View file

@ -5,4 +5,4 @@ from dataclasses import dataclass
class Project:
name: str
description: str
url: str
link: str