mirror of
https://github.com/supabase/supabase.git
synced 2026-10-15 06:09:08 +03:00
add blog images and lw15 summary
This commit is contained in:
1 parent
e862e6d282
commit
208fe49afd
10 files changed
+142
-22
No files matched your search
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: 'Introducing JWT signing keys'
|
||||
title: 'Introducing JWT Signing Keys'
|
||||
description: "A new JWT signing keys system based on public key cryptography to improve your project's security and performance."
|
||||
categories:
|
||||
- product
|
||||
@@ -10,8 +10,9 @@ tags:
|
||||
date: '2025-07-14:00:00'
|
||||
toc_depth: 3
|
||||
author: stojan
|
||||
image: ...
|
||||
thumb: ...
|
||||
image: launch-week-15/day-1-jwt-signing-keys/og.jpg
|
||||
thumb: launch-week-15/day-1-jwt-signing-keys/thumb.jpg
|
||||
launchweek: 15
|
||||
---
|
||||
|
||||
Today we're announcing some long awaited changes in Supabase:
|
||||
|
||||
@@ -20,7 +20,7 @@ const Hero = () => {
|
||||
url="/launch-week#main-stage"
|
||||
badge="LW15"
|
||||
announcement={announcement.launch}
|
||||
className="-mt-8"
|
||||
className="lg:-mt-8"
|
||||
hasArrow
|
||||
/>
|
||||
<div className="flex flex-col items-center">
|
||||
|
||||
@@ -14,7 +14,7 @@ const LW14Summary = () => {
|
||||
>
|
||||
<div className="w-full p-4 flex justify-between items-center">
|
||||
<Link
|
||||
href="/launch-week"
|
||||
href="/launch-week/14"
|
||||
className="flex items-center text-foreground font-medium gap-1.5 leading-none uppercase text-xs opacity-80 transition-opacity hover:opacity-100"
|
||||
>
|
||||
Launch Week 14
|
||||
|
||||
@@ -0,0 +1,109 @@
|
||||
import React from 'react'
|
||||
import Link from 'next/link'
|
||||
import { buildDays, mainDays } from './data'
|
||||
import { Lock } from 'lucide-react'
|
||||
|
||||
const LW14Summary = () => {
|
||||
const days = mainDays()
|
||||
|
||||
return (
|
||||
<div
|
||||
style={{
|
||||
fontFamily:
|
||||
"SuisseIntl-Book, custom-font, -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif",
|
||||
}}
|
||||
className="w-full border bg-alternative flex flex-col rounded text-foreground-lighter mt-12 overflow-hidden"
|
||||
>
|
||||
<div className="w-full uppercase p-4 flex justify-between items-center">
|
||||
<Link
|
||||
href="/launch-week"
|
||||
className="flex items-center text-foreground font-medium gap-2.5 leading-none text-xs opacity-80 transition-opacity hover:opacity-100"
|
||||
>
|
||||
Launch Week 15
|
||||
</Link>
|
||||
<div className=" tracking-wide text-xs">July 14 — 18</div>
|
||||
</div>
|
||||
<div className="pb-4 border-t p-4 font-mono">
|
||||
<ul className="flex flex-col gap-2">
|
||||
{days.map((day, i: number) =>
|
||||
day.shipped ? (
|
||||
<ol key={`main-shipped-${day.id}`}>
|
||||
<Link
|
||||
href={day.blog}
|
||||
className="group flex items-center py-1 gap-2 hover:text-foreground"
|
||||
>
|
||||
<span className="shrink-0 text-sm leading-6">Day {i + 1}</span>
|
||||
<span>-</span>
|
||||
<span className="leading-6">{day.title}</span>
|
||||
</Link>
|
||||
</ol>
|
||||
) : (
|
||||
<ol key={`main-not-shipped-${day.id}`}>
|
||||
<Link
|
||||
href={day.blog}
|
||||
className="group flex items-center gap-2 py-1 text-foreground-muted pointer-events-none"
|
||||
>
|
||||
<span className="shrink-0 text-sm leading-6">Day {i + 1}</span>
|
||||
<span>-</span>
|
||||
<Lock className="w-3 h-3" />
|
||||
</Link>
|
||||
</ol>
|
||||
)
|
||||
)}
|
||||
</ul>
|
||||
</div>
|
||||
<div className="w-[calc(100%+2px)] bg-alternative-200/20 flex flex-col gap-2 -m-px border font-mono">
|
||||
<div className="p-4">
|
||||
<div className="text-xs text-foreground tracking-wide">Build Stage</div>
|
||||
<ul className="flex flex-col gap-2 mt-4">
|
||||
{buildDays.map((day, i: number) =>
|
||||
day.is_shipped ? (
|
||||
<ol key={`build-shipped-${day.id}`}>
|
||||
<Link
|
||||
href={day.links[0].url}
|
||||
className="relative flex items-center justify-between group w-full py-1 hover:text-foreground"
|
||||
>
|
||||
<span className="relative flex items-center gap-2">
|
||||
<span className="">
|
||||
{i + 1 < 10 ? '0' : ''}
|
||||
{i + 1}
|
||||
</span>
|
||||
<span>-</span>
|
||||
{day.title}
|
||||
</span>
|
||||
</Link>
|
||||
</ol>
|
||||
) : (
|
||||
<ol key={`build-not-shipped-${day.id}`}>
|
||||
<Link
|
||||
href={day.links[0].url}
|
||||
className="relative flex items-center justify-between group w-full py-1 text-foreground-muted pointer-events-none"
|
||||
>
|
||||
<span className="relative flex items-center gap-2">
|
||||
<span className="">
|
||||
{i + 1 < 10 ? '0' : ''}
|
||||
{i + 1}
|
||||
</span>
|
||||
<span>-</span>
|
||||
<Lock className="w-3 h-3" />
|
||||
</span>
|
||||
</Link>
|
||||
</ol>
|
||||
)
|
||||
)}
|
||||
<ol className="border-t pt-4 mt-2">
|
||||
<Link
|
||||
href="/events?category=meetup"
|
||||
className="relative flex items-center justify-between group w-full py-1 hover:text-foreground"
|
||||
>
|
||||
Community Meetups
|
||||
</Link>
|
||||
</ol>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
export default LW14Summary
|
||||
@@ -64,10 +64,10 @@ const days: (isDark?: boolean) => WeekDayProps[] = (isDark = true) => [
|
||||
shipped: true,
|
||||
isToday: true,
|
||||
hasCountdown: false,
|
||||
blog: '/blog/',
|
||||
blog: '/blog/jwt-signing-keys',
|
||||
date: 'Monday, 14th',
|
||||
published_at: '2025-03-31T07:00:00.000-07:00',
|
||||
title: 'Introducing ...',
|
||||
title: 'Introducing JWT Signing Keys',
|
||||
description: '',
|
||||
links: [
|
||||
{
|
||||
|
||||
@@ -10,20 +10,21 @@ import { Badge } from 'ui'
|
||||
import dayjs from 'dayjs'
|
||||
|
||||
import authors from 'lib/authors.json'
|
||||
import { generateReadingTime, isNotNullOrUndefined } from '~/lib/helpers'
|
||||
import mdxComponents from '~/lib/mdx/mdxComponents'
|
||||
import { mdxSerialize } from '~/lib/mdx/mdxSerialize'
|
||||
import { getAllPostSlugs, getPostdata, getSortedPosts } from '~/lib/posts'
|
||||
import { generateReadingTime, isNotNullOrUndefined } from 'lib/helpers'
|
||||
import mdxComponents from 'lib/mdx/mdxComponents'
|
||||
import { mdxSerialize } from 'lib/mdx/mdxSerialize'
|
||||
import { getAllPostSlugs, getPostdata, getSortedPosts } from 'lib/posts'
|
||||
|
||||
import ShareArticleActions from '~/components/Blog/ShareArticleActions'
|
||||
import CTABanner from '~/components/CTABanner'
|
||||
import LW11Summary from '~/components/LaunchWeek/11/LW11Summary'
|
||||
import LW12Summary from '~/components/LaunchWeek/12/LWSummary'
|
||||
import LW13Summary from '~/components/LaunchWeek/13/Releases/LWSummary'
|
||||
import LW14Summary from '~/components/LaunchWeek/14/Releases/LWSummary'
|
||||
import BlogLinks from '~/components/LaunchWeek/7/BlogLinks'
|
||||
import LWXSummary from '~/components/LaunchWeek/X/LWXSummary'
|
||||
import DefaultLayout from '~/components/Layouts/Default'
|
||||
import ShareArticleActions from 'components/Blog/ShareArticleActions'
|
||||
import CTABanner from 'components/CTABanner'
|
||||
import LW11Summary from 'components/LaunchWeek/11/LW11Summary'
|
||||
import LW12Summary from 'components/LaunchWeek/12/LWSummary'
|
||||
import LW13Summary from 'components/LaunchWeek/13/Releases/LWSummary'
|
||||
import LW14Summary from 'components/LaunchWeek/14/Releases/LWSummary'
|
||||
import LW15Summary from 'components/LaunchWeek/15/LWSummary'
|
||||
import BlogLinks from 'components/LaunchWeek/7/BlogLinks'
|
||||
import LWXSummary from 'components/LaunchWeek/X/LWXSummary'
|
||||
import DefaultLayout from 'components/Layouts/Default'
|
||||
import { ChevronLeft } from 'lucide-react'
|
||||
|
||||
type Post = ReturnType<typeof getSortedPosts>[number]
|
||||
@@ -139,6 +140,7 @@ function BlogPostPage(props: InferGetStaticPropsType<typeof getStaticProps>) {
|
||||
const isLaunchWeek12 = props.blog.launchweek?.toString().toLocaleLowerCase() === '12'
|
||||
const isLaunchWeek13 = props.blog.launchweek?.toString().toLocaleLowerCase() === '13'
|
||||
const isLaunchWeek14 = props.blog.launchweek?.toString().toLocaleLowerCase() === '14'
|
||||
const isLaunchWeek15 = props.blog.launchweek?.toString().toLocaleLowerCase() === '15'
|
||||
|
||||
const author = authorArray
|
||||
.map((authorId) => {
|
||||
@@ -353,6 +355,7 @@ function BlogPostPage(props: InferGetStaticPropsType<typeof getStaticProps>) {
|
||||
{isLaunchWeek12 && <LW12Summary />}
|
||||
{isLaunchWeek13 && <LW13Summary />}
|
||||
{isLaunchWeek14 && <LW14Summary />}
|
||||
{isLaunchWeek15 && <LW15Summary />}
|
||||
<div className="block lg:hidden py-8">
|
||||
<div className="text-foreground-lighter text-sm">Share this article</div>
|
||||
<ShareArticleActions title={props.blog.title} slug={props.blog.slug} />
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 198 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 58 KiB |
@@ -5,9 +5,16 @@
|
||||
<link>https://supabase.com</link>
|
||||
<description>Latest news from Supabase</description>
|
||||
<language>en</language>
|
||||
<lastBuildDate>Wed, 25 Jun 2025 00:00:00 -0700</lastBuildDate>
|
||||
<lastBuildDate>Mon, 14 Jul 2025 00:00:00 -0700</lastBuildDate>
|
||||
<atom:link href="https://supabase.com/rss.xml" rel="self" type="application/rss+xml"/>
|
||||
<item>
|
||||
<guid>https://supabase.com/blog/jwt-signing-keys</guid>
|
||||
<title>Introducing JWT Signing Keys</title>
|
||||
<link>https://supabase.com/blog/jwt-signing-keys</link>
|
||||
<description>A new JWT signing keys system based on public key cryptography to improve your project's security and performance.</description>
|
||||
<pubDate>Mon, 14 Jul 2025 00:00:00 -0700</pubDate>
|
||||
</item>
|
||||
<item>
|
||||
<guid>https://supabase.com/blog/natural-db</guid>
|
||||
<title>Build a Personalized AI Assistant with Postgres</title>
|
||||
<link>https://supabase.com/blog/natural-db</link>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"text": "LW15: Day 1",
|
||||
"launch": "TBD",
|
||||
"launch": "JWT Signing Keys",
|
||||
"launchDate": "2025-07-14T08:00:00.000-07:00",
|
||||
"link": "/launch-week#main-stage",
|
||||
"cta": "Learn more"
|
||||
|
||||
Reference in new issue
Block a user