diff --git a/README.md b/README.md index 1db3fb3..79642a8 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,8 @@ -# Astro Starter Kit: Basics +# Urlbox Towel + +## A towel is the most massively useful thing an interstellar hitchhiker a web developer can have + +Get your Twitter screen-shot on a beach towel ```sh npm create astro@latest -- --template basics diff --git a/db/config.ts b/db/config.ts index bb968c4..bb76202 100644 --- a/db/config.ts +++ b/db/config.ts @@ -1,42 +1,13 @@ import { defineDb, defineTable, column } from "astro:db"; -const Comment = defineTable({ +const Screenshot = defineTable({ columns: { id: column.number({ primaryKey: true }), - author: column.text({ optional: true }), - content: column.text({ optional: true }), - }, -}); - -const Playlist = defineTable({ - columns: { - id: column.number({ primaryKey: true }), - name: column.text(), - description: column.text({ optional: true }), - createdBy: column.text({ optional: true }), - }, -}); - -const Episode = defineTable({ - columns: { - id: column.text({ primaryKey: true }), - title: column.text(), - description: column.text({ optional: true }), - audio: column.text(), - }, -}); - -const PlaylistEpisode = defineTable({ - columns: { - playlistId: column.number({ - references: () => Playlist.columns.id, - }), - episodeId: column.text({ - references: () => Episode.columns.id, - }), + tweetUrl: column.text({ optional: false }), + renderUrl: column.text({ optional: true }), }, }); export default defineDb({ - tables: { Comment, Playlist, Episode, PlaylistEpisode }, + tables: { Screenshot }, }); diff --git a/db/seed.ts b/db/seed.ts index 7883e6e..0e3ace3 100644 --- a/db/seed.ts +++ b/db/seed.ts @@ -1,75 +1,7 @@ -import { db, Comment, Playlist, Episode, PlaylistEpisode } from "astro:db"; +import { db, Screenshot } from "astro:db"; export default async function () { - await db.insert(Comment).values([ - { author: "Queen", content: "Hope you like Astro DB!" }, - { author: "Captain", content: "Enjoy!" }, - ]); - - await db.insert(Playlist).values([ - { - id: 1, - name: "Queen's Playlist", - description: "Hope you like Astro DB!", - createdBy: "Queen", - }, - { id: 2, name: "Captain's Playlist", createdBy: "Captain Ola" }, - ]); - - await db.insert(Episode).values([ - { - id: "7afc54fd90c24aabb7aaae7b989828f6", - title: "607: Astro Launches an Integrated Database", - description: - "

Show Description

Fred K. Schott stops by to talk about Astro announcement of Astro DB. The pluses and minuses of it, and whether you have to always use the database with Astro DB. We get into how to seed your database, upgrading the database, and the almost weirdly generous pricing model.

\n" + - `

Listen on Website →

Guests

Fred K. Schott

Guest's Main URLGuest's Twitter

Co-creator of Astro.

