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

https://github.com/rhee876527/chiyogami

Yet another pastebin
https://github.com/rhee876527/chiyogami

golang javascript pastebin self-hosted sqlite tailwindcss webcrypto

Last synced: about 1 month ago
JSON representation

Yet another pastebin

Awesome Lists containing this project

README

        

## Chiyogami

#### Chiyogami is a sleek, modern pastebin with encryption, customizable expiry, private pastes, user accounts and an API for developers. ๐Ÿš€

### Screenshots:

![screen-1](https://github.com/user-attachments/assets/5985f94d-4e35-4479-bc57-726e7cfb4577)
![screen-2](https://github.com/user-attachments/assets/0918a641-bf50-4d26-971a-39d7e9876a6d)
![screen-3](https://github.com/user-attachments/assets/95532b56-9e2f-447f-8c9c-cdbe4119fa59)

โœจ **Features**

- โœ” Beautiful & Responsive UI โ€” Built with TailwindCSS & DaisyUI for a clean and modern look.
- ๐Ÿ– Syntax Highlighting โ€” Automatic formatting with HighlightJS.
- ๐Ÿ“ Markdown Rendering โ€” Automatic formatting with Marked.
- โณ Configurable Expiry โ€” Set custom expiration times with API.
- ๐Ÿ”’ Secure & Private โ€” Client-side encryption with WebCryptoAPI for encrypted pastes. No password saved in server.
- ๐Ÿ“ก Powerful API โ€” Create and fetch pastes without leaving the terminal.
- ๐Ÿ” Public Pastes โ€” List & search all public pastes.
- ๐Ÿ”‘ Private Pastes โ€” Only accessible via a unique, unguessable link for enhanced privacy (use encryption on web UI for ultimate privacy).
- ๐Ÿ—„ Local Storage โ€” Uses SQLite for a lightweight, self-hostable database.
- ๐Ÿ‘ค User Accounts โ€” Create & manage your pastes with authentication.
- ๐Ÿ”— Easy Sharing โ€” Share paste links or scan a QR code for instant access.
- ๐Ÿ›ก Built-in Rate Limiting โ€” Protects against spam and abuse with smart request throttling.
- ๐Ÿš€ Easy self-host with docker.

## Installation
Docker. Build it or check [docker-compose](https://github.com/rhee876527/chiyogami/blob/main/docker-compose.yml) file for example with pre-built images.

### Quick run

```
docker run -d \
-v "$(pwd)/pastes:/pastes" \
-p 127.0.0.1:8000:8000 \
--restart unless-stopped \
ghcr.io/rhee876527/chiyogami:latest
```

## Usage
Web UI is simple & straightforward. Or use the `API`.

#### Create paste
```
curl -X POST \
http://localhost:8000/paste \
-H 'Content-Type: application/json' \
-d '{"content":"Test paste"}'
```

**response:** `{"title":"OkxI"}`

Note: Pastes are created by default with `Public` `visibility`. They can be accessed from api or website.
Change this to `Private` or `Unlisted` to make the paste undiscoverable. Pastes are also set to expire within 24hrs if expiry is not specified.

You can set a default expiry for new pastes with `PASTE_DEFAULT_EXPIRATION`. Valid time units are โ€œnsโ€, โ€œusโ€ (or โ€œยตsโ€), โ€œmsโ€, โ€œsโ€, โ€œmโ€, โ€œhโ€ or `"Never"`

#### Create private paste with 48h expiry

```
curl -X POST \
http://localhost:8000/paste \
-H 'Content-Type: application/json' \
-d '{"content":"Test", "visibility":"Private", "expiration":"48h"}'
```
**response:** `{"title":"euVa"}`

#### Fetch created paste
```
curl -X GET http://localhost:8000/paste/bZTR -H "Accept: application/json"
```

**response:**
``
{"ID":22,"CreatedAt":"2025-02-04T19:48:06.747679947Z","UpdatedAt":"2025-02-04T19:48:06.747679947Z","DeletedAt":null,"Title":"bZTR","Content":"test private","Visibility":"Private","expiration":"2025-02-05T19:48:06.747635027Z","IsEncrypted":false,"UserID":0,"IsUserPaste":false}
``

#### Create paste from file
```
f=insert*file*name; \
jq -Rs '{content: .}' < "$f" | \
curl -X POST http://localhost:8000/paste \
-H 'Content-Type: application/json' \
-d @-
```

**response:** `{"title":"awDI"}`

#### Delete owner paste using session (from cookies)

```
curl -X DELETE http://localhost:8000/paste/EIKq \
-b "session=MTczNzA2NDI5NXxEWDhFQVFMX2dBQUJFQUVRQUFBZl80QUFBUVp6ZEhKcGJtY01DUUFIZFhObGNsOXBaQVIxYVc1MEJnSUFEQT09fLnhi2OxsN6coY5ZmmBeA0tPXUcsKiii6ECOoJ7yrqNC"
```

**response:** `{"message":"Paste deleted successfully"}`

##### COPYRIGHT
This software is free to use in accordance with the [license](https://github.com/rhee876527/chiyogami/blob/main/LICENSE).