https://github.com/mvdicarlo/postybirb
PostyBirb is an application that helps artists post art and other multimedia to multiple websites more quickly. The overall goal of PostyBirb is to cut down on the time it takes to post submissions to multiple websites.
https://github.com/mvdicarlo/postybirb
electron javascript postybirb react
Last synced: 10 days ago
JSON representation
PostyBirb is an application that helps artists post art and other multimedia to multiple websites more quickly. The overall goal of PostyBirb is to cut down on the time it takes to post submissions to multiple websites.
- Host: GitHub
- URL: https://github.com/mvdicarlo/postybirb
- Owner: mvdicarlo
- License: bsd-3-clause
- Created: 2018-02-01T14:35:01.000Z (over 8 years ago)
- Default Branch: main
- Last Pushed: 2026-02-01T00:31:20.000Z (4 months ago)
- Last Synced: 2026-02-01T12:27:23.424Z (4 months ago)
- Topics: electron, javascript, postybirb, react
- Language: TypeScript
- Homepage: https://www.postybirb.com
- Size: 15 MB
- Stars: 359
- Watchers: 20
- Forks: 46
- Open Issues: 32
-
Metadata Files:
- Readme: README.md
- Contributing: docs/contributing/add-a-website/README.md
- License: LICENSE
Awesome Lists containing this project
README
# Postybirb
## About
PostyBirb is an application that helps artists post art and other multimedia to
multiple websites more quickly. The overall goal of PostyBirb is to cut down on
the time it takes to post submissions to multiple websites.
## Features
PostyBirb supports a wide range of websites, see the full list [here](./apps/client-server/src/app/websites/implementations).
- π Submission templates β Configure default values for each website once, reuse across submissions.
- π·οΈ Tag groups β Save and apply multiple tags at once.
- π Tag converters β Automatically rewrite tags per website.
- π Username shortcuts β Tag people on socials easily.
- β»οΈ Username converters β Automatically rewrite usernames per website.
- β‘ Custom shortcuts β Create your own text snippets for descriptions.
- βοΈ Description formatting β Apply bold, italics, color, etc. PostyBirb converts formatting to match each website's capabilities.
- π Description preview β See how any of the features above with look with website specific formatting applied.
- π Autoscaling β Scales images automatically.
- π File & notification posts β Supports both media uploads and textβonly posts.
- π
Scheduling β Post at exact dates or repeating intervals. Login credentials stay on your device, and PostyBirb must be running for scheduled posts to go out - your credentials remain private and under your control.
- π³ Docker selfβhost / remote β Advanced users can run PostyBirb on their own server with Docker. Scheduled posts work even when your main device is off, and you can access the same instance from multiple devices (e.g., start a draft on desktop, finish and schedule it from a laptop). [Detailed documentation on remote, Docker, and headless setup](./docs/DOCKER.md)
- ποΈ Directory watcher β Automatically creates a submission when a new file appears in a watched directory.
## V4 Initiative
v4 sets out to be more flexible for adding new features and updates not easily
supported on v3. It also aims to be more contributor friendly and ease the
implementation of websites where possible.
## Looking for v3 (PostyBirb+)?
You can find v3 [here](https://github.com/mvdicarlo/postybirb-plus).
## Translation

PostyBirb uses [Weblate](https://hosted.weblate.org/projects/postybirb/postybirb/) as transltion service
Learn more: [Translation guide](./TRANSLATION.md)
## Contributing
Please write clean code.
Follow [conventional commits](https://www.conventionalcommits.org/en/v1.0.0/)
## Project Setup
1. Ensure your NodeJS version is 24.6.0 or higher
2. Clone project using git
3. Ensure corepack is installed: `npm --global install corepack` (This is tool used for managing package manager's versions)
4. `corepack enable` Makes NodeJS use the yarn version specific to the project (from package.json)
5. `yarn install` Installs dependencies
6. If it fails with `β€ YN0009: β better-sqlite3@npm:11.8.0 couldn't be built successfully`:
If you're on windows run
```
winget install -e --id Microsoft.VisualStudio.2022.BuildTools --override "--passive --wait --add Microsoft.VisualStudio.Workload.VCTools;includeRecommended"
```
If you're on linux or other OS please create an issue with log from the unsucessfull build. It will have instructions on which packages are required and we will add them there. But generally it should work out of box if you have C++ compiler installed
7. `yarn run setup` Installs hooks/husky
8. `yarn start` Starts app
## Common commands
- Run tests/format/lint: `yarn test`/`yarn format`/`yarn lint`
- Build & Package app: `yarn dist`
### Native module mismatch after packaging
Running `yarn dist` (or any `dist:*` variant) calls `electron-builder install-app-deps` as part of the packaging step. This rebuilds native modules (e.g. `better-sqlite3`) for **Electron's embedded Node.js**, which has a different `NODE_MODULE_VERSION` than your system Node.
After packaging, if you run `yarn test` and get an error like:
```txt
The module '...better_sqlite3.node' was compiled against a different Node.js version using NODE_MODULE_VERSION 133. This version of Node.js requires NODE_MODULE_VERSION 137.
```
the fix is to reinstall dependencies, which restores the system-Node-compatible binary:
```bash
rm -rf node_modules && yarn install
```
This is expected behaviour β the packaging step intentionally overwrites the binary for Electron. Tests always need the system-Node binary, so a fresh install after packaging is required before running tests again.
### Recommended Plugins (VSCode)
- Nx Console
- Jest Runner
- Prettier
### Add website
To add a new website [see this guide](./contributing/add-a-website)
## Primary Modules (/apps)
### Client-Server
The "Back end" of the application. This houses all website implementations, data models, user settings,
posting logic, etc.
#### Primary Technologies Used
- NestJS
- Drizzle (sqlite3)
### Postybirb
The Electron part of the application that contains initialization logic and
app setup.
#### Primary Technologies Used
- Electron
### PostyBirb-UI
The user interface for the application that talks with Client-Server through
web-socket and https.
#### Primary Technologies Used
- React
- TipTap (Text editor)
- Mantine (UI Framework)
### PostyBirb-Cloud-Server
Used for functions that are impossible to implement without having a dedicated server (e.g. hosting images for Instagram uploads)
---
This project was generated using [Nx](https://nx.dev).