Compare commits

...

No commits in common. 'd3a560c08130ca8aefe65e10d5c190cf1eac8ec6' and 'main' have entirely different histories.

  1. 6
      .env
  2. 3
      .gitignore
  3. 4
      .vscode/settings.json
  4. 6
      README.md
  5. 6
      next.config.js
  6. 3199
      package-lock.json
  7. 40
      package.json
  8. 5
      postcss.config.js
  9. 0
      public/feed/feed-podcasts/all/index.rss
  10. 0
      public/img/Like-to-listen_old.jpg
  11. BIN
      public/img/RU_Google_Podcasts_Badge_2x.png
  12. BIN
      public/img/badge_white.png
  13. 0
      public/podcasts/like-to-listen/podcast.rss
  14. BIN
      src/app/favicon.ico
  15. 24
      src/app/globals.css
  16. 17
      src/app/layout.tsx
  17. 89
      src/app/page.tsx
  18. 2
      src/pages/api/podcasts/all.ts
  19. 41
      tailwind.config.js
  20. 20
      tailwind.config.ts
  21. 4
      tsconfig.json

@ -1,6 +0,0 @@
// .env.local
USER_="crapshr6_bb"
HOST="crapshr6.beget.tech"
DATABASE="crapshr6_bb"
PASSWORD="Lo*&9pKQ"

3
.gitignore vendored

@ -4,7 +4,6 @@
/node_modules
/.pnp
.pnp.js
.yarn/install-state.gz
# testing
/coverage
@ -24,10 +23,10 @@
npm-debug.log*
yarn-debug.log*
yarn-error.log*
.pnpm-debug.log*
# local env files
.env*.local
.env
# vercel
.vercel

@ -0,0 +1,4 @@
{
"typescript.tsdk": "node_modules/typescript/lib",
"typescript.enablePromptUseWorkspaceTsdk": true
}

@ -10,14 +10,16 @@ npm run dev
yarn dev
# or
pnpm dev
# or
bun dev
```
Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file.
[API routes](https://nextjs.org/docs/api-routes/introduction) can be accessed on [http://localhost:3000/api/hello](http://localhost:3000/api/hello). This endpoint can be edited in `pages/api/hello.ts`.
The `pages/api` directory is mapped to `/api/*`. Files in this directory are treated as [API routes](https://nextjs.org/docs/api-routes/introduction) instead of React pages.
This project uses [`next/font`](https://nextjs.org/docs/basic-features/font-optimization) to automatically optimize and load Inter, a custom Google Font.
## Learn More

@ -1,4 +1,8 @@
/** @type {import('next').NextConfig} */
const nextConfig = {}
const nextConfig = {
experimental: {
appDir: true,
},
}
module.exports = nextConfig

3199
package-lock.json generated

File diff suppressed because it is too large Load Diff

@ -1,31 +1,35 @@
{
"name": "blogbaster_xyz",
"version": "0.7.4",
"name": "site",
"version": "0.1.0",
"private": true,
"scripts": {
"dev": "next dev",
"dev": "concurrently \"next dev\" \"tailwindcss --input ./app/globals.css --output ./app/output.css --watch\"",
"build": "next build",
"start": "next start -p 3002",
"lint": "next lint"
},
"dependencies": {
"mysql2": "^3.6.5",
"next": "14.0.4",
"react": "^18",
"react-dom": "^18",
"react-h5-audio-player": "^3.9.1",
"@next/font": "13.1.6",
"@types/node": "18.13.0",
"@types/react": "18.0.27",
"@types/react-dom": "18.0.10",
"daisyui": "^2.50.1",
"eslint": "8.33.0",
"eslint-config-next": "13.1.6",
"mysql2": "^3.1.2",
"next": "13.1.6",
"react": "18.2.0",
"react-dom": "18.2.0",
"react-h5-audio-player": "^3.8.6",
"react-yandex-metrika": "^2.6.0",
"semantic-ui-css": "^2.5.0",
"semantic-ui-react": "^2.1.5"
"semantic-ui-react": "^2.1.4",
"typescript": "4.9.5"
},
"devDependencies": {
"@types/node": "^20",
"@types/react": "^18",
"@types/react-dom": "^18",
"autoprefixer": "^10.4.16",
"eslint": "^8",
"eslint-config-next": "14.0.4",
"postcss": "^8.4.32",
"tailwindcss": "^3.4.0",
"typescript": "^5"
"autoprefixer": "^10.4.13",
"concurrently": "^7.6.0",
"postcss": "^8.4.21",
"tailwindcss": "^3.2.6"
}
}

@ -1,6 +1,9 @@
// postcss.config.js
module.exports = {
plugins: {
tailwindcss: {},
autoprefixer: {},
},
}
};

Before

Width:  |  Height:  |  Size: 676 KiB

After

Width:  |  Height:  |  Size: 676 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

