diff --git a/apps/www/components/LaunchWeek/BlogLinks.tsx b/apps/www/components/LaunchWeek/BlogLinks.tsx new file mode 100644 index 00000000000..8e81b90978b --- /dev/null +++ b/apps/www/components/LaunchWeek/BlogLinks.tsx @@ -0,0 +1,136 @@ +import Image from 'next/image' +import React from 'react' +import days from '~/components/LaunchWeek/lw7_days' + +const BlogLinks = () => { + const SectionButtons = ({ + blog, + docs, + video, + }: { + blog: string + docs?: string + video?: string + }) => { + return ( +
+ +
+ Blog post +
+ +
+
+
+ {docs && ( + +
+ Docs +
+ +
+
+
+ )} + {video && ( + +
+ Video +
+ +
+
+
+ )} +
+ ) + } + + const activeDays = days.filter((day) => Date.parse(day.publishedAt) <= Date.now()) + + if (!activeDays.length) return null + + return ( +
+

More Launch Week 7

+ {activeDays.map((day) => ( +
+
+
+
{day.title}
+
+ +
+ {day.steps[0].thumb && ( + + )} +
+
+ ))} +
+ ) +} + +const PencilSvg = () => ( + + + +) +const DocsSvg = () => ( + + + +) +const PlaySvg = () => ( + + + +) + +export default BlogLinks diff --git a/apps/www/components/LaunchWeek/lw7_days.json b/apps/www/components/LaunchWeek/lw7_days.json deleted file mode 100644 index e961beefa62..00000000000 --- a/apps/www/components/LaunchWeek/lw7_days.json +++ /dev/null @@ -1,114 +0,0 @@ -[ - { - "title": "Docs Updated", - "shipped": true, - "date": "12 Dec 2022", - "description": "Supabase Docs", - "d": 1, - "dd": "Monday", - "youtube_id": "OpPOaJI_Z28", - "blogpost": "https://supabase.com/blog/new-supabase-docs-built-with-nextjs", - "docs": "https://supabase.com/docs", - "steps": [ - { - "title": "Supabase Docs", - "blog": "/blog/new-supabase-docs-built-with-nextjs", - "docs": "/docs", - "isNew": true, - "description": "" - } - ] - }, - { - "title": "Image Processing: Resize V2 + CDN", - "shipped": true, - "date": "13 Dec 2022", - "description": "Image Transformations", - "d": 2, - "dd": "Tuesday", - "youtube_id": "iqZlPtl_b-I", - "blogpost": "https://supabase.com/blog", - "docs": "https://supabase.com/docs", - "steps": [ - { - "title": "Image Transformations", - "blog": "/blog/storage-image-resizing-smart-cdn", - "docs": "/docs/guides/storage/image-transformations", - "isNew": true, - "description": "" - }, - { - "title": "Smart CDN", - "description": "Faster asset delivery, now even faster.", - "blog": "/blog/storage-image-resizing-smart-cdn", - "docs": "/docs/guides/storage/cdn", - "isNew": true - } - ] - }, - { - "title": "Multi-factor Authentication", - "shipped": true, - "date": "14 Dec 2022", - "description": "Multi-factor Authentication", - "d": 3, - "dd": "Wednesday", - "youtube_id": "CGZr5tybW18", - "blogpost": "https://supabase.com/blog", - "docs": "https://supabase.com/docs", - "steps": [ - { - "title": "Multi-factor Authentication", - "blog": "/blog/mfa-auth-via-rls", - "docs": "/docs/guides/auth/auth-mfa", - "isNew": false, - "description": "" - } - ] - }, - { - "title": "Supabase Wrappers - FDW Framework", - "shipped": true, - "date": "15 Dec 2022", - "description": "Supabase Wrappers", - "d": 4, - "dd": "Thursday", - "youtube_id": "QA2qC5F-4OU", - "blogpost": "/blog/postgres-foreign-data-wrappers-rust", - "docs": "https://supabase.com/docs", - "steps": [ - { - "title": "Supabase Wrappers", - "blog": "/blog/postgres-foreign-data-wrappers-rust", - "docs": "https://supabase.github.io/wrappers/", - "isNew": true, - "description": "Connect Postgres to external systems with Postgres Foreign Data Wrappers" - } - ] - }, - { - "title": "Supabase Vault Release", - "shipped": true, - "date": "16 Dec 2022", - "description": "Vault Release", - "d": 5, - "dd": "Friday", - "youtube_id": "6bGQotxisoY", - "blogpost": "https://supabase.com/blog", - "docs": "https://supabase.com/docs", - "steps": [ - { - "title": "Vault Release", - "blog": "/blog/vault-now-in-beta", - "isNew": true, - "description": "" - }, - { - "title": "Transparent Column Encryption", - "description": "Faster asset delivery, now even faster.", - "blog": "/blog/transparent-column-encryption-with-postgres", - "isNew": true - } - ] - } -] diff --git a/apps/www/components/LaunchWeek/lw7_days.ts b/apps/www/components/LaunchWeek/lw7_days.ts new file mode 100644 index 00000000000..cbd70b1c5ba --- /dev/null +++ b/apps/www/components/LaunchWeek/lw7_days.ts @@ -0,0 +1,176 @@ +export interface WeekDayProps { + title: string + shipped: boolean + date: string + publishedAt: string + description: string + d: number + dd: string + youtube_id: string + blogpost: string + docs: string + steps: { + title: string + blog: string + docs?: string + isNew: boolean + description: string + thumb?: string + }[] +} + +const days: WeekDayProps[] = [ + { + title: 'AI generated OG images', + shipped: true, + date: '', + publishedAt: '2023-04-07T07:00:00.000-07:00', + description: 'AI generated OG images', + d: 0, + dd: 'Pre-release', + youtube_id: '', + blogpost: 'https://supabase.com/blog/new-supabase-docs-built-with-nextjs', + docs: 'https://supabase.com/docs', + steps: [ + { + title: 'AI generated OG images', + blog: '/blog/', + docs: '/docs', + isNew: false, + description: '', + thumb: '/images/launchweek/seven/day0/ai-images-thumb.png', + }, + { + title: 'Supavisor', + blog: '/blog/', + docs: '/docs', + isNew: true, + description: '', + }, + ], + }, + { + title: 'Self-hosted Logs & observability', + shipped: false, + date: '10 Apr 2023', + publishedAt: '2023-04-10T07:00:00.000-07:00', + description: 'Supabase Docs', + d: 1, + dd: 'Monday', + youtube_id: 'OpPOaJI_Z28', + blogpost: 'https://supabase.com/blog/new-supabase-docs-built-with-nextjs', + docs: 'https://supabase.com/docs', + steps: [ + { + title: 'Supabase Docs', + blog: '/blog/new-supabase-docs-built-with-nextjs', + docs: '/docs', + isNew: true, + description: '', + thumb: '/images/launchweek/seven/day1/self-hosted-logs-thumb.png', + }, + ], + }, + { + title: 'Self-hosted Edge Functions', + shipped: false, + date: '11 Apr 2023', + publishedAt: '2023-04-11T07:00:00.000-07:00', + description: 'Image Transformations', + d: 2, + dd: 'Tuesday', + youtube_id: 'iqZlPtl_b-I', + blogpost: 'https://supabase.com/blog', + docs: 'https://supabase.com/docs', + steps: [ + { + title: 'Image Transformations', + blog: '', + docs: '', + isNew: true, + description: '', + thumb: '/images/launchweek/seven/day2/self-hosted-edge-functions-thumb.png', + }, + { + title: 'Smart CDN', + description: 'Faster asset delivery, now even faster.', + blog: '/blog/storage-image-resizing-smart-cdn', + docs: '/docs/guides/storage/cdn', + isNew: true, + }, + ], + }, + { + title: 'Storage v3 Multipart upload', + shipped: false, + date: '12 Apr 2023', + publishedAt: '2023-04-12T07:00:00.000-07:00', + description: 'Storage v3 Multipart upload', + d: 3, + dd: 'Wednesday', + youtube_id: 'CGZr5tybW18', + blogpost: 'https://supabase.com/blog', + docs: 'https://supabase.com/docs', + steps: [ + { + title: 'Storage v3 Multipart upload', + blog: '/blog/mfa-auth-via-rls', + docs: '/docs/guides/auth/auth-mfa', + isNew: false, + description: '', + thumb: '/images/launchweek/seven/day3/storage-v3-thumb.png', + }, + ], + }, + { + title: 'SSO Support for Projects', + shipped: false, + date: '13 Apr 2023', + publishedAt: '2023-04-13T07:00:00.000-07:00', + description: 'Supabase Wrappers', + d: 4, + dd: 'Thursday', + youtube_id: 'QA2qC5F-4OU', + blogpost: '/blog/postgres-foreign-data-wrappers-rust', + docs: 'https://supabase.com/docs', + steps: [ + { + title: 'Supabase Wrappers', + blog: '/blog/postgres-foreign-data-wrappers-rust', + docs: 'https://supabase.github.io/wrappers/', + isNew: true, + description: '', + thumb: '/images/launchweek/seven/day4/SSO-support-thumb.png', + }, + ], + }, + { + title: 'Community Highlight', + shipped: false, + date: '14 Apr 2023', + publishedAt: '2023-04-14T07:00:00.000-07:00', + description: 'Vault Release', + d: 5, + dd: 'Friday', + youtube_id: '6bGQotxisoY', + blogpost: 'https://supabase.com/blog', + docs: 'https://supabase.com/docs', + steps: [ + { + title: 'Vault Release', + blog: '/blog/vault-now-in-beta', + isNew: true, + description: '', + thumb: '/images/launchweek/seven/day0/ai-images-thumb.png', + }, + { + title: 'Transparent Column Encryption', + description: '', + blog: '/blog/transparent-column-encryption-with-postgres', + isNew: true, + }, + ], + }, +] + +export default days diff --git a/apps/www/pages/blog/[slug].tsx b/apps/www/pages/blog/[slug].tsx index 88b1d87898f..38c79ebb4a1 100644 --- a/apps/www/pages/blog/[slug].tsx +++ b/apps/www/pages/blog/[slug].tsx @@ -13,6 +13,7 @@ import { generateReadingTime } from '~/lib/helpers' import mdxComponents from '~/lib/mdx/mdxComponents' import { mdxSerialize } from '~/lib/mdx/mdxSerialize' import { getAllPostSlugs, getPostdata, getSortedPosts } from '~/lib/posts' +import BlogLinks from '~/components/LaunchWeek/BlogLinks' // table of contents extractor const toc = require('markdown-toc') @@ -64,6 +65,7 @@ export async function getStaticProps({ params }: any) { function BlogPostPage(props: any) { const content = props.blog.content const authorArray = props.blog.author.split(',') + const isLaunchWeek7 = props.blog.launchWeek7 const author = [] for (let i = 0; i < authorArray.length; i++) { @@ -307,6 +309,7 @@ function BlogPostPage(props: any) {
+ {isLaunchWeek7 && }
{props.prevPost && } diff --git a/apps/www/public/images/launchweek/seven/day0/ai-images-thumb.png b/apps/www/public/images/launchweek/seven/day0/ai-images-thumb.png new file mode 100644 index 00000000000..0af5ecd0ff0 Binary files /dev/null and b/apps/www/public/images/launchweek/seven/day0/ai-images-thumb.png differ diff --git a/apps/www/public/images/launchweek/seven/day1/self-hosted-logs-thumb.png b/apps/www/public/images/launchweek/seven/day1/self-hosted-logs-thumb.png new file mode 100644 index 00000000000..d80cb69f455 Binary files /dev/null and b/apps/www/public/images/launchweek/seven/day1/self-hosted-logs-thumb.png differ diff --git a/apps/www/public/images/launchweek/seven/day2/self-hosted-edge-functions-thumb.png b/apps/www/public/images/launchweek/seven/day2/self-hosted-edge-functions-thumb.png new file mode 100644 index 00000000000..6e25bae6495 Binary files /dev/null and b/apps/www/public/images/launchweek/seven/day2/self-hosted-edge-functions-thumb.png differ diff --git a/apps/www/public/images/launchweek/seven/day3/storage-v3-thumb.png b/apps/www/public/images/launchweek/seven/day3/storage-v3-thumb.png new file mode 100644 index 00000000000..d60f076cbb9 Binary files /dev/null and b/apps/www/public/images/launchweek/seven/day3/storage-v3-thumb.png differ diff --git a/apps/www/public/images/launchweek/seven/day4/SSO-support-thumb.png b/apps/www/public/images/launchweek/seven/day4/SSO-support-thumb.png new file mode 100644 index 00000000000..9d9a00af0fd Binary files /dev/null and b/apps/www/public/images/launchweek/seven/day4/SSO-support-thumb.png differ diff --git a/apps/www/public/rss.xml b/apps/www/public/rss.xml index fd0d82bb06a..d005b1915b9 100644 --- a/apps/www/public/rss.xml +++ b/apps/www/public/rss.xml @@ -5,14 +5,14 @@ https://supabase.com Latest news from Supabase en - Thu, 06 Apr 2023 22:10:00 +0000 + Mon, 03 Apr 2023 22:10:00 +0000 - https://supabase.com/blog/infinite-scroll-with-supabase - Infinite scroll with NextJs, Supabase and Framer Motion - https://supabase.com/blog/infinite-scroll-with-supabase - Lazy load and paginate data on scroll with supabase-js and a sprinkle of Framer Motion magic ✨ - Thu, 06 Apr 2023 22:10:00 +0000 + https://supabase.com/blog/infinite-scroll-with-nextjs-framer-motion + Infinite scroll with Next.js, Framer Motion, and Supabase + https://supabase.com/blog/infinite-scroll-with-nextjs-framer-motion + Lazy load and paginate data on scroll with Next.js and a sprinkle of Framer Motion magic ✨ + Mon, 03 Apr 2023 22:10:00 +0000 https://supabase.com/blog/supaclub