14 | );
15 | };
16 |
17 | export default YouTubeEmbed;
18 |
--------------------------------------------------------------------------------
/content/authors/dr-james-lee.yaml:
--------------------------------------------------------------------------------
1 | name: Dr. James Lee
2 | role: Biometric Systems Engineer
3 | avatar: avatar.jpg
4 |
--------------------------------------------------------------------------------
/content/authors/dr-maria-garcia.yaml:
--------------------------------------------------------------------------------
1 | name: Dr. Maria Garcia
2 | role: Biometric Data Analyst
3 | avatar: avatar.jpg
4 |
--------------------------------------------------------------------------------
/content/authors/dr-sarah-ahmed.yaml:
--------------------------------------------------------------------------------
1 | name: Dr. Sarah Ahmed
2 | role: Biometric Research Scientist
3 | avatar: avatar.jpg
4 |
--------------------------------------------------------------------------------
/content/authors/emilia-blight.yaml:
--------------------------------------------------------------------------------
1 | name: Emilia Blight
2 | role: Privacy Advocate and Attorney
3 | avatar: avatar.jpg
4 |
--------------------------------------------------------------------------------
/content/authors/karim-daouk.yaml:
--------------------------------------------------------------------------------
1 | name: Karim Daouk
2 | role: Cybersecurity Expert
3 | avatar: avatar.jpg
4 |
--------------------------------------------------------------------------------
/content/externalArticles/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Thinkmill/keystatic-demo-blog/c477f803613386321abfd04b7010ef2c8e95150f/content/externalArticles/.gitkeep
--------------------------------------------------------------------------------
/content/externalArticles/an-external-article/index.yaml:
--------------------------------------------------------------------------------
1 | title: An external article
2 | directLink: https://www.keystatic.com
3 | source: Read more.
4 | coverImage: coverImage.jpg
5 | summary: >-
6 | Why did the biometrics scientist install a revolving door at their lab? To get
7 | a handle on all the new faces!
8 | publishedDate: "2010-06-18"
9 |
--------------------------------------------------------------------------------
/content/pages/about/content.mdoc:
--------------------------------------------------------------------------------
1 | # Exploring the Science and Applications of Biometric Authentication
2 |
3 | Welcome to our blog on biometrics! Biometrics is a rapidly evolving field that aims to identify individuals based on their unique physical and behavioral traits. With the increasing need for secure and convenient authentication methods, biometric technology is becoming an essential part of our lives, from unlocking our phones to accessing sensitive information.
4 |
5 | {% divider noIcon=false /%}
6 |
7 | Our blog is dedicated to providing high-quality content on the latest advancements in biometric technology, including the technical aspects of biometric systems, data analysis techniques, and their applications in different domains. Our team of experts includes researchers, engineers, and practitioners with in-depth knowledge and experience in biometric technology.
8 |
9 | We strive to provide evidence-based insights and analysis of the latest trends and developments in biometric technology, while also highlighting the challenges and limitations of these systems. Our goal is to foster constructive dialogue and exchange of ideas around the benefits and risks of biometric authentication, including its ethical and societal implications.
10 |
11 | Whether you are a scientist, engineer, or technology enthusiast, our blog is a reliable source of information on biometric technology. We encourage you to engage with our content, share your thoughts and ideas, and stay up-to-date on the latest advancements in this exciting field.
12 |
13 | Thank you for visiting our blog, and we hope you find our content informative and thought-provoking.
14 |
--------------------------------------------------------------------------------
/content/pages/about/index.yaml:
--------------------------------------------------------------------------------
1 | {}
2 |
--------------------------------------------------------------------------------
/content/pages/home/heading.mdoc:
--------------------------------------------------------------------------------
1 | Unlocking the **Future** Exploring the Power and Potential of Biometrics
2 |
--------------------------------------------------------------------------------
/content/pages/home/index.yaml:
--------------------------------------------------------------------------------
1 | {}
2 |
--------------------------------------------------------------------------------
/content/posts/biometric-authentication-how-it-works-and-why-it-s-more-secure-than-passwords/content.mdoc:
--------------------------------------------------------------------------------
1 | Biometric authentication is a security measure that uses a person's unique physiological or behavioral characteristics to verify their identity. This type of authentication is becoming increasingly popular in various industries because it provides a high level of security and convenience.
2 |
3 | Biometric authentication can use a variety of physical traits, such as fingerprints, facial recognition, iris scans, or voice recognition, to confirm an individual's identity. By leveraging unique features of a person's body or behavior, biometric authentication can greatly reduce the risk of unauthorized access, identity theft, and other forms of cybercrime.
4 |
5 | {% testimonial
6 | quote="Biometric authentication provides a secure and convenient access. No more passwords to remember or steal. Just my face or fingerprint, easy and seamless."
7 | author="Stella Hawkins"
8 | workplaceOrSocial="Senior account manager"
9 | socialLink="https://google.com" /%}
10 |
11 | However, it is important to note that biometric authentication systems are not foolproof and may encounter technical difficulties or be susceptible to spoofing attacks.
12 |
13 | {% divider noIcon=false /%}
14 |
15 | {% banner
16 | heading="Our new course on biometric authentication is coming!"
17 | bodyText="We're super happy to announce that our new course - Biometric Auth Wizzardry - is almost ready!"
18 | externalLinkHref="https://google.com"
19 | externalLinkLabel="Learn more" /%}
20 |
--------------------------------------------------------------------------------
/content/posts/biometric-authentication-how-it-works-and-why-it-s-more-secure-than-passwords/index.yaml:
--------------------------------------------------------------------------------
1 | title: 'Biometric Authentication: How It Works and Why It''s More Secure Than Passwords'
2 | summary: >-
3 | Biometric authentication is a security measure that uses a person's unique
4 | physiological or behavioral characteristics to verify their identity.
5 | publishedDate: '2016-05-19'
6 | coverImage: coverImage.jpg
7 | wordCount: 480
8 | authors:
9 | - dr-maria-garcia
10 | - karim-daouk
11 |
--------------------------------------------------------------------------------
/content/posts/biometrics-in-healthcare-revolutionizing-patient-identification-and-access-control/content.mdoc:
--------------------------------------------------------------------------------
1 | Biometric healthcare involves the use of biometric technology to improve healthcare outcomes, including patient identification, monitoring, and diagnosis. This technology can include various biometric sensors and devices that measure physiological parameters such as heart rate, blood pressure, and respiratory rate, among others.
2 |
3 | Biometric healthcare can be used in various settings, from hospitals to at-home care, and can help healthcare providers make accurate and timely diagnoses, monitor patient progress, and improve treatment outcomes. However, it is important to note that the use of biometric healthcare must comply with regulations and laws that protect patient privacy and data security.
4 |
5 | Additionally, the accuracy and reliability of biometric healthcare technology must be validated through rigorous testing and evaluation to ensure that it is safe and effective for patient use.
6 |
--------------------------------------------------------------------------------
/content/posts/biometrics-in-healthcare-revolutionizing-patient-identification-and-access-control/index.yaml:
--------------------------------------------------------------------------------
1 | title: >-
2 | Biometrics in Healthcare: Revolutionizing Patient Identification and Access
3 | Control
4 | summary: >-
5 | Biometric healthcare involves the use of biometric technology to improve
6 | healthcare outcomes, including patient identification, monitoring, and
7 | diagnosis.
8 | publishedDate: '2010-12-12'
9 | coverImage: coverImage.jpg
10 | wordCount: 640
11 | authors:
12 | - dr-sarah-ahmed
13 | - emilia-blight
14 |
--------------------------------------------------------------------------------
/content/posts/the-benefits-and-drawbacks-of-biometric-security-systems/content.mdoc:
--------------------------------------------------------------------------------
1 | Biometric security systems offer many benefits, including a high level of accuracy and convenience. By using unique biological traits such as fingerprints, facial recognition, or iris scans, these systems can effectively confirm a person's identity, making it difficult for unauthorized individuals to gain access.
2 |
3 | Biometric systems are also convenient for users, eliminating the need to remember complex passwords or carry access cards. However, there are also some drawbacks to biometric security systems. One concern is that they can be expensive to implement and maintain, and may require specialized hardware and software.
4 |
5 | Additionally, there are concerns about privacy and security, as biometric data is highly personal and could be misused if not properly protected. There is also the risk of false positives or false negatives, where the system either incorrectly identifies or fails to identify a person, potentially leading to security breaches or access denials.
6 |
7 | Overall, while biometric security systems offer many benefits, it is important to carefully evaluate their costs and potential risks before implementing them in any given setting.
8 |
--------------------------------------------------------------------------------
/content/posts/the-benefits-and-drawbacks-of-biometric-security-systems/index.yaml:
--------------------------------------------------------------------------------
1 | title: The Benefits and Drawbacks of Biometric Security Systems
2 | summary: >-
3 | Biometric security systems offer many benefits, including a high level of
4 | accuracy and convenience.
5 | publishedDate: '1955-02-12'
6 | coverImage: coverImage.jpg
7 | wordCount: 123
8 | authors:
9 | - dr-james-lee
10 |
--------------------------------------------------------------------------------
/content/posts/the-ethical-concerns-of-biometric-data-collection-and-privacy-protection/content.mdoc:
--------------------------------------------------------------------------------
1 | The collection of biometric data raises several ethical concerns related to privacy, security, and the potential misuse of this sensitive personal information. One concern is that biometric data, once collected, may be difficult to protect and could be subject to hacking or theft.
2 |
3 | Additionally, biometric data may be used for purposes beyond the original intent of the collection, such as for surveillance or targeted advertising. There is also the risk of bias and discrimination, as biometric systems may not work equally well for all individuals, potentially resulting in unequal treatment or exclusion.
4 |
5 | Furthermore, the use of biometric data for surveillance purposes raises concerns about individual rights and government overreach. To address these ethical concerns, it is important to implement robust data protection policies and regulations, including measures such as encryption, data minimization, and transparency.
6 |
7 | Additionally, it is important to prioritize the informed consent and privacy rights of individuals who may be subject to biometric data collection, and to ensure that any such collection is done in a responsible and ethical manner.
8 |
--------------------------------------------------------------------------------
/content/posts/the-ethical-concerns-of-biometric-data-collection-and-privacy-protection/index.yaml:
--------------------------------------------------------------------------------
1 | title: The Ethical Concerns of Biometric Data Collection and Privacy Protection
2 | summary: >-
3 | The collection of biometric data raises several ethical concerns related to
4 | privacy, security, and the potential misuse of this sensitive personal
5 | information. One concern is that biometric data, once collected, may be
6 | difficult to protect and could be subject to hacking or theft.
7 | publishedDate: '1948-12-21'
8 | coverImage: coverImage.jpg
9 | wordCount: 430
10 | authors:
11 | - dr-maria-garcia
12 |
--------------------------------------------------------------------------------
/content/posts/the-evolution-of-biometrics-from-fingerprinting-to-facial-recognition/content.mdoc:
--------------------------------------------------------------------------------
1 | Biometrics has come a long way since the early days of fingerprinting. Today, biometric technology encompasses a wide range of physiological and behavioral characteristics, including facial recognition, iris scanning, voice recognition, and more. Facial recognition technology has been particularly transformative, with applications in everything from security and law enforcement to social media and mobile devices.
2 |
3 | As biometric technology continues to evolve, there are concerns about the accuracy and reliability of these systems, as well as the potential for misuse and abuse. Additionally, there are ethical concerns related to privacy and the collection and storage of sensitive personal data.
4 |
5 | Despite these concerns, biometrics technology has the potential to revolutionize the way we interact with the world around us, offering new and innovative ways to authenticate identity, improve security, and enhance the user experience. As the technology continues to advance, it will be important to balance the benefits of biometrics with the need to protect individual privacy and data security.
6 |
--------------------------------------------------------------------------------
/content/posts/the-evolution-of-biometrics-from-fingerprinting-to-facial-recognition/index.yaml:
--------------------------------------------------------------------------------
1 | title: 'The Evolution of Biometrics: From Fingerprinting to Facial Recognition'
2 | summary: >-
3 | Biometrics has come a long way since the early days of fingerprinting. Today,
4 | biometric technology encompasses a wide range of physiological and behavioral
5 | characteristics, including facial recognition, iris scanning, voice
6 | recognition, and more.
7 | publishedDate: '1923-02-02'
8 | coverImage: coverImage.jpg
9 | wordCount: 120
10 | authors:
11 | - karim-daouk
12 | - emilia-blight
13 | - dr-maria-garcia
14 |
--------------------------------------------------------------------------------
/keystatic.config.tsx:
--------------------------------------------------------------------------------
1 | import {
2 | collection,
3 | config,
4 | fields,
5 | GitHubConfig,
6 | LocalConfig,
7 | singleton,
8 | } from "@keystatic/core";
9 | import { ComponentBlocks } from "./components/ComponentBlocks";
10 |
11 | const storage: LocalConfig["storage"] | GitHubConfig["storage"] =
12 | process.env.NODE_ENV === "development"
13 | ? { kind: "local" }
14 | : {
15 | kind: "github",
16 | repo: {
17 | owner: process.env.NEXT_PUBLIC_VERCEL_GIT_REPO_OWNER!,
18 | name: process.env.NEXT_PUBLIC_VERCEL_GIT_REPO_SLUG!,
19 | },
20 | };
21 |
22 | export default config({
23 | storage,
24 | singletons: {
25 | home: singleton({
26 | label: "Home",
27 | path: "content/pages/home/",
28 | schema: {
29 | heading: fields.document({
30 | formatting: {
31 | inlineMarks: {
32 | bold: true,
33 | },
34 | },
35 | label: "Heading (note: text that is bolded will show up in red)",
36 | }),
37 | },
38 | }),
39 | about: singleton({
40 | label: "About",
41 | path: "content/pages/about/",
42 | schema: {
43 | content: fields.document({
44 | formatting: true,
45 | dividers: true,
46 | links: true,
47 | layouts: [
48 | [1, 1],
49 | [1, 1, 1],
50 | [2, 1],
51 | [1, 2, 1],
52 | ],
53 | label: "Content",
54 | componentBlocks: ComponentBlocks,
55 | }),
56 | },
57 | }),
58 | },
59 | collections: {
60 | authors: collection({
61 | label: "Authors",
62 | path: "content/authors/*",
63 | slugField: "name",
64 | schema: {
65 | name: fields.slug({
66 | name: {
67 | label: "Name",
68 | validation: {
69 | length: {
70 | min: 1,
71 | },
72 | },
73 | },
74 | }),
75 | role: fields.text({ label: "Role" }),
76 | avatar: fields.image({
77 | label: "Author avatar",
78 | directory: "public/images/authors",
79 | }),
80 | },
81 | }),
82 | posts: collection({
83 | label: "Posts",
84 | path: "content/posts/*/",
85 | slugField: "title",
86 | schema: {
87 | title: fields.slug({
88 | name: {
89 | label: "Title",
90 | },
91 | }),
92 | summary: fields.text({
93 | label: "Summary",
94 | validation: { length: { min: 4 } },
95 | }),
96 | publishedDate: fields.date({ label: "Published Date" }),
97 | coverImage: fields.image({
98 | label: "Image",
99 | directory: "public/images/posts",
100 | }),
101 | wordCount: fields.integer({
102 | label: "Word count",
103 | }),
104 | authors: fields.array(
105 | fields.relationship({
106 | label: "Post author",
107 | collection: "authors",
108 | }),
109 | {
110 | label: "Authors",
111 | validation: { length: { min: 1 } },
112 | itemLabel: (props) => props.value || "Please select an author",
113 | }
114 | ),
115 | content: fields.document({
116 | formatting: true,
117 | dividers: true,
118 | links: true,
119 | layouts: [
120 | [1, 1],
121 | [1, 1, 1],
122 | [2, 1],
123 | [1, 2, 1],
124 | ],
125 | label: "Content",
126 | componentBlocks: ComponentBlocks,
127 | }),
128 | },
129 | }),
130 | externalArticles: collection({
131 | label: "External Article",
132 | path: "content/externalArticles/*/",
133 | slugField: "title",
134 | schema: {
135 | title: fields.slug({
136 | name: {
137 | label: "Title",
138 | validation: { length: { min: 4 } },
139 | },
140 | }),
141 | directLink: fields.url({
142 | label: "Article Link",
143 | }),
144 | source: fields.text({
145 | label: "Link Source",
146 | defaultValue: "Read more.",
147 | }),
148 | coverImage: fields.image({
149 | label: "Cover Image",
150 | directory: "public/images/external-articles",
151 | }),
152 | summary: fields.text({
153 | label: "Summary",
154 | validation: { length: { min: 4, max: 200 } },
155 | }),
156 | publishedDate: fields.date({ label: "Published Date" }),
157 | },
158 | }),
159 | },
160 | });
161 |
--------------------------------------------------------------------------------
/next-env.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | ///
4 |
5 | // NOTE: This file should not be edited
6 | // see https://nextjs.org/docs/basic-features/typescript for more information.
7 |
--------------------------------------------------------------------------------
/next.config.js:
--------------------------------------------------------------------------------
1 | /** @type {import('next').NextConfig} */
2 | module.exports = {
3 | reactStrictMode: false,
4 | experimental: { appDir: true },
5 | typescript: { ignoreBuildErrors: true },
6 | };
7 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "@keystatic/demo-blog",
3 | "private": true,
4 | "version": "0.0.0",
5 | "dependencies": {
6 | "@keystatic/core": "^0.0.116",
7 | "@keystatic/next": "^0.0.11",
8 | "@types/react": "^18.2.21",
9 | "@types/react-dom": "^18.2.7",
10 | "date-fns": "^2.30.0",
11 | "next": "^13.4.19",
12 | "react": "^18.2.0",
13 | "react-dom": "^18.2.0",
14 | "typescript": "^5.1.6"
15 | },
16 | "scripts": {
17 | "dev": "next -p 4444",
18 | "build": "next build",
19 | "postinstall": "touch .env"
20 | },
21 | "devDependencies": {
22 | "@tailwindcss/line-clamp": "^0.4.4",
23 | "@tailwindcss/typography": "^0.5.9",
24 | "autoprefixer": "^10.4.15",
25 | "postcss": "^8.4.28",
26 | "tailwindcss": "^3.3.3"
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/pages/[post].tsx:
--------------------------------------------------------------------------------
1 | import NextImage from "next/image";
2 | import type { InferGetStaticPropsType, GetStaticPropsContext } from "next";
3 | import { createReader } from "@keystatic/core/reader";
4 | import config from "../keystatic.config";
5 | import dateFormatter from "../utils/dateFormatter";
6 | import readTime from "../utils/readTime";
7 | import { DocumentRenderer } from "@keystatic/core/renderer";
8 |
9 | import Seo from "../components/Seo";
10 | import Banner from "../components/Banner";
11 | import InlineCTA from "../components/InlineCTA";
12 | import Divider from "../components/Divider";
13 | import Image from "../components/Image";
14 | import YouTubeEmbed from "../components/YouTubeEmbed";
15 | import TweetEmbed from "../components/TweetEmbed";
16 | import LoopingVideo from "../components/LoopingVideo";
17 | import Testimonial from "../components/Testimonial";
18 | import AvatarList from "../components/AvatarList";
19 |
20 | export async function getStaticPaths() {
21 | const reader = createReader("", config);
22 | // Get collection of all posts
23 | const postSlugs = await reader.collections.posts.list();
24 | return {
25 | // Generate paths for each post
26 | paths: postSlugs.map((slug) => ({
27 | params: { post: slug },
28 | })),
29 | fallback: false,
30 | };
31 | }
32 |
33 | export const getStaticProps = async ({ params }: GetStaticPropsContext) => {
34 | const slug = params?.post;
35 |
36 | if (typeof slug !== "string") {
37 | throw new Error("What? WHYYYY");
38 | }
39 |
40 | const reader = createReader("", config);
41 | // Get data for post matching current slug
42 | const post = await reader.collections.posts.readOrThrow(slug, {
43 | resolveLinkedFiles: true,
44 | });
45 |
46 | const authorsData = await Promise.all(
47 | post.authors.map(async (authorSlug) => {
48 | const author = await reader.collections.authors.read(authorSlug || "");
49 | return { ...author, slug: authorSlug };
50 | })
51 | );
52 |
53 | return {
54 | props: {
55 | post: {
56 | ...post,
57 | slug,
58 | },
59 | authors: authorsData,
60 | },
61 | };
62 | };
63 |
64 | export type PostProps = InferGetStaticPropsType["post"];
65 | export type AuthorProps = InferGetStaticPropsType<
66 | typeof getStaticProps
67 | >["authors"];
68 |
69 | type TheLot = {
70 | post: PostProps;
71 | authors: AuthorProps;
72 | };
73 |
74 | export default function Post({ post, authors }: TheLot) {
75 | const names = authors.reduce(
76 | (acc: string[], author) =>
77 | "name" in author ? [...acc, author.name as string] : acc,
78 | []
79 | );
80 | const formattedNames = new Intl.ListFormat("en-AU")
81 | .format(names)
82 | .replace("and", "&");
83 | return (
84 |