diff --git a/src/components/Card.astro b/src/components/Card.astro
index e592a8b..39f2321 100644
--- a/src/components/Card.astro
+++ b/src/components/Card.astro
@@ -9,7 +9,7 @@ const t = useTranslations()
interface Props {
index?: number // The index of the card in the list.
title: string
- year?: number
+ year?: number | string
description: string
imgSrc?: ImageMetadata | string // @todo Fix the error message.
imgType?: string
@@ -41,7 +41,7 @@ const { index, title, year, description, imgSrc, imgType, href } = Astro.props
{year && (
- {t('components.cards.publishedIn')}
- -
+
-
@@ -83,7 +83,7 @@ const { index, title, year, description, imgSrc, imgType, href } = Astro.props
{!imgSrc &&year && (
- {t('components.cards.publishedIn')}
- -
+
-
diff --git a/src/components/FormattedYear.astro b/src/components/FormattedYear.astro
index d35b2b9..7750909 100644
--- a/src/components/FormattedYear.astro
+++ b/src/components/FormattedYear.astro
@@ -1,6 +1,6 @@
---
interface Props {
- year: number
+ year: number | string
}
const { year } = Astro.props
diff --git a/src/components/ListPostCover.astro b/src/components/ListPostCover.astro
index 83d24e5..8c63650 100644
--- a/src/components/ListPostCover.astro
+++ b/src/components/ListPostCover.astro
@@ -37,7 +37,7 @@ const {
- {t('components.listPostCover.publishedOn')}
-
diff --git a/src/consts.ts b/src/consts.ts
index 65c4d03..87cc6cb 100644
--- a/src/consts.ts
+++ b/src/consts.ts
@@ -108,6 +108,7 @@ export const NAVIGATION = [
// { href: "/tags", title: "nav.tags" },
{ href: '/apps', title: 'nav.apps' },
{ href: '/talks', title: 'nav.talks' },
+ { href: '/meetups', title: 'nav.meetups' },
{ href: '/about', title: 'nav.about' },
] as const
diff --git a/src/i18n/ui.ts b/src/i18n/ui.ts
index 73ada73..669a039 100644
--- a/src/i18n/ui.ts
+++ b/src/i18n/ui.ts
@@ -30,6 +30,11 @@ export const ui = {
'pages.talks.allApps': 'Public speaking',
'pages.talks.showcase':
"I am a publlic speaker at conferences, mostly technical ones. Here's a list of the most significant talks I gave.",
+ 'pages.meetups.title': 'Meetups',
+ 'pages.meetups.description': 'Meetups',
+ 'pages.meetups.allApps': 'Meetups and social events',
+ 'pages.meetups.showcase':
+ 'Here is a list of some meetups and social events I organised.',
'pages.blog.title': 'All blog posts',
'pages.blog.description': 'All blog posts',
'pages.404.title': '404 - Not Found',
@@ -54,6 +59,7 @@ export const ui = {
'nav.blog': 'Blog',
'nav.apps': 'Apps',
'nav.talks': 'Talks',
+ 'nav.meetups': 'Meetups',
'nav.tags': 'Tags',
'nav.about': 'About',
diff --git a/src/pages/meetups.astro b/src/pages/meetups.astro
new file mode 100644
index 0000000..f2b4990
--- /dev/null
+++ b/src/pages/meetups.astro
@@ -0,0 +1,84 @@
+---
+import Card from '@/components/Card.astro'
+import { useTranslations } from '@/i18n'
+import RootLayout from '@/layouts/RootLayout.astro'
+
+import organiseMeetupImg from '@/assets/covers/how-to-organise-a-meetup.jpg'
+
+const t = useTranslations()
+
+const data = [
+ {
+ title: 'An evening of Tiny Talks',
+ year: 2019,
+ description: `Meetup made of tiny talks related to web technologies, centred around underrepresented groups in the tech industry. Co-organised with Matt Barnett-Jones.`,
+ imgSrc: undefined,
+ },
+ {
+ title: 'Week of wellbeing',
+ year: 'June 2018',
+ description: `Internal event held at Twitter during Hackweek to sponsor wellbeing with sessions on sleep, nutrition, mental health and yoga. Co-organised with Chelsea Hipwood.`,
+ imgSrc: undefined,
+ },
+ {
+ title: 'Mozilla IOT Meetup',
+ year: 2016,
+ description: `A series of meetups to explore the IOT space with an emphasis on inspiring and diverse speakers rather than technical presentations.`,
+ imgSrc: undefined,
+ },
+ {
+ title: 'Firefox OS workshop',
+ year: 2015, // September
+ description: `A workshop to introduce tech people to Firefox OS. Given at JS Conf EU.`,
+ imgSrc: undefined,
+ },
+ {
+ title: 'Firefox OS meetup',
+ year: 2015,
+ description: `Meetups to socialise and discover the web technologies through the lens of Firefox OS.`,
+ imgSrc: undefined,
+ },
+ {
+ title: 'Want to organise your own meetup?',
+ description: `I wrote about what you need to organise a meetup or social event.`,
+ imgSrc: organiseMeetupImg,
+ imgType: 'default',
+ href: '/posts/how-to-organise-a-meetup',
+ },
+]
+---
+
+
+
+
+
+
+ {t('pages.meetups.showcase')}
+
+
+
+ {
+ data.map(
+ ({ title, year, description, imgSrc, imgType, href }, index) => (
+
+ )
+ )
+ }
+
+
+