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"> <html lang="en">
<head> <head>
<meta charset="UTF-8" /> <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" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Vite + Vue + TS</title> <title>Mootfrost DEV</title>
</head> </head>
<body> <body>
<div id="app"></div> <div id="app"></div>

View file

@ -10,11 +10,12 @@
}, },
"dependencies": { "dependencies": {
"@popperjs/core": "^2.11.7", "@popperjs/core": "^2.11.7",
"axios": "^1.4.0",
"bootstrap": "^5.2.3", "bootstrap": "^5.2.3",
"tsparticles": "^2.9.3", "tsparticles": "^2.9.3",
"vue": "^3.2.47", "vue": "^3.2.47",
"vue-inline-svg": "^3.1.2", "vue-inline-svg": "^3.1.2",
"vue-router": "^4.0.13", "vue-router": "^4.1.6",
"vue3-particles": "^2.9.3" "vue3-particles": "^2.9.3"
}, },
"devDependencies": { "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"> <script setup lang="ts">
import { ref } from 'vue' import { ref, onMounted } from 'vue'
import BackBtn from "./BackBtn.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> </script>
<template> <template>
@ -12,11 +42,11 @@
<div class="wrapper pe-none"> <div class="wrapper pe-none">
<span class="main-title">Обо мне:</span> <span class="main-title">Обо мне:</span>
<p class="content"> <p class="content">
Семейкин Андрей,<br> Семейкин Андрей, {{age}}<br>
Живу в Москве, учусь в 1580<br> Живу в Москве, учусь в 1580<br>
Пишу на C#, Python, JS. Немного знаю C++ и Java<br> Пишу на C#, Python, JS. Немного знаю C++ и Java<br>
Разбираюсь в Linux, Docker, Drone CI<br> Разбираюсь в Linux, Docker, Drone CI<br>
За последнюю неделю {{codeStats}} За последнюю неделю: {{codeStats}}
</p> </p>
</div> </div>
</template> </template>

View file

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

View file

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

View file

@ -1,13 +1,14 @@
<script setup lang="ts"> <script setup lang="ts">
import IProject from "../IProject.ts";
defineProps<{project: IProject}>()
</script> </script>
<template> <template>
<div class="project-card d-flex flex-column justify-content-center align-items-center"> <div class="project-card d-flex flex-column justify-content-center align-items-center">
<h2 class="project-title" id="title">Name</h2> <h2 class="project-title" id="title">{{ project.name }}</h2>
<p class="project-description" id="description">Description</p> <p class="project-description" id="description">{{ project.description }}</p>
<hr class="divider"> <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> </div>
</template> </template>

View file

@ -1,12 +1,30 @@
<script setup lang="ts"> <script setup lang="ts">
import BackBtn from "./BackBtn.vue"; import BackBtn from "./BackBtn.vue";
import ProjectCard from "./ProjectCard.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> </script>
<template> <template>
<BackBtn/> <BackBtn/>
<ProjectCard/> <div id="projects-container" class="wrapper pe-none">
<ProjectCard v-for="(el, i) in projects"
:project="el"
:key="i"
/>
</div>
</template> </template>
<style scoped> <style scoped>

View file

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

View file

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

View file

@ -2,7 +2,7 @@
# yarn lockfile v1 # 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" version "7.21.5"
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.21.5.tgz#821bb520118fd25b982eaf8d37421cf5c64a312b" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.21.5.tgz#821bb520118fd25b982eaf8d37421cf5c64a312b"
integrity sha512-J+IxH2IsxV4HbnTrSWgMAQj0UEo61hDA4Ny8h8PCX0MLXiibqHbqIOVneqdocemSBc22VpBKxt4J6FQzy9HarQ== integrity sha512-J+IxH2IsxV4HbnTrSWgMAQj0UEo61hDA4Ny8h8PCX0MLXiibqHbqIOVneqdocemSBc22VpBKxt4J6FQzy9HarQ==
@ -117,6 +117,11 @@
resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.17.18.tgz#3a8e57153905308db357fd02f57c180ee3a0a1fa" resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.17.18.tgz#3a8e57153905308db357fd02f57c180ee3a0a1fa"
integrity sha512-qU25Ma1I3NqTSHJUOKi9sAH1/Mzuvlke0ioMJRthLXKm7JiSKVwFghlGbDLOO2sARECGhja4xYfRAZNPAkooYg== 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": "@popperjs/core@^2.11.7":
version "2.11.7" version "2.11.7"
resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.7.tgz#ccab5c8f7dc557a52ca3288c10075c9ccd37fff7" resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.7.tgz#ccab5c8f7dc557a52ca3288c10075c9ccd37fff7"
@ -148,28 +153,28 @@
dependencies: dependencies:
"@volar/language-core" "1.4.1" "@volar/language-core" "1.4.1"
"@volar/vue-language-core@1.6.1": "@volar/vue-language-core@1.6.2":
version "1.6.1" version "1.6.2"
resolved "https://registry.yarnpkg.com/@volar/vue-language-core/-/vue-language-core-1.6.1.tgz#41bcce44d543e461a4e1aa912af677ef862933a2" resolved "https://registry.yarnpkg.com/@volar/vue-language-core/-/vue-language-core-1.6.2.tgz#1652e74dd41f5e546d68dbc773fec21dc16b1a66"
integrity sha512-lIuxzvIx5U8MfoF+vrXNG1aZgmk8T0uyPEwI8g3EUJdESuU0qIKM84o+L4TUw77IQCYXiSefaJmsSSY87/VWnA== integrity sha512-xcp4PMSoWAwBC6Lq8vmCCL6dShQtmgJXYvDeaBotGsKl5YbHermcR7U5Mog3mv6p2EIV1ErjhAzy5RgBsz17rQ==
dependencies: dependencies:
"@volar/language-core" "1.4.1" "@volar/language-core" "1.4.1"
"@volar/source-map" "1.4.1" "@volar/source-map" "1.4.1"
"@vue/compiler-dom" "^3.2.0" "@vue/compiler-dom" "^3.3.0-beta.3"
"@vue/compiler-sfc" "^3.2.0" "@vue/compiler-sfc" "^3.3.0-beta.3"
"@vue/reactivity" "^3.2.0" "@vue/reactivity" "^3.3.0-beta.3"
"@vue/shared" "^3.2.0" "@vue/shared" "^3.3.0-beta.3"
minimatch "^9.0.0" minimatch "^9.0.0"
muggle-string "^0.2.2" muggle-string "^0.2.2"
vue-template-compiler "^2.7.14" vue-template-compiler "^2.7.14"
"@volar/vue-typescript@1.6.1": "@volar/vue-typescript@1.6.2":
version "1.6.1" version "1.6.2"
resolved "https://registry.yarnpkg.com/@volar/vue-typescript/-/vue-typescript-1.6.1.tgz#788b7d454e9ba66ff83695ecc2e17939e5ac9222" resolved "https://registry.yarnpkg.com/@volar/vue-typescript/-/vue-typescript-1.6.2.tgz#6ca23f42d6b0598e9e1cf1b0e7fa9c69781a11a7"
integrity sha512-5mhG6Lv2niq/AGNvHy4RSAGlJhkR+EcH7zRQ19JlffzhWDVXEdDp8luSSabCkrJzejXIMh0rsTGlKy2EFYy7vQ== integrity sha512-9eWmdB2oW48FhQwebjrzk2uphlEw9RxJACN8DCz3xwShT/XyfDDUT99aTT1esULSV2fWijoSImXzb+bq4Vo3mQ==
dependencies: dependencies:
"@volar/typescript" "1.4.1" "@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": "@vue/compiler-core@3.2.47":
version "3.2.47" version "3.2.47"
@ -181,7 +186,17 @@
estree-walker "^2.0.2" estree-walker "^2.0.2"
source-map "^0.6.1" 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" version "3.2.47"
resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.2.47.tgz#a0b06caf7ef7056939e563dcaa9cbde30794f305" resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.2.47.tgz#a0b06caf7ef7056939e563dcaa9cbde30794f305"
integrity sha512-dBBnEHEPoftUiS03a4ggEig74J2YBZ2UIeyfpcRM2tavgMWo4bsEfgCGsu+uJIL/vax9S+JztH8NmQerUo7shQ== integrity sha512-dBBnEHEPoftUiS03a4ggEig74J2YBZ2UIeyfpcRM2tavgMWo4bsEfgCGsu+uJIL/vax9S+JztH8NmQerUo7shQ==
@ -189,7 +204,15 @@
"@vue/compiler-core" "3.2.47" "@vue/compiler-core" "3.2.47"
"@vue/shared" "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" version "3.2.47"
resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.2.47.tgz#1bdc36f6cdc1643f72e2c397eb1a398f5004ad3d" resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.2.47.tgz#1bdc36f6cdc1643f72e2c397eb1a398f5004ad3d"
integrity sha512-rog05W+2IFfxjMcFw10tM9+f7i/+FFpZJJ5XHX72NP9eC2uRD+42M3pYcQqDXVYoj74kHMSEdQ/WmCjt8JFksQ== integrity sha512-rog05W+2IFfxjMcFw10tM9+f7i/+FFpZJJ5XHX72NP9eC2uRD+42M3pYcQqDXVYoj74kHMSEdQ/WmCjt8JFksQ==
@ -205,6 +228,22 @@
postcss "^8.1.10" postcss "^8.1.10"
source-map "^0.6.1" 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": "@vue/compiler-ssr@3.2.47":
version "3.2.47" version "3.2.47"
resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.2.47.tgz#35872c01a273aac4d6070ab9d8da918ab13057ee" 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/compiler-dom" "3.2.47"
"@vue/shared" "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" version "6.5.0"
resolved "https://registry.yarnpkg.com/@vue/devtools-api/-/devtools-api-6.5.0.tgz#98b99425edee70b4c992692628fa1ea2c1e57d07" resolved "https://registry.yarnpkg.com/@vue/devtools-api/-/devtools-api-6.5.0.tgz#98b99425edee70b4c992692628fa1ea2c1e57d07"
integrity sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q== integrity sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q==
@ -229,13 +276,31 @@
estree-walker "^2.0.2" estree-walker "^2.0.2"
magic-string "^0.25.7" 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" version "3.2.47"
resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.2.47.tgz#1d6399074eadfc3ed35c727e2fd707d6881140b6" resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.2.47.tgz#1d6399074eadfc3ed35c727e2fd707d6881140b6"
integrity sha512-7khqQ/75oyyg+N/e+iwV6lpy1f5wq759NdlS1fpAhFXa8VeAIKGgk2E/C4VF59lx5b+Ezs5fpp/5WsRYXQiKxQ== integrity sha512-7khqQ/75oyyg+N/e+iwV6lpy1f5wq759NdlS1fpAhFXa8VeAIKGgk2E/C4VF59lx5b+Ezs5fpp/5WsRYXQiKxQ==
dependencies: dependencies:
"@vue/shared" "3.2.47" "@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": "@vue/runtime-core@3.2.47":
version "3.2.47" version "3.2.47"
resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.2.47.tgz#406ebade3d5551c00fc6409bbc1eeb10f32e121d" 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/compiler-ssr" "3.2.47"
"@vue/shared" "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" version "3.2.47"
resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.2.47.tgz#e597ef75086c6e896ff5478a6bfc0a7aa4bbd14c" resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.2.47.tgz#e597ef75086c6e896ff5478a6bfc0a7aa4bbd14c"
integrity sha512-BHGyyGN3Q97EZx0taMQ+OLNuZcW3d37ZEVmEAyeoA9ERdGvm9Irc/0Fua8SNyOtV1w6BS4q25wbMzJujO9HIfQ== 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: balanced-match@^1.0.0:
version "1.0.2" version "1.0.2"
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
@ -283,6 +367,13 @@ brace-expansion@^2.0.1:
dependencies: dependencies:
balanced-match "^1.0.0" 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: csstype@^2.6.8:
version "2.6.21" version "2.6.21"
resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.21.tgz#2efb85b7cc55c80017c66a5ad7cbd931fda3a90e" 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" resolved "https://registry.yarnpkg.com/de-indent/-/de-indent-1.0.2.tgz#b2038e846dc33baa5796128d0804b455b8c1e21d"
integrity sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg== 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: esbuild@^0.17.5:
version "0.17.18" version "0.17.18"
resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.17.18.tgz#f4f8eb6d77384d68cd71c53eb6601c7efe05e746" 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" resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac"
integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== 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: fsevents@~2.3.2:
version "2.3.2" version "2.3.2"
resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
@ -350,6 +460,25 @@ magic-string@^0.25.7:
dependencies: dependencies:
sourcemap-codec "^1.4.8" 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: minimatch@^9.0.0:
version "9.0.0" version "9.0.0"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.0.tgz#bfc8e88a1c40ffd40c172ddac3decb8451503b56" 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" picocolors "^1.0.0"
source-map-js "^1.0.2" 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: rollup@^3.21.0:
version "3.21.1" version "3.21.2"
resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.21.1.tgz#d56f32ee041383b60909e3d3195b54b69912dbb0" resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.21.2.tgz#c3a06bc8d235a0c0a8f1f7d9da73426f53706bdc"
integrity sha512-GpUgqWCw56OSiBKf7lcAITstYiBV1/EKaKYPl9r8HgAxc6/qYAVw1PaHWnvHWFziRaf4HsVCDLq/IGtBi1K/Zw== integrity sha512-c4vC+JZ3bbF4Kqq2TtM7zSKtSyMybFOjqmomFax3xpfYaPZDZ4iz8NMIuBRMjnXOcKYozw7bC6vhJjiWD6JpzQ==
optionalDependencies: optionalDependencies:
fsevents "~2.3.2" 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" resolved "https://registry.yarnpkg.com/vue-inline-svg/-/vue-inline-svg-3.1.2.tgz#bc83ad67aacfda6c7c76364d89775a06e8270136"
integrity sha512-K01sLANBnjosObee4JrBu/igXpYIFhQfy4EcEyVWxEWf6nmrxp7Isz6pmeRCsWx6XGrGWfrQH3uNwt4nOmrFdA== integrity sha512-K01sLANBnjosObee4JrBu/igXpYIFhQfy4EcEyVWxEWf6nmrxp7Isz6pmeRCsWx6XGrGWfrQH3uNwt4nOmrFdA==
vue-router@^4.0.13: vue-router@^4.1.6:
version "4.0.13" version "4.1.6"
resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-4.0.13.tgz#47f06e2f8ff6120bfff3c27ade1356cc9de7d870" resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-4.1.6.tgz#b70303737e12b4814578d21d68d21618469375a1"
integrity sha512-LmXrC+BkDRLak+d5xTMgUYraT3Nj0H/vCbP+7usGvIl9Viqd1UP6AsP0i69pSbn9O0dXK/xCdp4yPw21HqV9Jw== integrity sha512-DYWYwsG6xNPmLq/FmZn8Ip+qrhFEzA14EI12MsMgVxvHFDYvlr4NXpVF5hrRH1wVcDP8fGi5F4rxuJSl8/r+EQ==
dependencies: dependencies:
"@vue/devtools-api" "^6.0.0" "@vue/devtools-api" "^6.4.5"
vue-template-compiler@^2.7.14: vue-template-compiler@^2.7.14:
version "2.7.14" version "2.7.14"
@ -779,12 +913,12 @@ vue-template-compiler@^2.7.14:
he "^1.2.0" he "^1.2.0"
vue-tsc@^1.4.2: vue-tsc@^1.4.2:
version "1.6.1" version "1.6.2"
resolved "https://registry.yarnpkg.com/vue-tsc/-/vue-tsc-1.6.1.tgz#9fbc3ee8ba643c41e051c4f04b3af847b7b6ef59" resolved "https://registry.yarnpkg.com/vue-tsc/-/vue-tsc-1.6.2.tgz#65989e0fb68be561b3e810b5e066d83df31b579f"
integrity sha512-cKKKrv98MdU9kgd434fkjcIpU7a5bUflhklF9usf/GzebjmZpaht7tYGm/MNdBz7V9icySceCzCr3RiG02mOJg== integrity sha512-ts3I9x4Psx2q+DVo/ks1xjPdQ+EefaRxCBMU9U9EFz8IJFKpWrKBFelbzsGkfXvqbM0oZsmh/4wpYhgkrSKCoQ==
dependencies: dependencies:
"@volar/vue-language-core" "1.6.1" "@volar/vue-language-core" "1.6.2"
"@volar/vue-typescript" "1.6.1" "@volar/vue-typescript" "1.6.2"
semver "^7.3.8" semver "^7.3.8"
vue3-particles@^2.9.3: vue3-particles@^2.9.3:

View file

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

View file

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