@ -2,30 +2,8 @@
@tailwind components;
@tailwind utilities;
:root {
--foreground-rgb: 0, 0, 0;
--background-start-rgb: 214, 219, 220;
--background-end-rgb: 255, 255, 255;
}
@media (prefers-color-scheme: dark) {
:root {
--foreground-rgb: 255, 255, 255;
--background-start-rgb: 0, 0, 0;
--background-end-rgb: 0, 0, 0;
}
}
body {
color: rgb(var(--foreground-rgb));
background: linear-gradient(
to bottom,
transparent,
rgb(var(--background-end-rgb))
)
rgb(var(--background-start-rgb));
}
.width_99 {
width: 99%;
text-align: justify;
}

@ -1,5 +1,4 @@
import './globals.css'
import Script from 'next/script';
export default function RootLayout({
children,
@ -11,22 +10,6 @@ export default function RootLayout({
<link rel="alternate" type="application/rss+xml" title="Хобби и ты" href="https://blogbaster.xyz/api/podcasts/hobbits/rss"/>
<link rel="alternate" type="application/rss+xml" title="Поуехали" href="https://blogbaster.xyz/api/podcasts/lets-go/rss"/>
<link rel="alternate" type="application/rss+xml" title="Нравится слушать" href="https://blogbaster.xyz/api/podcasts/like-to-listen/rss"/>
<Script id="metrika-counter" strategy="afterInteractive">
{`(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
m[i].l=1*new Date();
for (var j = 0; j < document.scripts.length; j++) {if (document.scripts[j].src === r) { return; }}
k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
ym(92472121, "init", {
defer: true,
clickmap:true,
trackLinks:true,
accurateTrackBounce:true,
webvisor:true
});`
}
</Script>
<head />
<body>{children}</body>
</html>

@ -6,9 +6,9 @@ import {
Grid,
Header,
List,
Segment
Segment,
Label,
} from 'semantic-ui-react';
import Link from 'next/link';
import Image from 'next/image'
import { Item } from 'semantic-ui-react';
import 'semantic-ui-css/semantic.min.css';
@ -20,8 +20,6 @@ type Props = {
audio: string;
description: string;
urlImg: string;
link_plafthorm_ya: string;
link_plafthorm_go: string;
title_items: string;
children: Node;
datePub: string;
@ -37,20 +35,18 @@ const Views = async (e : number) =>{
}
const PodcastBlocks: React.FC<Props> = ({id, audio, description, urlImg, title_items, datePub, link_plafthorm_ya, link_plafthorm_go}) => (
const PodcastBlocks: React.FC<Props> = ({id, audio, description, urlImg, title_items, datePub}) => (
<>
<div className="m-3 card lg:card-side bg-base-100 shadow-xl">
<div className="grid grid-rows-1 grid-flow-col gap-4">
<div className="hero-content flex-col lg:flex-row">
<Image
src={'/img/'+urlImg}
alt={title_items}
width="0"
height="0"
sizes="100vw"
className="w-auto m-3 row-span-2"
width={500}
height={500}
/>
<div className="col-span-2 width_99 m-3">
</div>
<div className="card-body width_99">
<h2 className="card-title">{title_items}</h2>
<p>{description}</p>
<div className="card-actions justify-end">
@ -59,36 +55,7 @@ const PodcastBlocks: React.FC<Props> = ({id, audio, description, urlImg, title_i
onPlay={e => Views(id)}
/>
</div>
<p className="mt-3"> Дата публикации: {datePub} </p>
<div className="flex flex-row">
<div className="basis-1/4">
<a href={link_plafthorm_ya}>
<Image
src={'/img/badge_white.png'}
alt={title_items}
width="0"
height="0"
sizes="15vw"
className="w-auto row-span-2"
/>
</a>
</div>
<div className="basis-1/4">
<a href={link_plafthorm_go}>
<Image
src={'/img/RU_Google_Podcasts_Badge_2x.png'}
alt={title_items}
width="0"
height="0"
sizes="15vw"
className="w-auto row-span-2"
/>
</a>
</div>
</div>
</div>
<p> Дата публикации: {datePub} </p>
</div>
</div>
</>
@ -126,10 +93,8 @@ export default function Home() {
<Grid container stackable textAlign='center'>
<Grid.Row>
<Grid.Column width={12} textAlign='center'>
<span className='text-4xl'>Подкаст-студия</span>
<Header as='h3' style={{ fontSize: '4em' }}>
<span className='text-orange-600'>Blog</span>
Baster
BlogBaster
</Header>
<Header as='h3' style={{ fontSize: '2em' }}>
Увлечены. Качественно.
@ -143,7 +108,7 @@ export default function Home() {
</Grid>
</Segment>
<Segment vertical>
<Container>
<Container textAlign='left'>
<Item.Group>
{podcasts}
</Item.Group>
@ -157,42 +122,24 @@ export default function Home() {
<Grid.Column width={3}>
<Header inverted as='h4' content='Социальные сети' />
<List link inverted>
<Link className='mb-3 block text-base font-medium font-bold mb-2'
href='https://vk.com/blogbaster_xyz'>
Вконтакте
</Link>
<Link className='mb-3 block text-base font-medium font-bold mb-2'
href='https://t.me/medishik'>
Telegram
</Link>
<List.Item as='a'>Вконтакте</List.Item>
<List.Item as='a'>Telegram</List.Item>
</List>
</Grid.Column>
<Grid.Column width={3}>
<Header inverted as='h4' content='Платформы' />
<List link inverted>
<Link className='mb-3 block text-base font-medium font-bold mb-2'
href='https://music.yandex.ru/search?text=нравится%20слушать'>
Яндекс музыка
</Link>
<Link className='mb-3 block text-base font-medium font-bold mb-2'
href='https://podcasts.google.com/feed/aHR0cHM6Ly9ibG9nYmFzdGVyLnh5ei9hcGkvcG9kY2FzdHMvaG9iYml0cy9yc3M?sa=X&ved=2ahUKEwiu-_yViMKDAxUIefEDHSfWA_MQ9sEGegQIARAE'>
Google подкасты
</Link>
<Link className='mb-3 block text-base font-medium font-bold mb-2'
href='https://www.apple.com/apple-podcasts/'>
Apple подкасты
</Link>
<List.Item as='a'>Яндекс музыка</List.Item>
<List.Item as='a'>Google подкасты</List.Item>
<List.Item as='a'>Apple подкасты</List.Item>
</List>
</Grid.Column>
<Grid.Column width={7}>
<Header as='' inverted>
<Link className='mb-3 block text-base font-medium font-bold mb-2'
href='https://vk.com/blogbaster_xyz'>
<Header as='h4' inverted>
О нас
</Link>
</Header>
<p>
BlogBaster 2024
BlogBaster 2022
</p>
</Grid.Column>
</Grid.Row>

@ -1,7 +1,7 @@
import Select from "../../../server/db/select";
import type { NextApiRequest, NextApiResponse } from 'next';
const sql = "SELECT items.id, podcasts.link_plafthorm_ya, podcasts.link_plafthorm_go, urlImg,items.description, items.title_items, items.audio, DATE_FORMAT(items.pubDate, '%d - %m - %Y') as datePub FROM podcasts, items WHERE podcasts.id=items.id_podcasts and items.status=1 ORDER BY items.pubDate DESC";
const sql = "SELECT items.id, urlImg,items.description, items.title_items, items.audio, DATE_FORMAT(items.pubDate, '%d - %m - %Y') as datePub FROM podcasts, items WHERE podcasts.id=items.id_podcasts and items.status=1 ORDER BY items.pubDate DESC";
export default function handler(
req: NextApiRequest,

@ -1,16 +1,41 @@
/** @type {import('tailwindcss').Config} */
module.exports = {
content: [
"./app/**/*.{js,ts,jsx,tsx,mdx}",
"./pages/**/*.{js,ts,jsx,tsx,mdx}",
"./components/**/*.{js,ts,jsx,tsx,mdx}",
// Or if using `src` directory:
"./src/**/*.{js,ts,jsx,tsx,mdx}",
"./src/app/*.{js,ts,jsx,tsx}",
"src/**/*.{js,ts,jsx,tsx}",
"./pages/**/*.{js,ts,jsx,tsx}",
"./components/**/*.{js,ts,jsx,tsx}",
],
theme: {
extend: {},
},
plugins: [],
}
plugins: [require("daisyui")],
// daisyUI config (optional)
daisyui: {
styled: true,
themes: true,
base: true,
utils: true,
logs: true,
rtl: false,
prefix: "",
darkTheme: "white",
},
themes: [
{
mytheme: {
"primary": "#6419E6",
"secondary": "#D926A9",
"accent": "#1FB2A6",
"neutral": "#191D24",
"base-100": "#2A303C",
"info": "#3ABFF8",
"success": "#36D399",
"warning": "#FBBD23",
"error": "#F87272",
},
},
],
}

@ -1,20 +0,0 @@
import type { Config } from 'tailwindcss'
const config: Config = {
content: [
'./src/pages/**/*.{js,ts,jsx,tsx,mdx}',
'./src/components/**/*.{js,ts,jsx,tsx,mdx}',
'./src/app/**/*.{js,ts,jsx,tsx,mdx}',
],
theme: {
extend: {
backgroundImage: {
'gradient-radial': 'radial-gradient(var(--tw-gradient-stops))',
'gradient-conic':
'conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))',
},
},
},
plugins: [],
}
export default config

@ -5,10 +5,11 @@
"allowJs": true,
"skipLibCheck": true,
"strict": true,
"forceConsistentCasingInFileNames": true,
"noEmit": true,
"esModuleInterop": true,
"module": "esnext",
"moduleResolution": "bundler",
"moduleResolution": "node",
"resolveJsonModule": true,
"isolatedModules": true,
"jsx": "preserve",
@ -18,6 +19,7 @@
"name": "next"
}
],
"baseUrl": ".",
"paths": {
"@/*": ["./src/*"]
}

Loading…
Cancel
Save