diff --git a/.env b/.env new file mode 100644 index 0000000..e9a79eb --- /dev/null +++ b/.env @@ -0,0 +1,18 @@ +DB_USER= +DB_HOST= +DB_NAME= +DB_PASSWORD= +DB_PORT= + +YOOKASSA_SHOP_ID= +YOOKASSA_SECRET_KEY= + +APP_URL= + + +# SMTP Configuration for Yandex +SMTP_USER=levishub@yandex.com +SMTP_PASS=avhpihoudpyvibtx +DEFAULT_TO_EMAIL=miduway@yandex.ru +SMTP_HOST=smtp.yandex.ru +SMTP_PORT=465 \ No newline at end of file diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..d4d053a --- /dev/null +++ b/.env.example @@ -0,0 +1,20 @@ +DB_USER= +DB_HOST= +DB_NAME= +DB_PASSWORD= +DB_PORT= + +YOOKASSA_SHOP_ID= +YOOKASSA_SECRET_KEY= + +APP_URL= + + + + +# SMTP Configuration for Yandex +SMTP_USER=levishub@yandex.ru +SMTP_PASS=avhpihoudpyvibtx +DEFAULT_TO_EMAIL=miduway@yandex.ru +SMTP_HOST=smtp.yandex.ru +SMTP_PORT=465 \ No newline at end of file diff --git a/README.md b/README.md index 25b5821..b915854 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,7 @@ Make sure to install dependencies: ```bash # npm + npm install # pnpm diff --git a/components/EmailForm.vue b/components/EmailForm.vue new file mode 100644 index 0000000..5da05fe --- /dev/null +++ b/components/EmailForm.vue @@ -0,0 +1,71 @@ + + + diff --git a/components/UiButton/UiButton.vue b/components/UiButton/UiButton.vue index a2a4bee..7d0392d 100644 --- a/components/UiButton/UiButton.vue +++ b/components/UiButton/UiButton.vue @@ -2,6 +2,8 @@ diff --git a/content/books/2.md b/content/books/2.md index 9a469dd..d99f7a3 100644 --- a/content/books/2.md +++ b/content/books/2.md @@ -14,9 +14,11 @@ _Гарвард_ Механизмы мужской и женской влюбленностей несколько разнятся. Т.е. мужчины и женщины, парни и девушки влюбляются по-разному. У девушек крышу сразу не сносит, а у парней крышу сносит именно сразу. В этом и заключается принципиальное различие в механизмах. Безусловно, эта разница — классика, поэтому на этот счет есть вариации. Однако, по своей сути, так оно и есть. На первых порах отношений девушка способна трезво оценивать парня. Она еще не влюбилась, она оценивает, присматривается, приценивается к парню. Он ей нравится, но она может трезво мыслить. Видишь эти два графика ниже по тексту[2]? Теперь ты понимаешь различие в механизмах. Когда отношения с девушкой только начинаются, когда еще не было секса, парень испытывает некое подобие эйфории и одновременной зависимости от девушки. Я опять же говорю о классическом случае. Парень пытается быть максимально хорошим для нее. Она ему нравится, он запал на нее. Все его мысли — о ней. Девушка же влюбляется с задержкой по времени, когда парень пройдет ее фильтры. Когда у нее “щелкнет” в голове, тогда она и влюбляется. +
![Рисунок 5 — Различия между мужской и женской схемами влюбления](image2.png) Рисунок 5 — Различия между мужской и женской схемами влюбления
_Иллюстрация создана автором книги_ +
  Смотри, как выгодно для тебя устроила природа. Ты еще ничего не сделала в плане развития отношений, но уже имеешь бонус. Красота!! Спасибо матери-природе. Такой механизм — следствие заботы о выживании рода, вида. Вид должен выжить. Поэтому тебе дается время на фильтрацию самцов, чтобы ты могла выбрать лучшего и получить его семя. Самый живучий самец, самец, обошедший своих сородичей, самый жизнеспобный, способен дать тебе лучшее семя среди своих представителей. Так ты сможешь родить наиболее жизнеспособного ребенка, самого живучего. Забеременев же от слабого самца, ты родишь слабое потомство. Именно из-за такого механизма выживания вида парень сразу испытывает влечение к девушке, но после первого секса сразу же остывает к ней. Его задача выполнена, он оплодотворил самку. Его следующая задача — найти новую самку и оплодотворить ее. Поэтому он также быстро “западает” на следующую, трахает ее, остывает к ней и ищет новую. Парень выполняет задачу продолжения рода: совокупляется с максимальным количеством девушек. Но для нас с тобой сейчас самое важное — работать в зоне t — фильтрации. Как раз в период, который тебе подарила мать-природа, ты должна работать над отношениями. Тебе дали бонус в виде времени, не просри его. Те фишки, которые я тебе даю, имеют максимальную эффективность как раз в период фильтрации самцов. Как только вы переспите, период фильтрации закончится. И эффективность любых манипулятивных фишек, даже от Вино Галанте, упадет в разы. Это же так просто!! Ты пропустила парня через свои фильтры. Мать-природа позаботилась о том, чтобы сразу после этого ему захотелось другую самку. Как только ему захотелось другую, тебе становится архисложно влиять на парня. Природа, природа, против нее не поспоришь. diff --git a/frontend.env.example b/frontend.env.example deleted file mode 100644 index a57c961..0000000 --- a/frontend.env.example +++ /dev/null @@ -1,2 +0,0 @@ -VITE_MODE=DEVELOP -VITE_API_BASE_PATH=http://localhost:5173/ diff --git a/layouts/UiHeader/_data/header-navigation.data.ts b/layouts/UiHeader/_data/header-navigation.data.ts index 02dad34..61524a7 100644 --- a/layouts/UiHeader/_data/header-navigation.data.ts +++ b/layouts/UiHeader/_data/header-navigation.data.ts @@ -13,7 +13,7 @@ const headerNavigation = [ }, { name: 'Купить', - path: '/buy', + path: '/cart', }, { name: 'Отзывы', diff --git a/nuxt.config.ts b/nuxt.config.ts index f277112..63275ec 100644 --- a/nuxt.config.ts +++ b/nuxt.config.ts @@ -25,11 +25,13 @@ export default defineNuxtConfig({ css: ['@/assets/css/tailwind.css'], ...config, + htmlValidator: { usePrettier: true, logLevel: 'error', failOnError: false, }, + app: { head: { title: 'Vino Galante', @@ -39,4 +41,13 @@ export default defineNuxtConfig({ ...head, }, }, + + runtimeConfig: { + smtpHost: process.env.SMTP_HOST, + smtpPort: process.env.SMTP_PORT, + smtpUser: process.env.SMTP_USER, + smtpPass: process.env.SMTP_PASS, + }, + + modules: [...config.modules], }) diff --git a/package.json b/package.json index dc3f5f2..80fead1 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,7 @@ "format": "node_modules/.bin/prettier --write ./" }, "dependencies": { + "@a2seven/yoo-checkout": "^1.1.4", "@nuxt/content": "^3.6.0", "@nuxt/fonts": "^0.11.4", "@nuxt/icon": "^1.13.0", @@ -22,10 +23,15 @@ "@nuxtjs/sitemap": "^7.4.0", "@pinia/nuxt": "^0.5.5", "@tailwindcss/postcss": "^4.1.10", - "better-sqlite3": "^11.10.0", + "better-sqlite3": "^12", + "crypto-js": "^4.2.0", + "date-fns": "^4.1.0", "husky": "^9.1.7", + "nodemailer": "^7.0.3", "nuxt": "^3.17.5", "nuxt-schema-org": "^5.0.5", + "pg": "^8.16.2", + "postgres": "^3.4.7", "swiper": "^11.2.8", "vue": "^3.5.16" }, @@ -34,6 +40,8 @@ "@nuxt/test-utils": "^3.11.3", "@nuxtjs/tailwindcss": "^6.11.4", "@types/node": "^22.0.0", + "@types/nodemailer": "^6.4.17", + "@types/pg": "^8.15.4", "@vue/eslint-config-prettier": "^10.2.0", "@vue/eslint-config-typescript": "^14.5.0", "autoprefixer": "^10.4.18", diff --git a/pages/books/[slug].vue b/pages/books/[slug].vue index 37221d2..d9a6293 100644 --- a/pages/books/[slug].vue +++ b/pages/books/[slug].vue @@ -33,7 +33,7 @@ -
