Launch Week
diff --git a/apps/www/components/LaunchWeek/14/Releases/LWSummary.tsx b/apps/www/components/LaunchWeek/14/Releases/LWSummary.tsx
index cc6d67f678d..44d0fd7eb26 100644
--- a/apps/www/components/LaunchWeek/14/Releases/LWSummary.tsx
+++ b/apps/www/components/LaunchWeek/14/Releases/LWSummary.tsx
@@ -14,7 +14,7 @@ const LW14Summary = () => {
>
Launch Week 14
diff --git a/apps/www/components/Nav/index.tsx b/apps/www/components/Nav/index.tsx
index 9906b423282..565e481b9a3 100644
--- a/apps/www/components/Nav/index.tsx
+++ b/apps/www/components/Nav/index.tsx
@@ -43,19 +43,10 @@ const Nav = ({ hideNavbar, stickyNavbar = true }: Props) => {
const sendTelemetryEvent = useSendTelemetryEvent()
const userMenu = useDropdownMenu(user)
- const isLaunchWeekXPage = pathname === '/launch-week/x'
- const isLaunchWeek12Page = pathname === '/launch-week/12'
- const isLaunchWeek13Page = pathname === '/launch-week/13'
const isGAWeekSection = pathname?.startsWith('/ga-week')
const isStateOfStartupsPage = pathname?.startsWith('/state-of-startups')
- const disableStickyNav =
- isLaunchWeekXPage ||
- isGAWeekSection ||
- isLaunchWeekXPage ||
- isLaunchWeek12Page ||
- isLaunchWeek13Page ||
- !stickyNavbar
- const showLaunchWeekNavMode = (isGAWeekSection || isLaunchWeekXPage) && !open
+ const disableStickyNav = isGAWeekSection || !stickyNavbar
+ const showLaunchWeekNavMode = isGAWeekSection && !open
const [scrolled, setScrolled] = React.useState(false)
React.useEffect(() => {
diff --git a/apps/www/hooks/useDarkLaunchWeeks.tsx b/apps/www/hooks/useDarkLaunchWeeks.tsx
index 2717fb98298..b0212240afe 100644
--- a/apps/www/hooks/useDarkLaunchWeeks.tsx
+++ b/apps/www/hooks/useDarkLaunchWeeks.tsx
@@ -7,9 +7,8 @@ const useDarkLaunchWeeks = () => {
const isLaunchWeek7 = pathname?.startsWith('/launch-week/7')
const isLaunchWeek8 = pathname?.startsWith('/launch-week/8')
- const isLaunchWeekX = pathname?.startsWith('/launch-week/x')
- return isLaunchWeek7 || isLaunchWeek8 || isLaunchWeekX
+ return isLaunchWeek7 || isLaunchWeek8
}
export default useDarkLaunchWeeks
diff --git a/apps/www/lib/redirects.js b/apps/www/lib/redirects.js
index 7aebc0c9000..29839256f39 100644
--- a/apps/www/lib/redirects.js
+++ b/apps/www/lib/redirects.js
@@ -2942,6 +2942,26 @@ module.exports = [
source: '/launch-week/6',
destination: '/blog/launch-week-6-wrap-up',
},
+ {
+ permanent: true,
+ source: '/launch-week/x',
+ destination: '/blog/launch-week-x-best-launches',
+ },
+ {
+ permanent: true,
+ source: '/launch-week/12',
+ destination: '/blog/launch-week-12-top-10',
+ },
+ {
+ permanent: true,
+ source: '/launch-week/13',
+ destination: '/blog/launch-week-13-top-10',
+ },
+ {
+ permanent: true,
+ source: '/launch-week/14',
+ destination: '/blog/launch-week-14-top-10',
+ },
{
permanent: true,
source: '/docs/guides/platform/enterprise-billing',
diff --git a/apps/www/pages/_app.tsx b/apps/www/pages/_app.tsx
index 6c31fa3419d..42538c5fa4d 100644
--- a/apps/www/pages/_app.tsx
+++ b/apps/www/pages/_app.tsx
@@ -46,15 +46,9 @@ export default function App({ Component, pageProps }: AppProps) {
const isDarkLaunchWeek = useDarkLaunchWeeks()
const forceDarkMode = isDarkLaunchWeek
- let applicationName = 'Supabase'
- let faviconRoute = DEFAULT_FAVICON_ROUTE
- let themeColor = DEFAULT_FAVICON_THEME_COLOR
-
- if (router.asPath?.includes('/launch-week/x')) {
- applicationName = 'Supabase LWX'
- faviconRoute = 'images/launchweek/lwx/favicon'
- themeColor = 'FFFFFF'
- }
+ const applicationName = 'Supabase'
+ const faviconRoute = DEFAULT_FAVICON_ROUTE
+ const themeColor = DEFAULT_FAVICON_THEME_COLOR
// Advertise the .md version for AI agents on pages that have one.
const cleanPath = (router.asPath ?? '/').split('?')[0].split('#')[0].replace(/\/$/, '') || '/'
diff --git a/apps/www/pages/launch-week/12/index.tsx b/apps/www/pages/launch-week/12/index.tsx
deleted file mode 100644
index fe852f3e175..00000000000
--- a/apps/www/pages/launch-week/12/index.tsx
+++ /dev/null
@@ -1,112 +0,0 @@
-import { useState, useEffect } from 'react'
-import dynamic from 'next/dynamic'
-import { useRouter } from 'next/router'
-import { NextSeo } from 'next-seo'
-import { Session } from '@supabase/supabase-js'
-import { LW12_DATE, LW12_TITLE, LW_URL, SITE_ORIGIN } from '~/lib/constants'
-import supabase from '~/lib/supabase'
-
-import DefaultLayout from '~/components/Layouts/Default'
-import { TicketState, ConfDataContext, UserData } from '~/components/LaunchWeek/hooks/use-conf-data'
-import SectionContainer from '~/components/Layouts/SectionContainer'
-import LWStickyNav from '~/components/LaunchWeek/12/Releases/LWStickyNav'
-import LWHeader from '~/components/LaunchWeek/12/Releases/LWHeader'
-import MainStage from '~/components/LaunchWeek/12/Releases/MainStage'
-
-const BuildStage = dynamic(() => import('~/components/LaunchWeek/12/Releases/BuildStage'))
-const CTABanner = dynamic(() => import('~/components/CTABanner'))
-const LaunchWeekPrizeSection = dynamic(
- () => import('~/components/LaunchWeek/12/LaunchWeekPrizeSection')
-)
-const LW12Meetups = dynamic(() => import('~/components/LaunchWeek/12/LWMeetups'))
-
-export default function LaunchWeekIndex() {
- const { query } = useRouter()
-
- const TITLE = `${LW12_TITLE} | ${LW12_DATE}`
- const DESCRIPTION = 'Join us for a week of announcing new features, every day at 7 AM PT.'
- const OG_IMAGE = `${SITE_ORIGIN}/images/launchweek/12/lw12-og.png?lw=12`
-
- const ticketNumber = query.ticketNumber?.toString()
- const [session, setSession] = useState
(null)
- const [showCustomizationForm, setShowCustomizationForm] = useState(false)
-
- const defaultUserData = {
- id: query.id?.toString(),
- ticket_number: ticketNumber ? parseInt(ticketNumber, 10) : undefined,
- name: query.name?.toString(),
- username: query.username?.toString(),
- platinum: !!query.platinum,
- }
-
- const [userData, setUserData] = useState(defaultUserData)
- const [ticketState, setTicketState] = useState('loading')
-
- useEffect(() => {
- if (supabase) {
- supabase.auth.getSession().then(({ data: { session } }) => setSession(session))
- const {
- data: { subscription },
- } = supabase.auth.onAuthStateChange((_event, session) => {
- setSession(session)
- })
-
- return () => subscription.unsubscribe()
- }
- }, [supabase])
-
- useEffect(() => {
- if (session?.user) {
- if (userData?.id) {
- return setTicketState('ticket')
- }
- return setTicketState('loading')
- }
- if (!session) return setTicketState('registration')
- }, [session, userData])
-
- return (
- <>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- >
- )
-}
diff --git a/apps/www/pages/launch-week/13/index.tsx b/apps/www/pages/launch-week/13/index.tsx
deleted file mode 100644
index 5881ed1202d..00000000000
--- a/apps/www/pages/launch-week/13/index.tsx
+++ /dev/null
@@ -1,117 +0,0 @@
-import { useState, useEffect } from 'react'
-import dynamic from 'next/dynamic'
-import { useRouter } from 'next/router'
-import { NextSeo } from 'next-seo'
-import { Session } from '@supabase/supabase-js'
-import { LW13_DATE, LW13_TITLE, LW_URL, SITE_ORIGIN } from '~/lib/constants'
-import supabase from '~/lib/supabase'
-
-import DefaultLayout from '~/components/Layouts/Default'
-import { TicketState, ConfDataContext, UserData } from '~/components/LaunchWeek/hooks/use-conf-data'
-import LWStickyNav from '~/components/LaunchWeek/13/Releases/LWStickyNav'
-import LWHeader from '~/components/LaunchWeek/13/Releases/LWHeader'
-import MainStage from '~/components/LaunchWeek/13/Releases/MainStage'
-
-const BuildStage = dynamic(() => import('~/components/LaunchWeek/13/Releases/BuildStage'))
-const CTABanner = dynamic(() => import('~/components/CTABanner'))
-
-export default function LaunchWeekIndex() {
- const { query } = useRouter()
-
- const TITLE = `${LW13_TITLE} | ${LW13_DATE}`
- const DESCRIPTION = 'Join us for a week of announcing new features, every day at 7 AM PT.'
- const OG_IMAGE = `${SITE_ORIGIN}/images/launchweek/12/lw13-og.png?lw=12`
-
- const ticketNumber = query.ticketNumber?.toString()
- const [session, setSession] = useState(null)
- const [showCustomizationForm, setShowCustomizationForm] = useState(false)
-
- const defaultUserData = {
- id: query.id?.toString(),
- ticket_number: ticketNumber ? parseInt(ticketNumber, 10) : undefined,
- name: query.name?.toString(),
- username: query.username?.toString(),
- platinum: !!query.platinum,
- }
-
- const [userData, setUserData] = useState(defaultUserData)
- const [ticketState, setTicketState] = useState('loading')
-
- useEffect(() => {
- if (supabase) {
- supabase.auth.getSession().then(({ data: { session } }) => setSession(session))
- const {
- data: { subscription },
- } = supabase.auth.onAuthStateChange((_event, session) => {
- setSession(session)
- })
-
- return () => subscription.unsubscribe()
- }
- }, [supabase])
-
- useEffect(() => {
- if (session?.user) {
- if (userData?.id) {
- return setTicketState('ticket')
- }
- return setTicketState('loading')
- }
- if (!session) return setTicketState('registration')
- }, [session, userData])
-
- return (
- <>
-
-
-
-
-
-
-
-
-
-
-
- >
- )
-}
-
-// export const getServerSideProps: GetServerSideProps = async () => {
-// const { data: meetups } = await supabase!
-// .from('meetups')
-// .select('*')
-// .eq('launch_week', 'lw13')
-// .neq('is_published', false)
-// .order('start_at')
-
-// return {
-// props: {
-// meetups,
-// },
-// }
-// }
diff --git a/apps/www/pages/launch-week/14/index.tsx b/apps/www/pages/launch-week/14/index.tsx
deleted file mode 100644
index 16267f9a608..00000000000
--- a/apps/www/pages/launch-week/14/index.tsx
+++ /dev/null
@@ -1,61 +0,0 @@
-import { NextSeo } from 'next-seo'
-import { LW14_DATE, LW14_TITLE, LW14_URL, SITE_ORIGIN } from 'lib/constants'
-import { useRouter } from 'next/router'
-import { Lw14ConfDataProvider } from 'components/LaunchWeek/14/hooks/use-conf-data'
-import DefaultLayout from 'components/Layouts/Default'
-import LWStickyNav from 'components/LaunchWeek/14/Releases/LWStickyNav'
-import LWHeader from 'components/LaunchWeek/14/Releases/LWHeader'
-import MainStage from 'components/LaunchWeek/14/Releases/MainStage'
-import BuildStage from 'components/LaunchWeek/14/Releases/BuildStage'
-
-const Lw14Page = () => {
- const TITLE = `${LW14_TITLE} | ${LW14_DATE}`
- const DESCRIPTION = 'Join us for a week of announcing new features, every day at 7 AM PT.'
- const OG_IMAGE = `${SITE_ORIGIN}/images/launchweek/14/lw14-og.png?lw=14`
-
- const { query } = useRouter()
- const ticketNumber = query.ticketNumber?.toString()
- const defaultUserData = {
- id: query.id?.toString(),
- ticket_number: ticketNumber ? parseInt(ticketNumber, 10) : undefined,
- name: query.name?.toString(),
- username: query.username?.toString(),
- platinum: !!query.platinum,
- }
-
- return (
- <>
-
-
-
-
-
-
-
-
-
-
-
-
- >
- )
-}
-
-export default Lw14Page
diff --git a/apps/www/pages/launch-week/x/index.tsx b/apps/www/pages/launch-week/x/index.tsx
deleted file mode 100644
index 7d7324ee3dc..00000000000
--- a/apps/www/pages/launch-week/x/index.tsx
+++ /dev/null
@@ -1,142 +0,0 @@
-import { useState, useEffect } from 'react'
-import dynamic from 'next/dynamic'
-import { GetServerSideProps } from 'next'
-import { useRouter } from 'next/router'
-import { NextSeo } from 'next-seo'
-import { Session } from '@supabase/supabase-js'
-import { LW_URL, SITE_ORIGIN } from '~/lib/constants'
-import supabase from '~/lib/supabaseMisc'
-
-import FaviconImports from '~/components/LaunchWeek/X/FaviconImports'
-import DefaultLayout from '~/components/Layouts/Default'
-import { TicketState, ConfDataContext, UserData } from '~/components/LaunchWeek/hooks/use-conf-data'
-import SectionContainer from '~/components/Layouts/SectionContainer'
-import { Meetup } from '~/components/LaunchWeek/X/LWXMeetups'
-import LWXStickyNav from '~/components/LaunchWeek/X/Releases/LWXStickyNav'
-import LWXHeader from '~/components/LaunchWeek/X/Releases/LWXHeader'
-import MainStage from '~/components/LaunchWeek/X/Releases/MainStage'
-
-const BuildStage = dynamic(() => import('~/components/LaunchWeek/X/Releases/BuildStage'))
-const LWXMeetups = dynamic(() => import('~/components/LaunchWeek/X/LWXMeetups'))
-const LaunchWeekPrizeSection = dynamic(
- () => import('~/components/LaunchWeek/X/LaunchWeekPrizeSection')
-)
-
-interface Props {
- meetups?: Meetup[]
-}
-
-export default function LaunchWeekIndex({ meetups }: Props) {
- const { query } = useRouter()
-
- const TITLE = 'Supabase Launch Week X | 11-15 December 2023'
- const DESCRIPTION = 'Join us for a week of announcing new features, every day at 8 AM PT.'
- const OG_IMAGE = `${SITE_ORIGIN}/images/launchweek/lwx/lwx-og.jpg`
-
- const ticketNumber = query.ticketNumber?.toString()
- const bgImageId = query.bgImageId?.toString()
- const [session, setSession] = useState(null)
- const [showCustomizationForm, setShowCustomizationForm] = useState(false)
-
- const defaultUserData = {
- id: query.id?.toString(),
- ticketNumber: ticketNumber ? parseInt(ticketNumber, 10) : undefined,
- name: query.name?.toString(),
- username: query.username?.toString(),
- golden: !!query.golden,
- bgImageId: bgImageId ? parseInt(bgImageId, 10) : undefined,
- }
-
- const [userData, setUserData] = useState(defaultUserData)
- const [ticketState, setTicketState] = useState('loading')
-
- useEffect(() => {
- if (supabase) {
- supabase.auth.getSession().then(({ data: { session } }) => setSession(session))
- const {
- data: { subscription },
- } = supabase.auth.onAuthStateChange((_event, session) => {
- setSession(session)
- })
-
- return () => subscription.unsubscribe()
- }
- }, [supabase])
-
- useEffect(() => {
- document.body.classList.add('bg-[#060809]')
-
- return () => {
- if (document.body.classList.contains('bg-[#060809]')) {
- document.body.classList.remove('bg-[#060809]')
- }
- }
- }, [])
-
- useEffect(() => {
- if (session?.user) {
- if (userData?.id) {
- return setTicketState('ticket')
- }
- return setTicketState('loading')
- }
- if (!session) return setTicketState('registration')
- }, [session, userData])
-
- return (
- <>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- >
- )
-}
-
-export const getServerSideProps: GetServerSideProps = async () => {
- const { data: meetups } = await supabase!.from('lwx_meetups').select('*')
-
- return {
- props: {
- meetups:
- // @ts-ignore
- meetups?.sort((a, b) => (new Date(a.start_at) > new Date(b.start_at) ? 1 : -1)) ?? [],
- },
- }
-}