This commit is contained in:
parent
7aa1fd2372
commit
164f4a0f3c
22 changed files with 39 additions and 57 deletions
|
|
@ -11,7 +11,7 @@ deployable targets that receive copied Markdown and assets.
|
||||||
| `blogs/02-vibes` | `sites/vibes/src/content/vibes` | `https://vibes.neeldhara.blog` |
|
| `blogs/02-vibes` | `sites/vibes/src/content/vibes` | `https://vibes.neeldhara.blog` |
|
||||||
| `blogs/03-puzzles` | `sites/puzzles/src/content/puzzles` | `https://puzzles.neeldhara.blog` |
|
| `blogs/03-puzzles` | `sites/puzzles/src/content/puzzles` | `https://puzzles.neeldhara.blog` |
|
||||||
| `blogs/04-reflections` | `sites/reflections/src/content/reflections` | `https://reflections.neeldhara.blog` |
|
| `blogs/04-reflections` | `sites/reflections/src/content/reflections` | `https://reflections.neeldhara.blog` |
|
||||||
| `blogs/05-poetry` | `sites/poetry/src/content/poetry` | `https://poetry.neeldhara.blog` |
|
| `blogs/05-poetry` | `sites/poetry/src/content/poetry` | `https://pieces.neeldhara.blog` |
|
||||||
| `blogs/06-reviews` | `sites/reviews/src/content/reviews` | `https://reviews.neeldhara.blog` |
|
| `blogs/06-reviews` | `sites/reviews/src/content/reviews` | `https://reviews.neeldhara.blog` |
|
||||||
| `blogs/07-art` | `sites/art/src/content/art` | `https://art.neeldhara.blog` |
|
| `blogs/07-art` | `sites/art/src/content/art` | `https://art.neeldhara.blog` |
|
||||||
| `blogs/micro` | `../micro/src/content/blog` | `https://micro.neeldhara.blog` |
|
| `blogs/micro` | `../micro/src/content/blog` | `https://micro.neeldhara.blog` |
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ Each site is a self-contained Dockerized Astro app with its own `src`, `public`,
|
||||||
| Vibes | `sites/vibes` | `vibes.neeldhara.blog` |
|
| Vibes | `sites/vibes` | `vibes.neeldhara.blog` |
|
||||||
| Puzzles | `sites/puzzles` | `puzzles.neeldhara.blog` |
|
| Puzzles | `sites/puzzles` | `puzzles.neeldhara.blog` |
|
||||||
| Reflections | `sites/reflections` | `reflections.neeldhara.blog` |
|
| Reflections | `sites/reflections` | `reflections.neeldhara.blog` |
|
||||||
| Poetry | `sites/poetry` | `poetry.neeldhara.blog` |
|
| Pieces | `sites/poetry` | `pieces.neeldhara.blog` |
|
||||||
| Reviews | `sites/reviews` | `reviews.neeldhara.blog` |
|
| Reviews | `sites/reviews` | `reviews.neeldhara.blog` |
|
||||||
| Art | `sites/art` | `art.neeldhara.blog` |
|
| Art | `sites/art` | `art.neeldhara.blog` |
|
||||||
|
|
||||||
|
|
@ -81,7 +81,7 @@ Suggested applications:
|
||||||
| `blog-vibes` | `sites/vibes` | `vibes.neeldhara.blog` |
|
| `blog-vibes` | `sites/vibes` | `vibes.neeldhara.blog` |
|
||||||
| `blog-puzzles` | `sites/puzzles` | `puzzles.neeldhara.blog` |
|
| `blog-puzzles` | `sites/puzzles` | `puzzles.neeldhara.blog` |
|
||||||
| `blog-reflections` | `sites/reflections` | `reflections.neeldhara.blog` |
|
| `blog-reflections` | `sites/reflections` | `reflections.neeldhara.blog` |
|
||||||
| `blog-poetry` | `sites/poetry` | `poetry.neeldhara.blog` |
|
| `blog-pieces` | `sites/poetry` | `pieces.neeldhara.blog` |
|
||||||
| `blog-reviews` | `sites/reviews` | `reviews.neeldhara.blog` |
|
| `blog-reviews` | `sites/reviews` | `reviews.neeldhara.blog` |
|
||||||
| `blog-art` | `sites/art` | `art.neeldhara.blog` |
|
| `blog-art` | `sites/art` | `art.neeldhara.blog` |
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@ server {
|
||||||
|
|
||||||
server {
|
server {
|
||||||
listen 80;
|
listen 80;
|
||||||
server_name poetry.neeldhara.blog poetry.neeldhara.email;
|
server_name pieces.neeldhara.blog pieces.neeldhara.email;
|
||||||
root /usr/share/nginx/sites/poetry;
|
root /usr/share/nginx/sites/poetry;
|
||||||
include /etc/nginx/snippets/blog-locations.conf;
|
include /etc/nginx/snippets/blog-locations.conf;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,7 @@ const DEFAULT_TARGETS = [
|
||||||
blogTarget("vibes", "Vibes", "02-vibes", 4332),
|
blogTarget("vibes", "Vibes", "02-vibes", 4332),
|
||||||
blogTarget("puzzles", "Puzzles", "03-puzzles", 4333),
|
blogTarget("puzzles", "Puzzles", "03-puzzles", 4333),
|
||||||
blogTarget("reflections", "Reflections", "04-reflections", 4334),
|
blogTarget("reflections", "Reflections", "04-reflections", 4334),
|
||||||
blogTarget("poetry", "Poetry", "05-poetry", 4335),
|
blogTarget("poetry", "Pieces", "05-poetry", 4335),
|
||||||
blogTarget("reviews", "Reviews", "06-reviews", 4336),
|
blogTarget("reviews", "Reviews", "06-reviews", 4336),
|
||||||
blogTarget("art", "Art", "07-art", 4337),
|
blogTarget("art", "Art", "07-art", 4337),
|
||||||
];
|
];
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ const blogs = [
|
||||||
{ key: "vibes", vaultFolder: "02-vibes", title: "Vibes" },
|
{ key: "vibes", vaultFolder: "02-vibes", title: "Vibes" },
|
||||||
{ key: "puzzles", vaultFolder: "03-puzzles", title: "Puzzles" },
|
{ key: "puzzles", vaultFolder: "03-puzzles", title: "Puzzles" },
|
||||||
{ key: "reflections", vaultFolder: "04-reflections", title: "Reflections" },
|
{ key: "reflections", vaultFolder: "04-reflections", title: "Reflections" },
|
||||||
{ key: "poetry", vaultFolder: "05-poetry", title: "Poetry" },
|
{ key: "poetry", vaultFolder: "05-poetry", title: "Pieces" },
|
||||||
{ key: "reviews", vaultFolder: "06-reviews", title: "Reviews" },
|
{ key: "reviews", vaultFolder: "06-reviews", title: "Reviews" },
|
||||||
{ key: "art", vaultFolder: "07-art", title: "Art" },
|
{ key: "art", vaultFolder: "07-art", title: "Art" },
|
||||||
];
|
];
|
||||||
|
|
@ -222,7 +222,7 @@ This folder is the Obsidian source of truth for the public blog family.
|
||||||
| \`blogs/02-vibes\` | \`allblogs/sites/vibes/src/content/vibes\` | \`https://vibes.neeldhara.blog\` |
|
| \`blogs/02-vibes\` | \`allblogs/sites/vibes/src/content/vibes\` | \`https://vibes.neeldhara.blog\` |
|
||||||
| \`blogs/03-puzzles\` | \`allblogs/sites/puzzles/src/content/puzzles\` | \`https://puzzles.neeldhara.blog\` |
|
| \`blogs/03-puzzles\` | \`allblogs/sites/puzzles/src/content/puzzles\` | \`https://puzzles.neeldhara.blog\` |
|
||||||
| \`blogs/04-reflections\` | \`allblogs/sites/reflections/src/content/reflections\` | \`https://reflections.neeldhara.blog\` |
|
| \`blogs/04-reflections\` | \`allblogs/sites/reflections/src/content/reflections\` | \`https://reflections.neeldhara.blog\` |
|
||||||
| \`blogs/05-poetry\` | \`allblogs/sites/poetry/src/content/poetry\` | \`https://poetry.neeldhara.blog\` |
|
| \`blogs/05-poetry\` | \`allblogs/sites/poetry/src/content/poetry\` | \`https://pieces.neeldhara.blog\` |
|
||||||
| \`blogs/06-reviews\` | \`allblogs/sites/reviews/src/content/reviews\` | \`https://reviews.neeldhara.blog\` |
|
| \`blogs/06-reviews\` | \`allblogs/sites/reviews/src/content/reviews\` | \`https://reviews.neeldhara.blog\` |
|
||||||
| \`blogs/07-art\` | \`allblogs/sites/art/src/content/art\` | \`https://art.neeldhara.blog\` |
|
| \`blogs/07-art\` | \`allblogs/sites/art/src/content/art\` | \`https://art.neeldhara.blog\` |
|
||||||
| \`blogs/micro\` | \`micro/src/content/blog\` | \`https://micro.neeldhara.blog\` |
|
| \`blogs/micro\` | \`micro/src/content/blog\` | \`https://micro.neeldhara.blog\` |
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@ server {
|
||||||
|
|
||||||
server {
|
server {
|
||||||
listen 80;
|
listen 80;
|
||||||
server_name poetry.neeldhara.blog poetry.neeldhara.email;
|
server_name pieces.neeldhara.blog pieces.neeldhara.email;
|
||||||
root /usr/share/nginx/html;
|
root /usr/share/nginx/html;
|
||||||
include /etc/nginx/snippets/blog-locations.conf;
|
include /etc/nginx/snippets/blog-locations.conf;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -28,9 +28,9 @@ export const BLOG_SITES = [
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: "poetry",
|
key: "poetry",
|
||||||
title: "Poetry",
|
title: "Pieces",
|
||||||
description: "Failed attempts at organizing thoughts in verse.",
|
description: "Poems, short prose, and small experiments in language.",
|
||||||
url: "https://poetry.neeldhara.blog",
|
url: "https://pieces.neeldhara.blog",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: "reviews",
|
key: "reviews",
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@ server {
|
||||||
|
|
||||||
server {
|
server {
|
||||||
listen 80;
|
listen 80;
|
||||||
server_name poetry.neeldhara.blog poetry.neeldhara.email;
|
server_name pieces.neeldhara.blog pieces.neeldhara.email;
|
||||||
root /usr/share/nginx/html;
|
root /usr/share/nginx/html;
|
||||||
include /etc/nginx/snippets/blog-locations.conf;
|
include /etc/nginx/snippets/blog-locations.conf;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -28,9 +28,9 @@ export const BLOG_SITES = [
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: "poetry",
|
key: "poetry",
|
||||||
title: "Poetry",
|
title: "Pieces",
|
||||||
description: "Failed attempts at organizing thoughts in verse.",
|
description: "Poems, short prose, and small experiments in language.",
|
||||||
url: "https://poetry.neeldhara.blog",
|
url: "https://pieces.neeldhara.blog",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: "reviews",
|
key: "reviews",
|
||||||
|
|
|
||||||
|
|
@ -1,15 +1,6 @@
|
||||||
import { format } from "date-fns";
|
import { format } from "date-fns";
|
||||||
import { typographicText } from "@/lib/typography";
|
import { typographicText } from "@/lib/typography";
|
||||||
|
|
||||||
const getReadingTime = (body: string | undefined) => {
|
|
||||||
const words = (body ?? "")
|
|
||||||
.replace(/```[\s\S]*?```/g, " ")
|
|
||||||
.replace(/<[^>]+>/g, " ")
|
|
||||||
.match(/\b[\w'-]+\b/g);
|
|
||||||
|
|
||||||
return Math.max(1, Math.ceil((words?.length ?? 0) / 220));
|
|
||||||
};
|
|
||||||
|
|
||||||
const BlogPost = ({
|
const BlogPost = ({
|
||||||
post,
|
post,
|
||||||
children,
|
children,
|
||||||
|
|
@ -19,7 +10,6 @@ const BlogPost = ({
|
||||||
}) => {
|
}) => {
|
||||||
const { title, pubDate } = post.data;
|
const { title, pubDate } = post.data;
|
||||||
const displayTitle = typographicText(title);
|
const displayTitle = typographicText(title);
|
||||||
const readingTime = getReadingTime(post.body);
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<section className="container px-6 py-2 md:py-6">
|
<section className="container px-6 py-2 md:py-6">
|
||||||
|
|
@ -29,7 +19,6 @@ const BlogPost = ({
|
||||||
<time dateTime={pubDate.toISOString()}>
|
<time dateTime={pubDate.toISOString()}>
|
||||||
{format(pubDate, "MMMM d, yyyy")}
|
{format(pubDate, "MMMM d, yyyy")}
|
||||||
</time>
|
</time>
|
||||||
<span>{readingTime} min read</span>
|
|
||||||
</div>
|
</div>
|
||||||
<div className="poetry-post-body">{children}</div>
|
<div className="poetry-post-body">{children}</div>
|
||||||
</article>
|
</article>
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ import { ArrowRight } from "lucide-react";
|
||||||
import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar";
|
import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar";
|
||||||
import { Badge } from "@/components/ui/badge";
|
import { Badge } from "@/components/ui/badge";
|
||||||
import { Separator } from "@/components/ui/separator";
|
import { Separator } from "@/components/ui/separator";
|
||||||
import { Calendar, Clock, User } from "lucide-react";
|
import { Calendar } from "lucide-react";
|
||||||
import { typographicText } from "@/lib/typography";
|
import { typographicText } from "@/lib/typography";
|
||||||
import { PlusSigns } from "../icons/plus-signs";
|
import { PlusSigns } from "../icons/plus-signs";
|
||||||
|
|
||||||
|
|
@ -103,9 +103,6 @@ const BlogPosts = ({
|
||||||
},
|
},
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
<div className="text-muted-foreground flex items-center text-sm">
|
|
||||||
<Clock className="mr-1 h-4 w-4" />5 min read
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -151,10 +148,6 @@ const BlogPosts = ({
|
||||||
)}
|
)}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div className="flex items-center gap-1">
|
|
||||||
<Clock className="h-3.5 w-3.5" />
|
|
||||||
<span>5 min read</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</a>
|
</a>
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@ server {
|
||||||
|
|
||||||
server {
|
server {
|
||||||
listen 80;
|
listen 80;
|
||||||
server_name poetry.neeldhara.blog poetry.neeldhara.email;
|
server_name pieces.neeldhara.blog pieces.neeldhara.email;
|
||||||
root /usr/share/nginx/html;
|
root /usr/share/nginx/html;
|
||||||
include /etc/nginx/snippets/blog-locations.conf;
|
include /etc/nginx/snippets/blog-locations.conf;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -28,9 +28,9 @@ export const BLOG_SITES = [
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: "poetry",
|
key: "poetry",
|
||||||
title: "Poetry",
|
title: "Pieces",
|
||||||
description: "Failed attempts at organizing thoughts in verse.",
|
description: "Poems, short prose, and small experiments in language.",
|
||||||
url: "https://poetry.neeldhara.blog",
|
url: "https://pieces.neeldhara.blog",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: "reviews",
|
key: "reviews",
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@ server {
|
||||||
|
|
||||||
server {
|
server {
|
||||||
listen 80;
|
listen 80;
|
||||||
server_name poetry.neeldhara.blog poetry.neeldhara.email;
|
server_name pieces.neeldhara.blog pieces.neeldhara.email;
|
||||||
root /usr/share/nginx/html;
|
root /usr/share/nginx/html;
|
||||||
include /etc/nginx/snippets/blog-locations.conf;
|
include /etc/nginx/snippets/blog-locations.conf;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -28,9 +28,9 @@ export const BLOG_SITES = [
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: "poetry",
|
key: "poetry",
|
||||||
title: "Poetry",
|
title: "Pieces",
|
||||||
description: "Failed attempts at organizing thoughts in verse.",
|
description: "Poems, short prose, and small experiments in language.",
|
||||||
url: "https://poetry.neeldhara.blog",
|
url: "https://pieces.neeldhara.blog",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: "reviews",
|
key: "reviews",
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@ server {
|
||||||
|
|
||||||
server {
|
server {
|
||||||
listen 80;
|
listen 80;
|
||||||
server_name poetry.neeldhara.blog poetry.neeldhara.email;
|
server_name pieces.neeldhara.blog pieces.neeldhara.email;
|
||||||
root /usr/share/nginx/html;
|
root /usr/share/nginx/html;
|
||||||
include /etc/nginx/snippets/blog-locations.conf;
|
include /etc/nginx/snippets/blog-locations.conf;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -28,9 +28,9 @@ export const BLOG_SITES = [
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: "poetry",
|
key: "poetry",
|
||||||
title: "Poetry",
|
title: "Pieces",
|
||||||
description: "Failed attempts at organizing thoughts in verse.",
|
description: "Poems, short prose, and small experiments in language.",
|
||||||
url: "https://poetry.neeldhara.blog",
|
url: "https://pieces.neeldhara.blog",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: "reviews",
|
key: "reviews",
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@ server {
|
||||||
|
|
||||||
server {
|
server {
|
||||||
listen 80;
|
listen 80;
|
||||||
server_name poetry.neeldhara.blog poetry.neeldhara.email;
|
server_name pieces.neeldhara.blog pieces.neeldhara.email;
|
||||||
root /usr/share/nginx/html;
|
root /usr/share/nginx/html;
|
||||||
include /etc/nginx/snippets/blog-locations.conf;
|
include /etc/nginx/snippets/blog-locations.conf;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -28,9 +28,9 @@ export const BLOG_SITES = [
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: "poetry",
|
key: "poetry",
|
||||||
title: "Poetry",
|
title: "Pieces",
|
||||||
description: "Failed attempts at organizing thoughts in verse.",
|
description: "Poems, short prose, and small experiments in language.",
|
||||||
url: "https://poetry.neeldhara.blog",
|
url: "https://pieces.neeldhara.blog",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: "reviews",
|
key: "reviews",
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@ server {
|
||||||
|
|
||||||
server {
|
server {
|
||||||
listen 80;
|
listen 80;
|
||||||
server_name poetry.neeldhara.blog poetry.neeldhara.email;
|
server_name pieces.neeldhara.blog pieces.neeldhara.email;
|
||||||
root /usr/share/nginx/html;
|
root /usr/share/nginx/html;
|
||||||
include /etc/nginx/snippets/blog-locations.conf;
|
include /etc/nginx/snippets/blog-locations.conf;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -28,9 +28,9 @@ export const BLOG_SITES = [
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: "poetry",
|
key: "poetry",
|
||||||
title: "Poetry",
|
title: "Pieces",
|
||||||
description: "Failed attempts at organizing thoughts in verse.",
|
description: "Poems, short prose, and small experiments in language.",
|
||||||
url: "https://poetry.neeldhara.blog",
|
url: "https://pieces.neeldhara.blog",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: "reviews",
|
key: "reviews",
|
||||||
|
|
|
||||||
|
|
@ -28,9 +28,9 @@ export const BLOG_SITES = [
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: "poetry",
|
key: "poetry",
|
||||||
title: "Poetry",
|
title: "Pieces",
|
||||||
description: "Failed attempts at organizing thoughts in verse.",
|
description: "Poems, short prose, and small experiments in language.",
|
||||||
url: "https://poetry.neeldhara.blog",
|
url: "https://pieces.neeldhara.blog",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: "reviews",
|
key: "reviews",
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue