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 (
+
+
+
+
+ {docs && (
+
+
+
+ )}
+ {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.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