mirror of
https://github.com/d0zingcat/nextjs-notion-starter-kit.git
synced 2026-05-13 15:09:47 +00:00
feat: social features
This commit is contained in:
@@ -1,14 +1,45 @@
|
||||
/**
|
||||
* All app config that should be available client-side.
|
||||
* Site-wide app configuration.
|
||||
*
|
||||
* @see env.ts for server-side version.
|
||||
* @see env.ts for config relating to third-party dependencies.
|
||||
*/
|
||||
|
||||
import { getEnv } from './get-env'
|
||||
|
||||
// this is the most important config value which specifies the site's root Notion page
|
||||
export const rootNotionPageId = '78fc5a4b88d74b0e824e29407e9f1ec1'
|
||||
|
||||
// general site config
|
||||
export const siteName = 'Transitive Bullshit'
|
||||
export const siteFavicon = '/favicon.png'
|
||||
export const siteAuthor = 'Travis Fischer'
|
||||
export const siteDomain = 'transitivebullsh.it'
|
||||
export const siteDescription =
|
||||
'Personal site of Travis Fischer aka Transitive Bullshit'
|
||||
|
||||
// default notion values for site-wide consistency (may be overridden on a per-page basis)
|
||||
export const defaultPageIcon =
|
||||
'https://ssfy.io/https%3A%2F%2Fwww.notion.so%2Fimage%2Fhttps%253A%252F%252Fs3-us-west-2.amazonaws.com%252Fsecure.notion-static.com%252F797768e4-f24a-4e65-bd4a-b622ae9671dc%252Fprofile-2020-280w-circle.png%3Ftable%3Dblock%26id%3D78fc5a4b-88d7-4b0e-824e-29407e9f1ec1%26cache%3Dv2'
|
||||
export const defaultPageCover =
|
||||
'https://ssfy.io/https%3A%2F%2Fwww.notion.so%2Fimage%2Fhttps%253A%252F%252Fs3-us-west-2.amazonaws.com%252Fsecure.notion-static.com%252F9fc5ecae-2b4b-4e73-b0d4-918c829ba69f%252FIMG_0259-opt.jpg%3Ftable%3Dblock%26id%3D78fc5a4b-88d7-4b0e-824e-29407e9f1ec1%26cache%3Dv2'
|
||||
export const defaultPageCoverPosition = 0.1862
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
export const isDev =
|
||||
process.env.NODE_ENV === 'development' || !process.env.NODE_ENV
|
||||
|
||||
export const port = getEnv('PORT', '3000')
|
||||
export const host = isDev ? `http://localhost:${port}` : `https://${siteDomain}`
|
||||
|
||||
export const apiBaseUrl = `${host}/api`
|
||||
|
||||
export const api = {
|
||||
createPreviewImage: `${apiBaseUrl}/create-preview-image`,
|
||||
searchNotion: `${apiBaseUrl}/search-notion`,
|
||||
renderSocialImage: (pageId) => `${apiBaseUrl}/render-social-image/${pageId}`
|
||||
}
|
||||
|
||||
export const fathomId = isDev ? null : getEnv('FATHOM_ID', null)
|
||||
|
||||
export const fathomConfig = fathomId
|
||||
@@ -16,10 +47,3 @@ export const fathomConfig = fathomId
|
||||
excludedDomains: ['localhost', 'localhost:3000']
|
||||
}
|
||||
: undefined
|
||||
|
||||
// TODO: fix duplication between server-side env and client-side config
|
||||
export const apiBaseUrl = `/api`
|
||||
export const api = {
|
||||
createPreviewImage: `${apiBaseUrl}/create-preview-image`,
|
||||
searchNotion: `${apiBaseUrl}/search-notion`
|
||||
}
|
||||
|
||||
31
lib/env.ts
31
lib/env.ts
@@ -1,23 +1,13 @@
|
||||
/**
|
||||
* All app config that needs to be available server-side.
|
||||
* Config for third-party dependencies.
|
||||
*
|
||||
* @see config.ts for client-side version.
|
||||
* - Google Cloud (Firebase) - used very simple database functionality.
|
||||
* - Fathom - simple analytics.
|
||||
*
|
||||
* @see config.ts for primary configuration.
|
||||
*/
|
||||
|
||||
import { getEnv } from './get-env'
|
||||
import { isDev } from './config'
|
||||
|
||||
export * from './config'
|
||||
|
||||
export const port = getEnv('PORT', '3000')
|
||||
export const domain = getEnv('DOMAIN')
|
||||
export const host = isDev ? `http://localhost:${port}` : `https://${domain}`
|
||||
|
||||
export const apiBaseUrl = `${host}/api`
|
||||
export const api = {
|
||||
createPreviewImage: `${apiBaseUrl}/create-preview-image`,
|
||||
searchNotion: `${apiBaseUrl}/search-notion`
|
||||
}
|
||||
|
||||
export const googleProjectId = getEnv('GCLOUD_PROJECT')
|
||||
|
||||
@@ -40,14 +30,3 @@ try {
|
||||
}
|
||||
|
||||
export const firebaseCollectionImages = getEnv('FIREBASE_COLLECTION_IMAGES')
|
||||
|
||||
export const notionRootPageId = getEnv('NOTION_ROOT_PAGE_ID')
|
||||
|
||||
export const siteName = getEnv('SITE_NAME', 'Transitive Bullshit')
|
||||
export const siteDesc = getEnv(
|
||||
'SITE_DESC',
|
||||
'Personal site of Travis Fischer aka Transitive Bullshit.'
|
||||
)
|
||||
export const siteImage = getEnv('SITE_IMAGE', '/social.jpg')
|
||||
export const siteFavicon = getEnv('SITE_FAVICON', '/favicon.png')
|
||||
export const siteAuthor = getEnv('SITE_AUTHOR', 'Travis Fischer')
|
||||
|
||||
20
lib/get-page-description.ts
Normal file
20
lib/get-page-description.ts
Normal file
@@ -0,0 +1,20 @@
|
||||
import * as types from 'lib/types'
|
||||
|
||||
export function getPageDescription(
|
||||
block: types.Block,
|
||||
recordMap: types.RecordMap
|
||||
): string | null {
|
||||
const collection = recordMap.collection[block.parent_id]?.value
|
||||
|
||||
if (collection) {
|
||||
const descriptionKey = Object.keys(collection.schema).find(
|
||||
(key) => collection.schema[key].name === 'Description'
|
||||
)
|
||||
|
||||
if (descriptionKey) {
|
||||
return block.properties[descriptionKey]
|
||||
}
|
||||
}
|
||||
|
||||
return null
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
import crypto from 'crypto'
|
||||
import got from 'got'
|
||||
|
||||
import { api } from './env'
|
||||
import { api } from './config'
|
||||
import * as types from './types'
|
||||
import * as db from './db'
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import * as config from './env'
|
||||
import * as config from './config'
|
||||
import * as types from './types'
|
||||
|
||||
export const getSiteForDomain = async (
|
||||
@@ -7,8 +7,7 @@ export const getSiteForDomain = async (
|
||||
return {
|
||||
domain,
|
||||
name: config.siteName,
|
||||
rootNotionPageId: config.notionRootPageId,
|
||||
description: config.siteDesc,
|
||||
image: config.siteImage
|
||||
rootNotionPageId: config.rootNotionPageId,
|
||||
description: config.siteDescription
|
||||
} as types.Site
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { getSiteForDomain } from './get-site-for-domain'
|
||||
import * as config from './env'
|
||||
import * as config from './config'
|
||||
import * as types from './types'
|
||||
|
||||
export async function getSites(): Promise<types.Site[]> {
|
||||
return [await getSiteForDomain(config.domain)]
|
||||
return [await getSiteForDomain(config.siteDomain)]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user