diff --git a/apps/blog/src/layouts/base-meta-tags.astro b/apps/blog/src/layouts/base-meta-tags.astro
new file mode 100644
index 00000000..801bd9ec
--- /dev/null
+++ b/apps/blog/src/layouts/base-meta-tags.astro
@@ -0,0 +1,62 @@
+---
+import siteManifest from "../../../website/public/site-manifest.json";
+
+const { street, city, region, postalCode, country } = siteManifest.company;
+const { twitter, linkedin, github, youtube, instagram } = siteManifest.social;
+const socialImage = `https://placehold.co/600x400`;
+
+const schema = {
+ "@context": "https://schema.org",
+ "@type": "Organization",
+ name: siteManifest.name,
+ description: siteManifest.description,
+ logo: socialImage,
+ url: siteManifest.url,
+ address: {
+ "@type": "PostalAddress",
+ streetAddress: street,
+ addressLocality: city,
+ addressRegion: region,
+ postalCode: postalCode,
+ addressCountry: country,
+ },
+ sameAs: [twitter, linkedin, github, youtube, instagram],
+};
+---
+
+
+
+
+
+
Blog | CroCoder
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/blog/src/layouts/base.astro b/apps/blog/src/layouts/base.astro
index acf253e5..db1e7a0f 100644
--- a/apps/blog/src/layouts/base.astro
+++ b/apps/blog/src/layouts/base.astro
@@ -5,6 +5,7 @@ import Header from "./header.astro";
import "../styles/main.css";
import { AstroFont } from "astro-font";
import { ViewTransitions } from "astro:transitions";
+import Meta from "./base-meta-tags.astro";
const pf = theme.fonts.font_family.primary;
const sf = theme.fonts.font_family.secondary;
diff --git a/apps/blog/src/layouts/head.astro b/apps/blog/src/layouts/head.astro
index ced097ce..256334b3 100644
--- a/apps/blog/src/layouts/head.astro
+++ b/apps/blog/src/layouts/head.astro
@@ -1,7 +1,6 @@
---
import type { MarkdownInstance } from "astro";
import { getCollection } from "astro:content";
-import { marked } from 'marked';
import { plainify } from "../ify";
const {
@@ -19,34 +18,42 @@ const {
const formatDate = (timestamp: number): string => {
const d = new Date(timestamp);
const year = d.getFullYear();
- const month = String(d.getMonth() + 1).padStart(2, '0');
- const day = String(d.getDate()).padStart(2, '0');
+ const month = String(d.getMonth() + 1).padStart(2, "0");
+ const day = String(d.getDate()).padStart(2, "0");
return `${year}-${month}-${day}`;
-}
+};
let paritals: MarkdownInstance>[] = [];
-if (slug === '/how-to-write-custom-react-hooks.astro') {
- paritals = await Astro.glob('../content/partials/how-to-write-custom-react-hooks/*.md')
-} else if (slug === '/the-dom-exercises.astro') {
- paritals = await Astro.glob('../content/partials/the-dom-exercises/*.md')
-} else if (slug === '/react-input-component-clear-value-after-input.astro') {
- paritals = await Astro.glob('../content/partials/react-input-component-clear-value-after-input/*.md')
+if (slug === "/how-to-write-custom-react-hooks.astro") {
+ paritals = await Astro.glob(
+ "../content/partials/how-to-write-custom-react-hooks/*.md",
+ );
+} else if (slug === "/the-dom-exercises.astro") {
+ paritals = await Astro.glob("../content/partials/the-dom-exercises/*.md");
+} else if (slug === "/react-input-component-clear-value-after-input.astro") {
+ paritals = await Astro.glob(
+ "../content/partials/react-input-component-clear-value-after-input/*.md",
+ );
}
-const allPartialsPlainText = (await Promise.all(paritals.map(async (page) => {
- const { rawContent } = page;
- const plainText = plainify(rawContent());
- return plainText;
-}))).join("");
+const allPartialsPlainText = (
+ await Promise.all(
+ paritals.map(async (page) => {
+ const { rawContent } = page;
+ const plainText = plainify(rawContent());
+ return plainText;
+ }),
+ )
+).join("");
const sufix = import.meta.env.DEV ? "" : "blog/";
const siteUrl = import.meta.env.SITE_URL + sufix;
-const posts = await getCollection('posts');
-const currentPost = posts.find(post => post.slug === slug);
+const posts = await getCollection("posts");
+const currentPost = posts.find((post) => post.slug === slug);
const articleBodyMarkdown = currentPost ? currentPost.body : "";
const articleBody = plainify(articleBodyMarkdown);
@@ -64,7 +71,7 @@ const schema = {
abstract: abstract,
mainEntityOfPage: {
"@type": "WebPage",
- "@id": siteUrl + slug
+ "@id": siteUrl + slug,
},
author: {
"@type": "Person",
@@ -79,14 +86,13 @@ const schema = {
name: "CroCoder, Inc.",
logo: {
"@type": "ImageObject",
- "url": "/croc-nav.svg"
- }
+ url: "/croc-nav.svg",
+ },
},
dateCreated: dateCreated,
datePublished: dateCreated,
dateModified: dateModified,
};
-
---
-
+{title} | CroCoder
-
+
@@ -109,4 +115,4 @@ const schema = {
-
+
diff --git a/apps/blog/src/pages/index.astro b/apps/blog/src/pages/index.astro
index 2eb60950..65902416 100644
--- a/apps/blog/src/pages/index.astro
+++ b/apps/blog/src/pages/index.astro
@@ -3,6 +3,7 @@ import Base from "../layouts/base.astro";
import { getCollection } from "astro:content";
import { Picture } from "astro:assets";
import formatDate from "../format-date";
+import Meta from "../layouts/base-meta-tags.astro";
const markdownPosts = await getCollection("posts");
@@ -47,32 +48,10 @@ const posts = [
});
posts.sort((a, b) => b.createdAt.getTime() - a.createdAt.getTime());
-
-const schema = {
- "@context": "http://schema.org",
- "@type": "Blog",
- name: "CroCoder Blog",
- url: "https://crocoder.dev",
- description:
- "Tips and ideas to help you learn, build and improve your projects.",
- sameAs: [
- "https://twitter.com/crocoderdev",
- "https://www.linkedin.com/company/crocoderdev",
- "https://github.com/crocoder-dev",
- "https://www.youtube.com/channel/UCWU6cnq4hp4LnunPhP-sAqA",
- "https://www.instagram.com/crocoder.dev/",
- ],
- publisher: { "@type": "Organization", name: "CroCoder, Inc." },
-};
---
-
+
diff --git a/apps/website/package.json b/apps/website/package.json
index f7c6807b..75e060ce 100644
--- a/apps/website/package.json
+++ b/apps/website/package.json
@@ -5,7 +5,8 @@
"dependencies": {
"@astrojs/tailwind": "^5.1.0",
"@crocoder-dev/tailwind": "*",
- "astro": "4.16.14"
+ "astro": "4.16.14",
+ "astro-font": "^0.1.81"
},
"scripts": {
"dev": "astro dev --port 4321",
diff --git a/apps/website/public/site-manifest.json b/apps/website/public/site-manifest.json
index f8971f22..cadee6e4 100644
--- a/apps/website/public/site-manifest.json
+++ b/apps/website/public/site-manifest.json
@@ -2,7 +2,7 @@
"name": "CroCoder | Enterprise-Grade Web Development",
"short_name": "CroCoder",
"description": "Building Software That Builds Your Business",
- "url": "https://crocoder-company-website.vercel.app",
+ "url": "https://crocoder.dev",
"icons": [
{
"src": "/android-chrome-192x192.png",
diff --git a/apps/website/src/layouts/base.astro b/apps/website/src/layouts/base.astro
index e2574ac7..f7f8168a 100644
--- a/apps/website/src/layouts/base.astro
+++ b/apps/website/src/layouts/base.astro
@@ -2,6 +2,8 @@
import theme from "@crocoder-dev/tailwind/theme.json";
import "../styles/main.css";
import Meta from "../layouts/meta-tags.astro";
+import { AstroFont } from "astro-font";
+import { ViewTransitions } from "astro:transitions";
const pf = theme.fonts.font_family.primary;
const sf = theme.fonts.font_family.secondary;
@@ -28,8 +30,33 @@ if (theme.fonts.font_family.secondary) {
content="width=device-width, initial-scale=1, maximum-scale=5"
/>
+
+
-
+
diff --git a/apps/website/src/layouts/meta-tags.astro b/apps/website/src/layouts/meta-tags.astro
index 86a92d44..f1fd1421 100644
--- a/apps/website/src/layouts/meta-tags.astro
+++ b/apps/website/src/layouts/meta-tags.astro
@@ -24,7 +24,11 @@ const schema = {
};
---
-
+
@@ -51,7 +55,7 @@ const schema = {
-
+
diff --git a/apps/website/src/styles/main.css b/apps/website/src/styles/main.css
index e34de6a4..cf4aa43c 100644
--- a/apps/website/src/styles/main.css
+++ b/apps/website/src/styles/main.css
@@ -5,7 +5,6 @@
@tailwind utilities;
* {
- font-family: "Poppins", sans-serif;
scroll-behavior: smooth;
}
diff --git a/bun.lockb b/bun.lockb
index 36540454..dfdff90d 100755
Binary files a/bun.lockb and b/bun.lockb differ