Code Monkey home page Code Monkey logo

astro-notion's Introduction

Astro-Notion

Astro-Notion provides components to build static websites using Astro and lets you use Notion as your main CMS tool.


Getting Started

Installation

To install @jcha0713/astro-notion package, run the following command:

npm install @jcha0713/astro-notion @notionhq/client

or you can use yarn instead.

Basic Setup

Notion

  1. Log in to Notion.
  2. go to my-integrations and press New integration.
  3. Create new integration for your website in desired workspace. Only the permission to Read content is needed.
  4. Go to https://heliotrope-lavender-f03.notion.site/Example-Database-a845c6d59ead4034be1b637c6381073d and click duplicate on the upper right corner to use it as a template.
  5. You could also create and use your own database(inline table). Make sure it has title, date, draft, and slug columns.
  6. Click share button on the upper right side and add the integration you created in step 3.
  7. Lastly, you need the database id. To find this, click share button again and click copy link on the bottom. Paste it in any text box and copy the 32 characters after your workspace name or [notion.so](http://notion.so) and the slash and before the question mark(?).

For more detailed work-through, see this tutorial provided by Notion.

Astro

  1. Copy the Internal Integration Token and create a variable in .env and name it NOTION_API_KEY.
  2. Copy the database id and create another variable in .env. Name it NOTION_DATABASE_ID.
  3. Astro-notion uses astro-imagetools package to display images. Here is an example config code you can copy and use it.
// astro.config.mjs

import { defineConfig } from 'astro/config';
import { astroImageTools } from 'astro-imagetools';

// https://astro.build/config
export default defineConfig({
  publicDir: './public',
  outDir: './dist',
  vite: {
    plugins: [
      {
        name: 'import.meta.url-transformer',
        transform: (code, id) => {
          if (id.endsWith('.astro'))
            return code.replace(/import.meta.url/g, `"${id}"`);
        },
      },
    ],
    ssr: {
      external: ['svgo'],
    },
  },
  experimental: { integrations: true },
  integrations: [astroImageTools],
});
// astro-imagetools.config.mjs

// create astro-imagetools.config.mjs
// in your project root folder

import { defineConfig } from 'astro-imagetools/config';

export default defineConfig({
  fallbackFormat: 'png',
});

astro-notion's People

Contributors

jcha0713 avatar oliverlynch avatar

Forkers

chilir

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.