\n` + - "

Links

Sponsors

", - audio: - "https://www.listennotes.com/e/p/7afc54fd90c24aabb7aaae7b989828f6/", - }, - { - id: "af0ece984ab24e01aa9ef0b914794f83", - title: "#23 - Tailwind V4, Layoffs, Do It Anyways, Astro DB", - description: - "

Lots has happened this week! New alpha preview of Tailwind V4, more very unexpected layoffs of great people, Jason Lengstorf kicked off the "Do It Anyways" movements, and Astro launched a database!

\n" + - "


\n" + - "

Website: https://navbar.tech

\n" + - "

Pro Tailwind: https://www.protailwind.com/

\n" + - "


\n" + - "

Build a Twitter Clone with the Next.js App Router and Supabase (free egghead course): https://egghead.io/courses/build-a-twitter-clone-with-the-next-js-app-router-and-supabase-19bebadb

\n" + - "


\n" + - "

Want more NavBar? 🍔🍫

\n" + - "

🐦 Twitter - https://twitter.com/the_navbar

\n" + - "

🎥 YouTube - https://www.youtube.com/channel/UCmZK0v8TNlCbizOkbIxQwmw

\n" + - "

Enjoy these podcasts? Simon and Jon create lots of content 👇

\n" + - "

Simon

\n" + - "

🐦 Twitter - https://twitter.com/simonswiss

\n" + - "

🎥 YouTube - https://www.youtube.com/c/Simonswissdev

\n" + - "

🥚 egghead - https://egghead.io/q/resources-by-simon-vrachliotis

\n" + - "

Jon

\n" + - "

🐦 Twitter - https://twitter.com/jonmeyers_io

\n" + - "

🎥 YouTube - https://www.youtube.com/c/jonmeyers

\n" + - "

🥚 egghead - https://egghead.io/q/resources-by-jon-meyers

", - audio: - "https://www.listennotes.com/e/p/af0ece984ab24e01aa9ef0b914794f83/", - }, - ]); - - await db.insert(PlaylistEpisode).values([ - { playlistId: 1, episodeId: "7afc54fd90c24aabb7aaae7b989828f6" }, - { playlistId: 2, episodeId: "7afc54fd90c24aabb7aaae7b989828f6" }, - { playlistId: 2, episodeId: "af0ece984ab24e01aa9ef0b914794f83" }, + await db.insert(Screenshot).values([ + { tweetUrl: "https://x.com/raae/status/1797182382337892473", renderUrl: "https://renders.urlbox.io/urlbox1/renders/662b9336def898573d9552ab/2024/6/6/d8e6c843-8ebc-4644-842a-d5ea49c5aead.png" }, ]); } diff --git a/package-lock.json b/package-lock.json index a801855..5480cf0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,15 +1,15 @@ { - "name": "mixpod-astro", + "name": "xtowel", "version": "0.0.1", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "mixpod-astro", + "name": "xtowel", "version": "0.0.1", "dependencies": { "@astrojs/check": "^0.5.4", - "@astrojs/db": "^0.10.5", + "@astrojs/db": "^0.11.4", "@astrojs/netlify": "^5.2.1", "@astrojs/node": "^8.2.0", "astro": "^4.4.0", @@ -57,132 +57,73 @@ "integrity": "sha512-c74k8iGHL3DzkosSJ0tGcHIEBEiIfBhr7eadSaPyvWlVKaieDVzVs8OW1tnRSQyBsfMc8DZQ4RcN2KAcESD8UQ==" }, "node_modules/@astrojs/db": { - "version": "0.10.5", - "resolved": "https://registry.npmjs.org/@astrojs/db/-/db-0.10.5.tgz", - "integrity": "sha512-hsHcv44FTOgTTWqg7kv6CVlRkb08o2aenkilk3n2gTgJ15czi/O/1Hh8QZfJ+TZHvOA/tcjKSYeWJMJ7x67xfg==", + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/@astrojs/db/-/db-0.11.4.tgz", + "integrity": "sha512-PuVej9DNu5ZzlRGS0NUl3iH/5BRo/eG3XRywXbHIQvA0sdI7UZSFisbpUQYJU9iKK9Bxow/FWrqfw2jwqXaC8Q==", "dependencies": { - "@libsql/client": "^0.5.5", + "@astrojs/studio": "0.1.0", + "@libsql/client": "^0.6.0", "async-listen": "^3.0.1", + "ci-info": "^4.0.0", "deep-diff": "^1.0.2", - "drizzle-orm": "^0.30.4", + "drizzle-orm": "^0.30.10", "github-slugger": "^2.0.0", "kleur": "^4.1.5", - "nanoid": "^5.0.1", - "open": "^10.0.3", - "ora": "^7.0.1", + "nanoid": "^5.0.7", + "open": "^10.1.0", + "ora": "^8.0.1", "prompts": "^2.4.2", "strip-ansi": "^7.1.0", "yargs-parser": "^21.1.1", - "zod": "^3.22.4" + "zod": "^3.23.8" } }, - "node_modules/@astrojs/db/node_modules/drizzle-orm": { - "version": "0.30.8", - "resolved": "https://registry.npmjs.org/drizzle-orm/-/drizzle-orm-0.30.8.tgz", - "integrity": "sha512-9pBJA0IjnpPpzZ6s9jlS1CQAbKoBmbn2GJesPhXaVblAA/joOJ4AWWevYcqvLGj9SvThBAl7WscN8Zwgg5mnTw==", - "peerDependencies": { - "@aws-sdk/client-rds-data": ">=3", - "@cloudflare/workers-types": ">=3", - "@electric-sql/pglite": ">=0.1.1", - "@libsql/client": "*", - "@neondatabase/serverless": ">=0.1", - "@op-engineering/op-sqlite": ">=2", - "@opentelemetry/api": "^1.4.1", - "@planetscale/database": ">=1", - "@types/better-sqlite3": "*", - "@types/pg": "*", - "@types/react": ">=18", - "@types/sql.js": "*", - "@vercel/postgres": ">=0.8.0", - "@xata.io/client": "*", - "better-sqlite3": ">=7", - "bun-types": "*", - "expo-sqlite": ">=13.2.0", - "knex": "*", - "kysely": "*", - "mysql2": ">=2", - "pg": ">=8", - "postgres": ">=3", - "react": ">=18", - "sql.js": ">=1", - "sqlite3": ">=5" + "node_modules/@astrojs/db/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" }, - "peerDependenciesMeta": { - "@aws-sdk/client-rds-data": { - "optional": true - }, - "@cloudflare/workers-types": { - "optional": true - }, - "@electric-sql/pglite": { - "optional": true - }, - "@libsql/client": { - "optional": true - }, - "@neondatabase/serverless": { - "optional": true - }, - "@op-engineering/op-sqlite": { - "optional": true - }, - "@opentelemetry/api": { - "optional": true - }, - "@planetscale/database": { - "optional": true - }, - "@types/better-sqlite3": { - "optional": true - }, - "@types/pg": { - "optional": true - }, - "@types/react": { - "optional": true - }, - "@types/sql.js": { - "optional": true - }, - "@vercel/postgres": { - "optional": true - }, - "@xata.io/client": { - "optional": true - }, - "better-sqlite3": { - "optional": true - }, - "bun-types": { - "optional": true - }, - "expo-sqlite": { - "optional": true - }, - "knex": { - "optional": true - }, - "kysely": { - "optional": true - }, - "mysql2": { - "optional": true - }, - "pg": { - "optional": true - }, - "postgres": { - "optional": true - }, - "react": { - "optional": true - }, - "sql.js": { - "optional": true - }, - "sqlite3": { - "optional": true - } + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@astrojs/db/node_modules/is-unicode-supported": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.0.0.tgz", + "integrity": "sha512-FRdAyx5lusK1iHG0TWpVtk9+1i+GjrzRffhDg4ovQ7mcidMQ6mj+MhKPmvh7Xwyv5gIS06ns49CA7Sqg7lC22Q==", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@astrojs/db/node_modules/log-symbols": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-6.0.0.tgz", + "integrity": "sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==", + "dependencies": { + "chalk": "^5.3.0", + "is-unicode-supported": "^1.3.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@astrojs/db/node_modules/log-symbols/node_modules/is-unicode-supported": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", + "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/@astrojs/db/node_modules/nanoid": { @@ -202,6 +143,39 @@ "node": "^18 || >=20" } }, + "node_modules/@astrojs/db/node_modules/ora": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-8.0.1.tgz", + "integrity": "sha512-ANIvzobt1rls2BDny5fWZ3ZVKyD6nscLvfFRpQgfWsythlcsVUC9kL0zq6j2Z5z9wwp1kd7wpsD/T9qNPVLCaQ==", + "dependencies": { + "chalk": "^5.3.0", + "cli-cursor": "^4.0.0", + "cli-spinners": "^2.9.2", + "is-interactive": "^2.0.0", + "is-unicode-supported": "^2.0.0", + "log-symbols": "^6.0.0", + "stdin-discarder": "^0.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@astrojs/db/node_modules/stdin-discarder": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.2.2.tgz", + "integrity": "sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@astrojs/internal-helpers": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/@astrojs/internal-helpers/-/internal-helpers-0.2.1.tgz", @@ -302,6 +276,97 @@ "node": ">=18.14.1" } }, + "node_modules/@astrojs/studio": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@astrojs/studio/-/studio-0.1.0.tgz", + "integrity": "sha512-pjggMFgtZHPem6RWall02DTa54VCQ4fjqj4bLV0CpQEi0ydgDlughb81PtLhpQPTV0IUtTFOnHbzx6rcKMBAzg==", + "dependencies": { + "ci-info": "^4.0.0", + "kleur": "^4.1.5", + "ora": "^8.0.1" + } + }, + "node_modules/@astrojs/studio/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@astrojs/studio/node_modules/is-unicode-supported": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.0.0.tgz", + "integrity": "sha512-FRdAyx5lusK1iHG0TWpVtk9+1i+GjrzRffhDg4ovQ7mcidMQ6mj+MhKPmvh7Xwyv5gIS06ns49CA7Sqg7lC22Q==", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@astrojs/studio/node_modules/log-symbols": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-6.0.0.tgz", + "integrity": "sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==", + "dependencies": { + "chalk": "^5.3.0", + "is-unicode-supported": "^1.3.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@astrojs/studio/node_modules/log-symbols/node_modules/is-unicode-supported": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", + "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@astrojs/studio/node_modules/ora": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-8.0.1.tgz", + "integrity": "sha512-ANIvzobt1rls2BDny5fWZ3ZVKyD6nscLvfFRpQgfWsythlcsVUC9kL0zq6j2Z5z9wwp1kd7wpsD/T9qNPVLCaQ==", + "dependencies": { + "chalk": "^5.3.0", + "cli-cursor": "^4.0.0", + "cli-spinners": "^2.9.2", + "is-interactive": "^2.0.0", + "is-unicode-supported": "^2.0.0", + "log-symbols": "^6.0.0", + "stdin-discarder": "^0.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@astrojs/studio/node_modules/stdin-discarder": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.2.2.tgz", + "integrity": "sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@astrojs/telemetry": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/@astrojs/telemetry/-/telemetry-3.0.4.tgz", @@ -1082,28 +1147,28 @@ } }, "node_modules/@libsql/client": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/@libsql/client/-/client-0.5.6.tgz", - "integrity": "sha512-UBjmDoxz75Z2sHdP+ETCROpeLA/77VMesiff8R4UWK1rnaWbh6/YoCLDILMJL3Rh0udQeKxjL8MjXthqohax+g==", + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/@libsql/client/-/client-0.6.2.tgz", + "integrity": "sha512-xRNfRLv/dOCbV4qd+M0baQwGmvuZpMd2wG2UAPs8XmcdaPvu5ErkcaeITkxlm3hDEJVabQM1cFhMBxsugWW9fQ==", "dependencies": { - "@libsql/core": "^0.5.6", - "@libsql/hrana-client": "^0.5.6", + "@libsql/core": "^0.6.2", + "@libsql/hrana-client": "^0.6.0", "js-base64": "^3.7.5", "libsql": "^0.3.10" } }, "node_modules/@libsql/core": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/@libsql/core/-/core-0.5.6.tgz", - "integrity": "sha512-3vicUAydq6jPth410n4AsHHm1n2psTwvkSf94nfJlSXutGSZsl0updn2N/mJBgqUHkbuFoWZtlMifF0SwBj1xQ==", + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/@libsql/core/-/core-0.6.2.tgz", + "integrity": "sha512-c2P4M+4u/4b2L02A0KjggO3UW51rGkhxr/7fzJO0fEAqsqrWGxuNj2YtRkina/oxfYvAof6xjp8RucNoIV/Odw==", "dependencies": { "js-base64": "^3.7.5" } }, "node_modules/@libsql/darwin-arm64": { - "version": "0.3.16", - "resolved": "https://registry.npmjs.org/@libsql/darwin-arm64/-/darwin-arm64-0.3.16.tgz", - "integrity": "sha512-GPQGCulqknc4BnluNuBDK55wwAah9j3KCsRQPAAbz1XsGrPyWgXOyID6e6wNk4ZPXCFOdLs9OCUsJH6hT6dwlQ==", + "version": "0.3.18", + "resolved": "https://registry.npmjs.org/@libsql/darwin-arm64/-/darwin-arm64-0.3.18.tgz", + "integrity": "sha512-Zt49dt+cwhPCkuoWgvjbQd4ckNfCJR5xzIAyhgHl3CBZqZaEuaXTOGKLNQT7bnFRPuQcdLt5PBT1cenKu2N6pA==", "cpu": [ "arm64" ], @@ -1113,9 +1178,9 @@ ] }, "node_modules/@libsql/darwin-x64": { - "version": "0.3.16", - "resolved": "https://registry.npmjs.org/@libsql/darwin-x64/-/darwin-x64-0.3.16.tgz", - "integrity": "sha512-SXomcHsQSw5W/g0kZsiE3qNo/r4R1FAxfXoR6PgFOiFD85r7iUm+dRBcXwqtftiUanDlbhhrENhBPY0zuLoSfA==", + "version": "0.3.18", + "resolved": "https://registry.npmjs.org/@libsql/darwin-x64/-/darwin-x64-0.3.18.tgz", + "integrity": "sha512-faq6HUGDaNaueeqPei5cypHaD/hhazUyfHo094CXiEeRZq6ZKtNl5PHdlr8jE/Uw8USNpVVQaLdnvSgKcpRPHw==", "cpu": [ "x64" ], @@ -1125,43 +1190,20 @@ ] }, "node_modules/@libsql/hrana-client": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/@libsql/hrana-client/-/hrana-client-0.5.6.tgz", - "integrity": "sha512-mjQoAmejZ1atG+M3YR2ZW+rg6ceBByH/S/h17ZoYZkqbWrvohFhXyz2LFxj++ARMoY9m6w3RJJIRdJdmnEUlFg==", + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/@libsql/hrana-client/-/hrana-client-0.6.2.tgz", + "integrity": "sha512-MWxgD7mXLNf9FXXiM0bc90wCjZSpErWKr5mGza7ERy2FJNNMXd7JIOv+DepBA1FQTIfI8TFO4/QDYgaQC0goNw==", "dependencies": { - "@libsql/isomorphic-fetch": "^0.1.12", + "@libsql/isomorphic-fetch": "^0.2.1", "@libsql/isomorphic-ws": "^0.1.5", "js-base64": "^3.7.5", "node-fetch": "^3.3.2" } }, "node_modules/@libsql/isomorphic-fetch": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/@libsql/isomorphic-fetch/-/isomorphic-fetch-0.1.12.tgz", - "integrity": "sha512-MRo4UcmjAGAa3ac56LoD5OE13m2p0lu0VEtZC2NZMcogM/jc5fU9YtMQ3qbPjFJ+u2BBjFZgMPkQaLS1dlMhpg==", - "dependencies": { - "@types/node-fetch": "^2.6.11", - "node-fetch": "^2.7.0" - } - }, - "node_modules/@libsql/isomorphic-fetch/node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@libsql/isomorphic-fetch/-/isomorphic-fetch-0.2.1.tgz", + "integrity": "sha512-Sv07QP1Aw8A5OOrmKgRUBKe2fFhF2hpGJhtHe3d1aRnTESZCGkn//0zDycMKTGamVWb3oLYRroOsCV8Ukes9GA==" }, "node_modules/@libsql/isomorphic-ws": { "version": "0.1.5", @@ -1173,9 +1215,9 @@ } }, "node_modules/@libsql/linux-arm64-gnu": { - "version": "0.3.16", - "resolved": "https://registry.npmjs.org/@libsql/linux-arm64-gnu/-/linux-arm64-gnu-0.3.16.tgz", - "integrity": "sha512-pvXyj0THb/y7P9mRl263ouEsQUaOPAw+dlKJZ3NDzinDImSr1JsPtgsftEAGJx2Y7qajbMAkor72uwQNj927/A==", + "version": "0.3.18", + "resolved": "https://registry.npmjs.org/@libsql/linux-arm64-gnu/-/linux-arm64-gnu-0.3.18.tgz", + "integrity": "sha512-5m9xtDAhoyLSV54tho9uQ2ZIDeJWc0vU3Xpe/VK4+6bpURISs23qNhXiCrZnnq3oV0hFlBfcIgQUIATmb6jD2A==", "cpu": [ "arm64" ], @@ -1185,9 +1227,9 @@ ] }, "node_modules/@libsql/linux-arm64-musl": { - "version": "0.3.16", - "resolved": "https://registry.npmjs.org/@libsql/linux-arm64-musl/-/linux-arm64-musl-0.3.16.tgz", - "integrity": "sha512-IfNkwH1TJWnCys+1NFz8j7Hto3N5KTYuCQ/EshIhUiQSzx00aNEor+5cZMr1CCK2Vw+Pdog5zKyvWKNHqUwnyw==", + "version": "0.3.18", + "resolved": "https://registry.npmjs.org/@libsql/linux-arm64-musl/-/linux-arm64-musl-0.3.18.tgz", + "integrity": "sha512-oYD5+oM2gPEalp+EoR5DVQBRtdGjLsocjsRbQs5O2m4WOBJKER7VUfDYZHsifLGZoBSc11Yo6s9IR9rjGWy20w==", "cpu": [ "arm64" ], @@ -1197,9 +1239,9 @@ ] }, "node_modules/@libsql/linux-x64-gnu": { - "version": "0.3.16", - "resolved": "https://registry.npmjs.org/@libsql/linux-x64-gnu/-/linux-x64-gnu-0.3.16.tgz", - "integrity": "sha512-O2OURkYa0jb2nGTjPpGWU5oTyj6DmBsB0dDCx/Y5wThpNLM5kbHRpXyyz8QdTE9PW5oM1zn9ij8kUYhgFDfCaQ==", + "version": "0.3.18", + "resolved": "https://registry.npmjs.org/@libsql/linux-x64-gnu/-/linux-x64-gnu-0.3.18.tgz", + "integrity": "sha512-QDSSP60nS8KIldGE7H3bpEflQHiL1erwED6huoVJdmDFxsyDJX2CYdWUWW8Za0ZUOvUbnEWAOyMhp6j1dBbZqw==", "cpu": [ "x64" ], @@ -1209,9 +1251,9 @@ ] }, "node_modules/@libsql/linux-x64-musl": { - "version": "0.3.16", - "resolved": "https://registry.npmjs.org/@libsql/linux-x64-musl/-/linux-x64-musl-0.3.16.tgz", - "integrity": "sha512-D+4uS9HdHIAHgn3KvH9aJSJOv4Zi80ccfCFVFVbJESJ/0pdqyJVBZGzHYyuw59ol0xZAgfcxIFSriyAragbhEA==", + "version": "0.3.18", + "resolved": "https://registry.npmjs.org/@libsql/linux-x64-musl/-/linux-x64-musl-0.3.18.tgz", + "integrity": "sha512-5SXwTlaLCUPzxYyq+P0c7Ko7tcEjpd1X6RZKe1DuRFmJPg6f7j2+LrPEhMSIbqKcrl5ACUUAyoKmGZqNYwz23w==", "cpu": [ "x64" ], @@ -1221,9 +1263,9 @@ ] }, "node_modules/@libsql/win32-x64-msvc": { - "version": "0.3.16", - "resolved": "https://registry.npmjs.org/@libsql/win32-x64-msvc/-/win32-x64-msvc-0.3.16.tgz", - "integrity": "sha512-/+n2ibxYs6C1GHQbmkdeCPlw7QhAJJb4XOAEzvfk069lelk8f26MHrodJJiRBBJczmwUl4HNwDjR4HT2+k9ljw==", + "version": "0.3.18", + "resolved": "https://registry.npmjs.org/@libsql/win32-x64-msvc/-/win32-x64-msvc-0.3.18.tgz", + "integrity": "sha512-9EEIHz+e8tTbx9TMkb8ByZnzxc0pYFirK1nSbqC6cFEST95fiY0NCfQ/zAzJxe90KckbjifX6BbO69eWIi3TAg==", "cpu": [ "x64" ], @@ -1498,16 +1540,6 @@ "@babel/types": "^7.20.7" } }, - "node_modules/@types/better-sqlite3": { - "version": "7.6.9", - "resolved": "https://registry.npmjs.org/@types/better-sqlite3/-/better-sqlite3-7.6.9.tgz", - "integrity": "sha512-FvktcujPDj9XKMJQWFcl2vVl7OdRIqsSRX9b0acWwTmwLK9CF2eqo/FRcmMLNpugKoX/avA6pb7TorDLmpgTnQ==", - "optional": true, - "peer": true, - "dependencies": { - "@types/node": "*" - } - }, "node_modules/@types/debug": { "version": "4.1.12", "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", @@ -1563,15 +1595,6 @@ "undici-types": "~5.26.4" } }, - "node_modules/@types/node-fetch": { - "version": "2.6.11", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.11.tgz", - "integrity": "sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==", - "dependencies": { - "@types/node": "*", - "form-data": "^4.0.0" - } - }, "node_modules/@types/unist": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", @@ -1891,11 +1914,6 @@ "node": ">= 14" } }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - }, "node_modules/axios": { "version": "0.21.4", "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", @@ -1984,18 +2002,6 @@ } ] }, - "node_modules/better-sqlite3": { - "version": "9.4.3", - "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-9.4.3.tgz", - "integrity": "sha512-ud0bTmD9O3uWJGuXDltyj3R47Nz0OHX8iqPOT5PMspGqlu/qQFn+5S2eFBUCrySpavTjFXbi4EgrfVvPAHlImw==", - "hasInstallScript": true, - "optional": true, - "peer": true, - "dependencies": { - "bindings": "^1.5.0", - "prebuild-install": "^7.1.1" - } - }, "node_modules/binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -2004,16 +2010,6 @@ "node": ">=8" } }, - "node_modules/bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "optional": true, - "peer": true, - "dependencies": { - "file-uri-to-path": "1.0.0" - } - }, "node_modules/bl": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/bl/-/bl-5.1.0.tgz", @@ -2472,17 +2468,6 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "optional": true }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/comma-separated-tokens": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", @@ -2636,14 +2621,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", @@ -2729,6 +2706,115 @@ "url": "https://dotenvx.com" } }, + "node_modules/drizzle-orm": { + "version": "0.30.10", + "resolved": "https://registry.npmjs.org/drizzle-orm/-/drizzle-orm-0.30.10.tgz", + "integrity": "sha512-IRy/QmMWw9lAQHpwbUh1b8fcn27S/a9zMIzqea1WNOxK9/4EB8gIo+FZWLiPXzl2n9ixGSv8BhsLZiOppWEwBw==", + "peerDependencies": { + "@aws-sdk/client-rds-data": ">=3", + "@cloudflare/workers-types": ">=3", + "@electric-sql/pglite": ">=0.1.1", + "@libsql/client": "*", + "@neondatabase/serverless": ">=0.1", + "@op-engineering/op-sqlite": ">=2", + "@opentelemetry/api": "^1.4.1", + "@planetscale/database": ">=1", + "@types/better-sqlite3": "*", + "@types/pg": "*", + "@types/react": ">=18", + "@types/sql.js": "*", + "@vercel/postgres": ">=0.8.0", + "@xata.io/client": "*", + "better-sqlite3": ">=7", + "bun-types": "*", + "expo-sqlite": ">=13.2.0", + "knex": "*", + "kysely": "*", + "mysql2": ">=2", + "pg": ">=8", + "postgres": ">=3", + "react": ">=18", + "sql.js": ">=1", + "sqlite3": ">=5" + }, + "peerDependenciesMeta": { + "@aws-sdk/client-rds-data": { + "optional": true + }, + "@cloudflare/workers-types": { + "optional": true + }, + "@electric-sql/pglite": { + "optional": true + }, + "@libsql/client": { + "optional": true + }, + "@neondatabase/serverless": { + "optional": true + }, + "@op-engineering/op-sqlite": { + "optional": true + }, + "@opentelemetry/api": { + "optional": true + }, + "@planetscale/database": { + "optional": true + }, + "@types/better-sqlite3": { + "optional": true + }, + "@types/pg": { + "optional": true + }, + "@types/react": { + "optional": true + }, + "@types/sql.js": { + "optional": true + }, + "@vercel/postgres": { + "optional": true + }, + "@xata.io/client": { + "optional": true + }, + "better-sqlite3": { + "optional": true + }, + "bun-types": { + "optional": true + }, + "expo-sqlite": { + "optional": true + }, + "knex": { + "optional": true + }, + "kysely": { + "optional": true + }, + "mysql2": { + "optional": true + }, + "pg": { + "optional": true + }, + "postgres": { + "optional": true + }, + "react": { + "optional": true + }, + "sql.js": { + "optional": true + }, + "sqlite3": { + "optional": true + } + } + }, "node_modules/dset": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/dset/-/dset-3.1.3.tgz", @@ -2988,13 +3074,6 @@ "node": "^12.20 || >= 14.13" } }, - "node_modules/file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "optional": true, - "peer": true - }, "node_modules/fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -3057,19 +3136,6 @@ } } }, - "node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/formdata-polyfill": { "version": "4.0.10", "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", @@ -3716,9 +3782,9 @@ } }, "node_modules/libsql": { - "version": "0.3.16", - "resolved": "https://registry.npmjs.org/libsql/-/libsql-0.3.16.tgz", - "integrity": "sha512-pIv3hP+W0bHTyjg56H5O3D45RP1BGcs0jnSOCk8PQ41nlPpVG3+sG9AG9Vc2NcnvFKuL02gGPFLzvbBe8AQjgg==", + "version": "0.3.18", + "resolved": "https://registry.npmjs.org/libsql/-/libsql-0.3.18.tgz", + "integrity": "sha512-lvhKr7WV3NLWRbXkjn/MeKqXOAqWKU0PX9QYrvDh7fneukapj+iUQ4qgJASrQyxcCrEsClXCQiiK5W6OoYPAlA==", "cpu": [ "x64", "arm64", @@ -3735,13 +3801,13 @@ "libsql": "^0.3.15" }, "optionalDependencies": { - "@libsql/darwin-arm64": "0.3.16", - "@libsql/darwin-x64": "0.3.16", - "@libsql/linux-arm64-gnu": "0.3.16", - "@libsql/linux-arm64-musl": "0.3.16", - "@libsql/linux-x64-gnu": "0.3.16", - "@libsql/linux-x64-musl": "0.3.16", - "@libsql/win32-x64-msvc": "0.3.16" + "@libsql/darwin-arm64": "0.3.18", + "@libsql/darwin-x64": "0.3.18", + "@libsql/linux-arm64-gnu": "0.3.18", + "@libsql/linux-arm64-musl": "0.3.18", + "@libsql/linux-x64-gnu": "0.3.18", + "@libsql/linux-x64-musl": "0.3.18", + "@libsql/win32-x64-msvc": "0.3.18" } }, "node_modules/load-yaml-file": { @@ -4647,25 +4713,6 @@ "node": ">=10.0.0" } }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/mimic-fn": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", @@ -6583,11 +6630,6 @@ "node": ">=0.6" } }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, "node_modules/trim-lines": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", @@ -7160,20 +7202,6 @@ "node": ">= 8" } }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -7298,9 +7326,9 @@ "optional": true }, "node_modules/ws": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", - "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", + "version": "8.17.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.0.tgz", + "integrity": "sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==", "engines": { "node": ">=10.0.0" }, @@ -7404,9 +7432,9 @@ } }, "node_modules/zod": { - "version": "3.22.4", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.22.4.tgz", - "integrity": "sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==", + "version": "3.23.8", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz", + "integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==", "funding": { "url": "https://github.com/sponsors/colinhacks" } diff --git a/package.json b/package.json index ef5bd42..ab804ff 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "mixpod-astro", + "name": "xtowel", "type": "module", "version": "0.0.1", "scripts": { @@ -13,7 +13,7 @@ }, "dependencies": { "@astrojs/check": "^0.5.4", - "@astrojs/db": "^0.10.5", + "@astrojs/db": "^0.11.4", "@astrojs/netlify": "^5.2.1", "@astrojs/node": "^8.2.0", "astro": "^4.4.0", diff --git a/public/assets/background-mid-1.png b/public/assets/background-mid-1.png new file mode 100644 index 0000000..16a7f7a Binary files /dev/null and b/public/assets/background-mid-1.png differ diff --git a/public/assets/background-mid-orange.png b/public/assets/background-mid-orange.png deleted file mode 100644 index bf84d22..0000000 Binary files a/public/assets/background-mid-orange.png and /dev/null differ diff --git a/public/assets/background-top.png b/public/assets/background-top.png index 37294e5..54bad7d 100644 Binary files a/public/assets/background-top.png and b/public/assets/background-top.png differ diff --git a/src/components/Comment.astro b/src/components/Comment.astro deleted file mode 100644 index 94d0eb0..0000000 --- a/src/components/Comment.astro +++ /dev/null @@ -1,15 +0,0 @@ ---- -interface Props { - comment: { author: string | null; content: string | null }; -} -const { comment } = Astro.props; ---- - -
  • -
    -

    {comment.content}

    - -
    -
  • diff --git a/src/components/CommentForm.astro b/src/components/CommentForm.astro deleted file mode 100644 index 37332c1..0000000 --- a/src/components/CommentForm.astro +++ /dev/null @@ -1,43 +0,0 @@ ---- - ---- - -
    - - - - - - - -
    - - diff --git a/src/components/PlaylistForm.astro b/src/components/PlaylistForm.astro deleted file mode 100644 index 895041f..0000000 --- a/src/components/PlaylistForm.astro +++ /dev/null @@ -1,64 +0,0 @@ ---- -import type { Playlist } from "../models/types"; - -interface Props { - playlist?: Playlist; -} - -const { playlist } = Astro.props; ---- - -
    - - - - - - - - - - - - - -
    - - diff --git a/src/layouts/Layout.astro b/src/layouts/Layout.astro index db71ced..5991303 100644 --- a/src/layouts/Layout.astro +++ b/src/layouts/Layout.astro @@ -12,7 +12,7 @@ const pathname = new URL(Astro.request.url).pathname; const navItems = []; if (nav === "minimal" || nav === "full") { - navItems.push({ path: "/", label: "👈 MixPod" }); + navItems.push({ path: "/", label: "👈 Home" }); } if (nav === "full") { @@ -90,13 +90,13 @@ if (typeof nav === "object") { background-color: floralwhite; background-image: url("/assets/background-top.png"), url("/assets/background-bottom.png"), - url("/assets/background-mid-orange.png"); + url("/assets/background-mid-1.png"); background-position: top center, bottom center, - center center; + center right; background-repeat: no-repeat, no-repeat, repeat-y; - background-size: 100vw auto; + /* background-size: 100vw auto; */ min-height: 100vh; } diff --git a/src/pages/404.astro b/src/pages/404.astro index ae3e79d..7394a22 100644 --- a/src/pages/404.astro +++ b/src/pages/404.astro @@ -2,8 +2,9 @@ import Layout from "../layouts/Layout.astro"; --- - +
    +

    A towel is the most massively useful thing an interstellar hitchhiker and web developer can have, but you've lost yours...

    diff --git a/src/pages/[playlistId]/edit.astro b/src/pages/[playlistId]/edit.astro deleted file mode 100644 index bcff214..0000000 --- a/src/pages/[playlistId]/edit.astro +++ /dev/null @@ -1,62 +0,0 @@ ---- -import { db, Playlist, eq } from "astro:db"; - -import Layout from "../../layouts/Layout.astro"; -import PlaylistForm from "../../components/PlaylistForm.astro"; - -const { playlistId: playlistIdParam = "" } = Astro.params; -const playlistId = parseInt(playlistIdParam); - -const playlists = await db - .select() - .from(Playlist) - .where(eq(Playlist.id, playlistId)); - -const playlist = playlists[0]; - -if (!playlist) return Astro.redirect("/404"); - -if (Astro.request.method === "POST") { - const data = await Astro.request.formData(); - - await db - .update(Playlist) - .set({ - name: data.get("name") as string, - description: data.get("description") as string, - createdBy: data.get("created-by") as string, - }) - .where(eq(Playlist.id, playlistId)); - - return Astro.redirect(`/${playlistId}`); -} ---- - - -
    -
    -

    - Edit MixPod Details - -

    -
    -
    - -
    -
    -
    - - diff --git a/src/pages/[playlistId]/index.astro b/src/pages/[playlistId]/index.astro deleted file mode 100644 index b9c314c..0000000 --- a/src/pages/[playlistId]/index.astro +++ /dev/null @@ -1,109 +0,0 @@ ---- -import { db, Playlist, Episode, PlaylistEpisode, eq } from "astro:db"; - -import Layout from "../../layouts/Layout.astro"; - -const query = Astro.url.searchParams.get("q"); -const { playlistId: playlistIdParam = "" } = Astro.params; -const playlistId = parseInt(playlistIdParam); - -const playlists = await db - .select() - .from(Playlist) - .where(eq(Playlist.id, playlistId)); - -const playlist = playlists[0]; - -if (!playlist) return Astro.redirect("/404"); - -const playlistEpisodes = await db - .select({ episode: Episode }) - .from(PlaylistEpisode) - .innerJoin(Episode, eq(Episode.id, PlaylistEpisode.episodeId)) - .where(eq(PlaylistEpisode.playlistId, playlistId)); - -console.log(playlistEpisodes); ---- - - -
    -
    -

    - {playlist?.name} - - 📝 - -

    - Public MixPod - -

    {playlist?.description}

    -

    {playlist?.createdBy}

    -
    -
    -
    -
    - Search for episodes to add - - -
    -
    - { - playlistEpisodes.map(({ episode }) => ( -
    -

    -

    - )) - } -
    -
    -
    - - diff --git a/src/pages/[playlistId]/search.astro b/src/pages/[playlistId]/search.astro deleted file mode 100644 index 44cf1b4..0000000 --- a/src/pages/[playlistId]/search.astro +++ /dev/null @@ -1,166 +0,0 @@ ---- -import { db, Playlist, Episode, PlaylistEpisode, eq } from "astro:db"; -import Layout from "../../layouts/Layout.astro"; -import { Client } from "podcast-api"; - -interface EpisodeSearchResult { - id: string; - image: string; - audio: string; - title_highlighted: string; - description_highlighted: string; - podcast: { - title_highlighted: string; - }; -} - -const query = Astro.url.searchParams.get("q"); -const { playlistId: playlistIdParam = "" } = Astro.params; -const playlistId = parseInt(playlistIdParam); - -const playlists = await db - .select() - .from(Playlist) - .where(eq(Playlist.id, playlistId)); - -const playlist = playlists[0]; - -if (!playlist) return Astro.redirect("/404"); -if (!query) return Astro.redirect(`/${playlistId}/`); - -const playlistEpisodes = await db - .select({ episodeId: Episode.id }) - .from(PlaylistEpisode) - .innerJoin(Episode, eq(Episode.id, PlaylistEpisode.episodeId)) - .where(eq(PlaylistEpisode.playlistId, playlistId)); - -const episodeIds = playlistEpisodes.map(({ episodeId }) => episodeId); - -// If apiKey is null, then we will connect to a mock server -// that returns fake data for testing purposes. -const podcastApi = Client({ apiKey: import.meta.env.LISTEN_NOTES_API_KEY }); - -let results: EpisodeSearchResult[] = []; - -if (query) { - const response = await podcastApi.search({ - q: query, - type: "episode", - page_size: 10, - }); - - results = response.data.results; -} - -if (Astro.request.method === "POST") { - const formData = await Astro.request.formData(); - const episodeId = formData.get("episodeId"); - - if (episodeId && playlistId) { - const { data: fetchedData } = await podcastApi.fetchEpisodeById({ - id: episodeId, - }); - - const episodeData = { - title: fetchedData.title as string, - description: fetchedData.description as string, - audio: fetchedData.audio as string, - }; - - await db.batch([ - db - .insert(Episode) - .values({ id: fetchedData.id as string, ...episodeData }) - .onConflictDoUpdate({ target: Episode.id, set: episodeData }), - db - .insert(PlaylistEpisode) - .values({ - playlistId: playlistId, - episodeId: fetchedData.id as string, - }) - .onConflictDoNothing(), - ]); - - return Astro.redirect(`/${playlistId}/?q=${query}`); - } -} ---- - - -
    -
    -

    {query}

    - Search results for -
    - -
    - { - results.map((result) => { - return ( -
    -

    - -

    {result.podcast.title_highlighted}

    - - {result.title_highlighted} - -
    - - -
    - -

    - -

    - ); - }) - } -
    -
    -
    - - diff --git a/src/pages/about.astro b/src/pages/about.astro index 9406bb8..202557a 100644 --- a/src/pages/about.astro +++ b/src/pages/about.astro @@ -3,23 +3,18 @@ import Layout from "../layouts/Layout.astro"; import SignUp from "../components/SignUp.astro"; const streams = [ - "vIJeL9Mu31I?", - "2KWprkl0CVo", - "ES_ZDVQfngo", - "UiG7S8pDk4E", - "SQ8URCwbW5g", - "ZWhzBS0PJQg", + "oslrnHwClx8", + "LzSyS7UQFXQ", ]; --- - +
    -

    About MixPod

    +

    About Twowels, TwitterTowels, XTowe, Towelie?!?!

    - MixPod is an exploration of what can be done with no client-side - javascript and open web standards such as RSS. + Twowels, TwitterTowels, XTowe, Towelie?!?! is an exploration of what can be done with screenshot API Urlbox.

    @@ -30,12 +25,11 @@ const streams = [ -

    every other Saturday at 11:00 CET

    @@ -55,13 +49,6 @@ const streams = [
  • Captain Ola @OlaHolstVea
  • -
  • The Pirate Princess
  • -
  • - Ruler of the chat: AK @ja_gatka -
  • @@ -69,7 +56,7 @@ const streams = [

    Past voyages

      { - streams.map((stream) => ( + streams.slice(1).map((stream) => (