From b62f6d87c784a751c7376301d4f183ae5d41830a Mon Sep 17 00:00:00 2001 From: OleSTEEP Date: Sun, 28 Sep 2025 15:59:46 +0300 Subject: [PATCH] backend: initial --- .gitignore | 3 ++ backend/main.py | 32 ++++++++++++++++++ types.py => backend/vntypes.py | 11 +++--- {vnshed => frontend}/.gitignore | 0 {vnshed => frontend}/.npmrc | 0 {vnshed => frontend}/README.md | 0 {vnshed => frontend}/jsconfig.json | 0 {vnshed => frontend}/package-lock.json | 0 {vnshed => frontend}/package.json | 0 {vnshed => frontend}/src/app.d.ts | 0 {vnshed => frontend}/src/app.html | 0 .../src/lib/assets/delete.svg | 0 {vnshed => frontend}/src/lib/assets/edit.svg | 0 .../src/lib/assets/favicon.svg | 0 .../src/lib/components/add_button.svelte | 0 .../src/lib/components/calendar.svelte | 0 .../src/lib/components/create_button.svelte | 0 .../src/lib/components/horisontal_bar.svelte | 0 .../src/lib/components/horisontal_item.svelte | 0 .../src/lib/components/image.svelte | 0 .../src/lib/components/img_button.svelte | 0 .../src/lib/components/queue_item.svelte | 0 {vnshed => frontend}/src/lib/css/global.css | 0 {vnshed => frontend}/src/lib/css/themes.css | 0 {vnshed => frontend}/src/lib/functions.js | 0 {vnshed => frontend}/src/lib/index.js | 0 .../src/routes/+layout.svelte | 24 ++++++++----- {vnshed => frontend}/src/routes/+page.svelte | 0 .../static/font/Inter-Light.woff2 | Bin {vnshed => frontend}/static/robots.txt | 0 {vnshed => frontend}/svelte.config.js | 0 {vnshed => frontend}/vite.config.js | 0 test_data.json | 4 +-- 33 files changed, 59 insertions(+), 15 deletions(-) create mode 100644 backend/main.py rename types.py => backend/vntypes.py (57%) rename {vnshed => frontend}/.gitignore (100%) rename {vnshed => frontend}/.npmrc (100%) rename {vnshed => frontend}/README.md (100%) rename {vnshed => frontend}/jsconfig.json (100%) rename {vnshed => frontend}/package-lock.json (100%) rename {vnshed => frontend}/package.json (100%) rename {vnshed => frontend}/src/app.d.ts (100%) rename {vnshed => frontend}/src/app.html (100%) rename {vnshed => frontend}/src/lib/assets/delete.svg (100%) rename {vnshed => frontend}/src/lib/assets/edit.svg (100%) rename {vnshed => frontend}/src/lib/assets/favicon.svg (100%) rename {vnshed => frontend}/src/lib/components/add_button.svelte (100%) rename {vnshed => frontend}/src/lib/components/calendar.svelte (100%) rename {vnshed => frontend}/src/lib/components/create_button.svelte (100%) rename {vnshed => frontend}/src/lib/components/horisontal_bar.svelte (100%) rename {vnshed => frontend}/src/lib/components/horisontal_item.svelte (100%) rename {vnshed => frontend}/src/lib/components/image.svelte (100%) rename {vnshed => frontend}/src/lib/components/img_button.svelte (100%) rename {vnshed => frontend}/src/lib/components/queue_item.svelte (100%) rename {vnshed => frontend}/src/lib/css/global.css (100%) rename {vnshed => frontend}/src/lib/css/themes.css (100%) rename {vnshed => frontend}/src/lib/functions.js (100%) rename {vnshed => frontend}/src/lib/index.js (100%) rename {vnshed => frontend}/src/routes/+layout.svelte (81%) rename {vnshed => frontend}/src/routes/+page.svelte (100%) rename {vnshed => frontend}/static/font/Inter-Light.woff2 (100%) rename {vnshed => frontend}/static/robots.txt (100%) rename {vnshed => frontend}/svelte.config.js (100%) rename {vnshed => frontend}/vite.config.js (100%) diff --git a/.gitignore b/.gitignore index 68729d6..260fffd 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,5 @@ +.venv/ +venv/ +__pycache__/ .idea/ .DS_Store \ No newline at end of file diff --git a/backend/main.py b/backend/main.py new file mode 100644 index 0000000..b2a396b --- /dev/null +++ b/backend/main.py @@ -0,0 +1,32 @@ +from fastapi import FastAPI +from fastapi.middleware.cors import CORSMiddleware + +from vntypes import Novel + +app = FastAPI() + +origins = [ + "http://localhost", + "http://localhost:5173", +] + +app.add_middleware( + CORSMiddleware, + allow_origins=origins, + allow_credentials=True, + allow_methods=["*"], + allow_headers=["*"], +) + +@app.get("/") +def read_root(): + return {"Hello": "World"} + +@app.get("/posts/{uuid}") +def get_post(uuid: str): + return uuid + +@app.post("/new") +def new_post(novel: Novel): + print(novel) + return "yay!" \ No newline at end of file diff --git a/types.py b/backend/vntypes.py similarity index 57% rename from types.py rename to backend/vntypes.py index a878c78..41a00de 100644 --- a/types.py +++ b/backend/vntypes.py @@ -1,17 +1,20 @@ + +from pydantic import BaseModel from datetime import datetime -class Novel: +class Novel(BaseModel): title: str description: str - vndb: int + vndb: int | None = None hours_to_read: int tags: list[str] genres: list[str] + badges: list[str] - tg_post: str #url::Url - post_at: datetime + tg_post: str | None = None #url::Url + post_at: datetime | None = None class FullNovel: data: Novel diff --git a/vnshed/.gitignore b/frontend/.gitignore similarity index 100% rename from vnshed/.gitignore rename to frontend/.gitignore diff --git a/vnshed/.npmrc b/frontend/.npmrc similarity index 100% rename from vnshed/.npmrc rename to frontend/.npmrc diff --git a/vnshed/README.md b/frontend/README.md similarity index 100% rename from vnshed/README.md rename to frontend/README.md diff --git a/vnshed/jsconfig.json b/frontend/jsconfig.json similarity index 100% rename from vnshed/jsconfig.json rename to frontend/jsconfig.json diff --git a/vnshed/package-lock.json b/frontend/package-lock.json similarity index 100% rename from vnshed/package-lock.json rename to frontend/package-lock.json diff --git a/vnshed/package.json b/frontend/package.json similarity index 100% rename from vnshed/package.json rename to frontend/package.json diff --git a/vnshed/src/app.d.ts b/frontend/src/app.d.ts similarity index 100% rename from vnshed/src/app.d.ts rename to frontend/src/app.d.ts diff --git a/vnshed/src/app.html b/frontend/src/app.html similarity index 100% rename from vnshed/src/app.html rename to frontend/src/app.html diff --git a/vnshed/src/lib/assets/delete.svg b/frontend/src/lib/assets/delete.svg similarity index 100% rename from vnshed/src/lib/assets/delete.svg rename to frontend/src/lib/assets/delete.svg diff --git a/vnshed/src/lib/assets/edit.svg b/frontend/src/lib/assets/edit.svg similarity index 100% rename from vnshed/src/lib/assets/edit.svg rename to frontend/src/lib/assets/edit.svg diff --git a/vnshed/src/lib/assets/favicon.svg b/frontend/src/lib/assets/favicon.svg similarity index 100% rename from vnshed/src/lib/assets/favicon.svg rename to frontend/src/lib/assets/favicon.svg diff --git a/vnshed/src/lib/components/add_button.svelte b/frontend/src/lib/components/add_button.svelte similarity index 100% rename from vnshed/src/lib/components/add_button.svelte rename to frontend/src/lib/components/add_button.svelte diff --git a/vnshed/src/lib/components/calendar.svelte b/frontend/src/lib/components/calendar.svelte similarity index 100% rename from vnshed/src/lib/components/calendar.svelte rename to frontend/src/lib/components/calendar.svelte diff --git a/vnshed/src/lib/components/create_button.svelte b/frontend/src/lib/components/create_button.svelte similarity index 100% rename from vnshed/src/lib/components/create_button.svelte rename to frontend/src/lib/components/create_button.svelte diff --git a/vnshed/src/lib/components/horisontal_bar.svelte b/frontend/src/lib/components/horisontal_bar.svelte similarity index 100% rename from vnshed/src/lib/components/horisontal_bar.svelte rename to frontend/src/lib/components/horisontal_bar.svelte diff --git a/vnshed/src/lib/components/horisontal_item.svelte b/frontend/src/lib/components/horisontal_item.svelte similarity index 100% rename from vnshed/src/lib/components/horisontal_item.svelte rename to frontend/src/lib/components/horisontal_item.svelte diff --git a/vnshed/src/lib/components/image.svelte b/frontend/src/lib/components/image.svelte similarity index 100% rename from vnshed/src/lib/components/image.svelte rename to frontend/src/lib/components/image.svelte diff --git a/vnshed/src/lib/components/img_button.svelte b/frontend/src/lib/components/img_button.svelte similarity index 100% rename from vnshed/src/lib/components/img_button.svelte rename to frontend/src/lib/components/img_button.svelte diff --git a/vnshed/src/lib/components/queue_item.svelte b/frontend/src/lib/components/queue_item.svelte similarity index 100% rename from vnshed/src/lib/components/queue_item.svelte rename to frontend/src/lib/components/queue_item.svelte diff --git a/vnshed/src/lib/css/global.css b/frontend/src/lib/css/global.css similarity index 100% rename from vnshed/src/lib/css/global.css rename to frontend/src/lib/css/global.css diff --git a/vnshed/src/lib/css/themes.css b/frontend/src/lib/css/themes.css similarity index 100% rename from vnshed/src/lib/css/themes.css rename to frontend/src/lib/css/themes.css diff --git a/vnshed/src/lib/functions.js b/frontend/src/lib/functions.js similarity index 100% rename from vnshed/src/lib/functions.js rename to frontend/src/lib/functions.js diff --git a/vnshed/src/lib/index.js b/frontend/src/lib/index.js similarity index 100% rename from vnshed/src/lib/index.js rename to frontend/src/lib/index.js diff --git a/vnshed/src/routes/+layout.svelte b/frontend/src/routes/+layout.svelte similarity index 81% rename from vnshed/src/routes/+layout.svelte rename to frontend/src/routes/+layout.svelte index 3eccfb5..1194b54 100644 --- a/vnshed/src/routes/+layout.svelte +++ b/frontend/src/routes/+layout.svelte @@ -11,15 +11,21 @@ let page_data = $state({ title: "", description: "", - time_to_read: "", + hours_to_read: 0, genres: [], tags: [], - badges: [], - pub_date: "" + badges: [] }) function send_json() { - console.log(JSON.stringify(page_data)) + fetch('http://127.0.0.1:8000/new', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + 'Access-Control-Allow-Origin': "" + }, + body: JSON.stringify(page_data) + }); } @@ -43,11 +49,11 @@