+
@@ -41,7 +41,12 @@ ruble
- + {{ book.buttonText }} @@ -81,20 +86,29 @@
-
+
    -
  • +
  • - Читай отрывок + Читай отрывок Читай отрывок
  • -
  • - +
  • + Скачай отрывок Скачай отрывок - +
  • -
  • +
  • import { ref, computed, watch } from 'vue' -import { useRoute } from '#app' +import { useRoute, useRouter } from '#app' import UiHeading from '@/components/Typography/UiHeading.vue' import UiParagraph from '@/components/Typography/UiParagraph.vue' import UiButton from '@/components/UiButton/UiButton.vue' @@ -178,10 +192,13 @@ interface BookDetail { }> href: string hrefTitles: string + download: string } const route = useRoute() +const router = useRouter() + const currentBookData = ref(null) const book = computed(() => currentBookData.value) @@ -196,6 +213,10 @@ const loadBookData = async (slug: string) => { } } +const handleSelect = () => { + router.push('/cart/') +} + watch( () => route.params.slug, async (newSlug) => { diff --git a/pages/books/[titlesSlug]/[titlesSlug].vue b/pages/books/[titlesSlug]/[titlesSlug].vue index f34dbcf..7b1a2a1 100644 --- a/pages/books/[titlesSlug]/[titlesSlug].vue +++ b/pages/books/[titlesSlug]/[titlesSlug].vue @@ -1,19 +1,23 @@