Compare commits

..

No commits in common. 'main' and 'd3a560c08130ca8aefe65e10d5c190cf1eac8ec6' 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. 3193
      package-lock.json
  7. 40
      package.json
  8. 13
      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. 26
      src/app/globals.css
  16. 17
      src/app/layout.tsx
  17. 107
      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

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

3
.gitignore vendored

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

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

@ -10,16 +10,14 @@ npm run dev
yarn dev yarn dev
# or # or
pnpm dev pnpm dev
# or
bun dev
``` ```
Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. 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. 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. 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 ## Learn More

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

3193
package-lock.json generated

File diff suppressed because it is too large Load Diff

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

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

Before

Width:  |  Height:  |  Size: 676 KiB

After

Width:  |  Height:  |  Size: 676 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

@ -2,8 +2,30 @@
@tailwind components; @tailwind components;
@tailwind utilities; @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 {
width: 99%; text-align: justify;
text-align: justify;
} }

@ -1,4 +1,5 @@
import './globals.css' import './globals.css'
import Script from 'next/script';
export default function RootLayout({ export default function RootLayout({
children, children,
@ -10,6 +11,22 @@ 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/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/lets-go/rss"/>
<link rel="alternate" type="application/rss+xml" title="Нравится слушать" href="https://blogbaster.xyz/api/podcasts/like-to-listen/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 /> <head />
<body>{children}</body> <body>{children}</body>
</html> </html>

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

@ -1,7 +1,7 @@
import Select from "../../../server/db/select"; import Select from "../../../server/db/select";
import type { NextApiRequest, NextApiResponse } from 'next'; import type { NextApiRequest, NextApiResponse } from 'next';
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"; 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";
export default function handler( export default function handler(
req: NextApiRequest, req: NextApiRequest,

@ -1,41 +1,16 @@
/** @type {import('tailwindcss').Config} */ /** @type {import('tailwindcss').Config} */
module.exports = { module.exports = {
content: [ content: [
"./src/app/*.{js,ts,jsx,tsx}", "./app/**/*.{js,ts,jsx,tsx,mdx}",
"src/**/*.{js,ts,jsx,tsx}", "./pages/**/*.{js,ts,jsx,tsx,mdx}",
"./pages/**/*.{js,ts,jsx,tsx}", "./components/**/*.{js,ts,jsx,tsx,mdx}",
"./components/**/*.{js,ts,jsx,tsx}",
// Or if using `src` directory:
"./src/**/*.{js,ts,jsx,tsx,mdx}",
], ],
theme: { theme: {
extend: {}, extend: {},
}, },
plugins: [require("daisyui")], plugins: [],
// 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",
},
},
],
} }

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

Loading…
Cancel
Save