Время на чтение

- + + + +
diff --git a/vnshed/src/routes/+page.svelte b/frontend/src/routes/+page.svelte similarity index 100% rename from vnshed/src/routes/+page.svelte rename to frontend/src/routes/+page.svelte diff --git a/vnshed/static/font/Inter-Light.woff2 b/frontend/static/font/Inter-Light.woff2 similarity index 100% rename from vnshed/static/font/Inter-Light.woff2 rename to frontend/static/font/Inter-Light.woff2 diff --git a/vnshed/static/robots.txt b/frontend/static/robots.txt similarity index 100% rename from vnshed/static/robots.txt rename to frontend/static/robots.txt diff --git a/vnshed/svelte.config.js b/frontend/svelte.config.js similarity index 100% rename from vnshed/svelte.config.js rename to frontend/svelte.config.js diff --git a/vnshed/vite.config.js b/frontend/vite.config.js similarity index 100% rename from vnshed/vite.config.js rename to frontend/vite.config.js diff --git a/test_data.json b/test_data.json index 0623429..3ab5592 100644 --- a/test_data.json +++ b/test_data.json @@ -1,9 +1,9 @@ { "title": "Higurashi no Naku Koro ni. Console-exclusive Arcs (Когда плачут цикады. Эксклюзивные главы)", "description": "Эксклюзивные главы для консольных версий \"Higurashi no Naku Koro ni\". Главы рекомендуется читать после ознакомления с оригинальными главами.\n\nUPD: На данный момент переведены: Taraimawashi, Tsukiotoshi, Hajisarashi, Miotsukushi и Материалы полиции\n\nОписание глав:\n\nTaraimawashi - Альтернативная первая глава, на первый взгляд — это дополнение к арке \"Вопросов\", пересказ Onikakushi-hen. Тем не менее, эта глава на самом деле содержит события Watanagashi-hen.\nУзнав секреты Хинамидзавы, Кейти решает игнорировать всё и наслаждаться мирной школьной жизнью.\nTsukiotoshi - Оригинальная консольная глава, которая является развилкой для третьей главы \"Tatarigoroshi\".\nДядя Сатоко приезжает в Хинамидзаву, и Кейти решает найти союзников, чтобы помочь Сатоко. Возможно, \"худший\" из миров, где на кубиках выпали одни \"единицы.\"\nHajisarashi - одним жарким днём Рика и её друзья идут в бассейн.\nMiotsukushi - альтернативная концовка всей оригинальной серии.\nМатериалы полиции - краткие истории по длине равных TIPS, которые немного раскрывают Оиши и Акасаку..[/i]", - "time_to_read": 4, + "hours_to_read": 50, "genres": [ "Драма", "Хоррор", "Детектив", "Мистика", "Повседневность" ], "tags": [ "Иностранный разработчик", "Несколько главных героев" ], "badges": [ "Лучшее" ], - "pub_date": "2024-04-13T08:30:00Z" + "post_at": "2024-04-13T08:30:00Z" } \ No newline at end of file