summaryrefslogtreecommitdiff
path: root/website/src/pages
diff options
context:
space:
mode:
authorJoe Carstairs <65492573+joeacarstairs@users.noreply.github.com>2024-05-05 21:00:40 +0100
committerGitHub <noreply@github.com>2024-05-05 21:00:40 +0100
commit86450b3dd8bec3b76e2b2a03b8cdc8a708c5f3bc (patch)
tree7576d8863193369adc87dd80d91a3d5d3f58ede1 /website/src/pages
parent579e12cfebce9a70ab2adf5842e2673673a707d2 (diff)
Infrastructure as code (#3)
* Moves website to website/ * Adds terraform gitignores * Terraform with AWS provider * Initialises Terraform * Locals and variables for provider * Fetches SSL certificate from ACM * S3 static website bucket * CloudFront distribution * Route53 records * Deployment workflow uses secret S3 bucket suffix * Adds README --------- Co-authored-by: Joe Carstairs <65492573+Sycamost@users.noreply.github.com>
Diffstat (limited to 'website/src/pages')
-rw-r--r--website/src/pages/blog/[...slug].astro20
-rw-r--r--website/src/pages/blog/index.astro17
-rw-r--r--website/src/pages/error.astro14
-rw-r--r--website/src/pages/index.astro11
-rw-r--r--website/src/pages/rss.xml.js17
5 files changed, 79 insertions, 0 deletions
diff --git a/website/src/pages/blog/[...slug].astro b/website/src/pages/blog/[...slug].astro
new file mode 100644
index 0000000..800c534
--- /dev/null
+++ b/website/src/pages/blog/[...slug].astro
@@ -0,0 +1,20 @@
+---
+import { type CollectionEntry, getCollection } from 'astro:content';
+import BlogPost from '../../layouts/BlogPost.astro';
+
+export async function getStaticPaths() {
+ const posts = await getCollection('blog');
+ return posts.map((post) => ({
+ params: { slug: post.slug },
+ props: post,
+ }));
+}
+type Props = CollectionEntry<'blog'>;
+
+const post = Astro.props;
+const { Content } = await post.render();
+---
+
+<BlogPost {...post.data}>
+ <Content />
+</BlogPost> \ No newline at end of file
diff --git a/website/src/pages/blog/index.astro b/website/src/pages/blog/index.astro
new file mode 100644
index 0000000..0c617bd
--- /dev/null
+++ b/website/src/pages/blog/index.astro
@@ -0,0 +1,17 @@
+---
+import BaseHead from '../../components/BaseHead.astro';
+import { SITE_TITLE, SITE_DESCRIPTION } from '../../consts';
+import BlogFeed from '../../components/BlogFeed.astro';
+---
+
+<!doctype html>
+<html lang="en">
+ <head>
+ <BaseHead title={SITE_TITLE} description={SITE_DESCRIPTION} />
+ </head>
+ <body>
+ <main>
+ <BlogFeed headingLevel={1} />
+ </main>
+ </body>
+</html>
diff --git a/website/src/pages/error.astro b/website/src/pages/error.astro
new file mode 100644
index 0000000..fc84122
--- /dev/null
+++ b/website/src/pages/error.astro
@@ -0,0 +1,14 @@
+---
+import Page from '../layouts/Page.astro';
+---
+
+<Page title="Got lost?" description="Error page for Joe's personal website">
+ <main>
+ <h1>Got lost?</h1>
+
+ <p>
+ If you’re on this page, something’s probably gone wrong. Try going to
+ my <a href="/">homepage</a> instead.
+ </p>
+ </main>
+</Page>
diff --git a/website/src/pages/index.astro b/website/src/pages/index.astro
new file mode 100644
index 0000000..74cf934
--- /dev/null
+++ b/website/src/pages/index.astro
@@ -0,0 +1,11 @@
+---
+import BlogFeed from '../components/BlogFeed.astro';
+import Me from '../components/Me.astro';
+import { SITE_TITLE, SITE_DESCRIPTION } from '../consts';
+import Page from '../layouts/Page.astro';
+---
+
+<Page title={SITE_TITLE} description={SITE_DESCRIPTION}>
+ <Me />
+ <BlogFeed hideAuthor />
+</Page> \ No newline at end of file
diff --git a/website/src/pages/rss.xml.js b/website/src/pages/rss.xml.js
new file mode 100644
index 0000000..79da596
--- /dev/null
+++ b/website/src/pages/rss.xml.js
@@ -0,0 +1,17 @@
+import rss from '@astrojs/rss';
+import { getCollection } from 'astro:content';
+import { SITE_TITLE, SITE_DESCRIPTION } from '../consts';
+
+export async function GET(context) {
+ const posts = await getCollection('blog');
+ return rss({
+ title: SITE_TITLE,
+ description: SITE_DESCRIPTION,
+ site: context.site,
+ items: posts.map((post) => ({
+ ...post.data,
+ link: `/blog/${post.slug}/`,
+ pubDate: new Date(post.data.pubDate.year, post.data.pubDate.month - 1, post.data.pubDate.day),
+ })),
+ });
+}