An open API service indexing awesome lists of open source software.

https://github.com/younho9/notion-url-shortener

Uses Notion database as personal URL shortener
https://github.com/younho9/notion-url-shortener

nextjs notion notion-api shortener url-shortener

Last synced: 2 months ago
JSON representation

Uses Notion database as personal URL shortener

Awesome Lists containing this project

README

        

# Notion URL Shortener

[![CI](https://github.com/younho9/notion-url-shortener/actions/workflows/ci.yml/badge.svg)](https://github.com/younho9/notion-url-shortener/actions/workflows/ci.yml)
[![XO code style](https://img.shields.io/badge/code_style-XO-5ed9c7.svg)](https://github.com/xojs/xo)
[![license: MIT](https://img.shields.io/badge/license-MIT-green.svg)](./LICENSE)

> Uses Notion database as personal URL shortener.

## Features

- Get your personal URL shortener with just a Notion.
- Support `custom`, [`zero width`](https://zws.im/), `base64` type.
- Private mode : Notion API token based authorization.
- Count visits.

## Demo

- [Public](https://notion-url-shortener.vercel.app/)
- [Private](https://yh9.page/)

## Getting Started

### Prep work

1. [Create a Notion account](https://www.notion.so/signup)
2. [Duplicate this Notion database template](https://younho9.notion.site/0382396e66cd4575901bd3ba0959fdb9?v=8dc11ef9545f494bbc4bb2380b926d0e)
3. [Create a Notion API integration & Get Token](https://developers.notion.com/docs#step-1-create-an-integration)
4. [Share a database with your integration](https://developers.notion.com/docs#step-2-share-a-database-with-your-integration)
5. [Deploy on Vercel]()
6. Set `NEXT_PUBLIC_NOTION_DATABASE_URL` to your database URL, `NOTION_API_TOKEN` to your token obtained in step 3.

## Deploy on Vercel

[![Deploy with Vercel](https://vercel.com/button)]()

## Environment Variables

### `NEXT_PUBLIC_NOTION_DATABASE_URL`

**Required** Notion database page URL.

```
https://www.notion.so//a8aec43384f447ed84390e8e42c2e089
# or
https://.notion.site/a8aec43384f447ed84390e8e42c2e089
```

### `NOTION_API_TOKEN`

**Required** Notion API Key.

> [How to get Notion API Key](https://developers.notion.com/docs)

Show advanced options

### `USE_TOKEN_AUTH`

If set to `true`, visitors without tokens cannot submit new URLs.

_Default_ `false`

### `MAXIMUM_ZERO_WIDTH_SHORTEN_LENGTH`

Maximum length of URL path with zero width shorten.

_Default_ `8`

### `MAXIMUM_BASE64_SHORTEN_LENGTH`

Maximum length of URL path with base64 shorten.

_Default_ `7`

### `MAXIMUM_GENERATION_ATTEMPTS`

Maximum number of times to retry when the generated URL path conflicts with the already registered URL path.

_Default_ `5`

## License

[MIT](LICENSE)