Merge branch 'main' into fix/nullable-content-publishers
This commit is contained in:
commit
4d54f025bb
27 changed files with 0 additions and 1890 deletions
|
|
@ -1,31 +0,0 @@
|
|||
title: TryPost
|
||||
description: Documentation for TryPost - Open source social media scheduling
|
||||
remote_theme: just-the-docs/just-the-docs
|
||||
color_scheme: light
|
||||
|
||||
# Logo
|
||||
logo: "/assets/images/logo.png"
|
||||
|
||||
# Search
|
||||
search_enabled: true
|
||||
search:
|
||||
heading_level: 2
|
||||
previews: 3
|
||||
|
||||
# Aux links (top right)
|
||||
aux_links:
|
||||
"GitHub":
|
||||
- "https://github.com/trypost-it/trypost"
|
||||
|
||||
aux_links_new_tab: true
|
||||
|
||||
# Footer
|
||||
footer_content: "Copyright © 2025 TryPost. Distributed under the <a href=\"https://github.com/trypost-it/trypost/blob/main/LICENSE.md\">FSL License</a>."
|
||||
|
||||
# Back to top link
|
||||
back_to_top: true
|
||||
back_to_top_text: "Back to top"
|
||||
|
||||
# Exclude files
|
||||
exclude:
|
||||
- CNAME
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 11 KiB |
|
|
@ -1,143 +0,0 @@
|
|||
---
|
||||
title: Contributing
|
||||
nav_order: 6
|
||||
---
|
||||
|
||||
# Contributing to TryPost
|
||||
|
||||
Thank you for your interest in contributing to TryPost! This guide will help you get started.
|
||||
|
||||
## Ways to Contribute
|
||||
|
||||
- **Report bugs** - Found a bug? Open an issue
|
||||
- **Suggest features** - Have an idea? Start a discussion
|
||||
- **Improve docs** - Fix typos, add examples, clarify instructions
|
||||
- **Write code** - Fix bugs or implement new features
|
||||
|
||||
## Development Setup
|
||||
|
||||
### Prerequisites
|
||||
|
||||
- PHP 8.2+
|
||||
- Node.js 18+
|
||||
- PostgreSQL or MySQL
|
||||
- Redis
|
||||
- Composer
|
||||
|
||||
### Setup
|
||||
|
||||
1. Fork and clone the repository:
|
||||
|
||||
```bash
|
||||
git clone https://github.com/YOUR_USERNAME/trypost.git
|
||||
cd trypost
|
||||
```
|
||||
|
||||
2. Install dependencies:
|
||||
|
||||
```bash
|
||||
composer install
|
||||
npm install
|
||||
```
|
||||
|
||||
3. Configure environment:
|
||||
|
||||
```bash
|
||||
cp .env.example .env
|
||||
php artisan key:generate
|
||||
```
|
||||
|
||||
4. Set up database and run migrations:
|
||||
|
||||
```bash
|
||||
php artisan migrate
|
||||
```
|
||||
|
||||
5. Start development servers:
|
||||
|
||||
```bash
|
||||
# Terminal 1 - Laravel
|
||||
php artisan serve
|
||||
|
||||
# Terminal 2 - Vite
|
||||
npm run dev
|
||||
|
||||
# Terminal 3 - Queue worker
|
||||
php artisan horizon:watch
|
||||
```
|
||||
|
||||
## Code Style
|
||||
|
||||
### PHP
|
||||
|
||||
We use [Laravel Pint](https://laravel.com/docs/pint) for PHP code formatting:
|
||||
|
||||
```bash
|
||||
# Check code style
|
||||
vendor/bin/pint --test
|
||||
|
||||
# Fix code style
|
||||
vendor/bin/pint
|
||||
```
|
||||
|
||||
### JavaScript/TypeScript
|
||||
|
||||
We use ESLint and Prettier:
|
||||
|
||||
```bash
|
||||
# Lint
|
||||
npm run lint
|
||||
|
||||
# Format
|
||||
npm run format
|
||||
```
|
||||
|
||||
## Testing
|
||||
|
||||
Run the test suite before submitting changes:
|
||||
|
||||
```bash
|
||||
php artisan test
|
||||
```
|
||||
|
||||
## Pull Request Process
|
||||
|
||||
1. **Create a branch** from `develop`:
|
||||
|
||||
```bash
|
||||
git checkout -b feature/your-feature-name
|
||||
```
|
||||
|
||||
2. **Make your changes** and commit with clear messages
|
||||
|
||||
3. **Run tests** and ensure they pass
|
||||
|
||||
4. **Run code formatters**:
|
||||
|
||||
```bash
|
||||
vendor/bin/pint
|
||||
npm run lint
|
||||
npm run format
|
||||
```
|
||||
|
||||
5. **Push** and create a pull request to the `develop` branch
|
||||
|
||||
6. **Describe your changes** in the PR description
|
||||
|
||||
## Commit Messages
|
||||
|
||||
Write clear commit messages:
|
||||
|
||||
- `fix: resolve login redirect issue`
|
||||
- `feat: add Pinterest scheduling support`
|
||||
- `docs: update installation guide`
|
||||
- `refactor: simplify post creation logic`
|
||||
|
||||
## Questions?
|
||||
|
||||
- [GitHub Discussions](https://github.com/trypost-it/trypost/discussions) - For questions and ideas
|
||||
- [GitHub Issues](https://github.com/trypost-it/trypost/issues) - For bugs and feature requests
|
||||
|
||||
## License
|
||||
|
||||
By contributing, you agree that your contributions will be licensed under the same license as the project (FSL).
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
---
|
||||
title: Features
|
||||
has_children: true
|
||||
nav_order: 4
|
||||
---
|
||||
|
||||
# Features
|
||||
|
||||
Learn about TryPost's powerful features.
|
||||
|
|
@ -1,60 +0,0 @@
|
|||
---
|
||||
title: Scheduling
|
||||
parent: Features
|
||||
nav_order: 1
|
||||
---
|
||||
|
||||
# Scheduling Posts
|
||||
|
||||
TryPost makes it easy to schedule your social media content in advance.
|
||||
|
||||
## Creating a Scheduled Post
|
||||
|
||||
1. Click **Create Post** or click on a date in the calendar
|
||||
2. Write your content
|
||||
3. Add media (images or videos) if desired
|
||||
4. Select the accounts you want to post to
|
||||
5. Choose the date and time
|
||||
6. Click **Schedule**
|
||||
|
||||
## The Calendar View
|
||||
|
||||
The calendar shows all your scheduled posts:
|
||||
|
||||
- **Drag and drop** posts to reschedule them
|
||||
- **Click** on a post to view, edit, or delete it
|
||||
- **Filter** by account or status
|
||||
- **Switch views** between month, week, or day
|
||||
|
||||
## Post Status
|
||||
|
||||
Posts can have the following statuses:
|
||||
|
||||
| Status | Description |
|
||||
|--------|-------------|
|
||||
| **Draft** | Saved but not scheduled |
|
||||
| **Scheduled** | Waiting to be published |
|
||||
| **Publishing** | Currently being sent to platforms |
|
||||
| **Published** | Successfully posted |
|
||||
| **Failed** | Failed to publish (check error details) |
|
||||
|
||||
## Multi-Platform Posting
|
||||
|
||||
You can post to multiple platforms at once:
|
||||
|
||||
1. Select multiple accounts when creating a post
|
||||
2. TryPost will adapt the content for each platform
|
||||
3. Each platform's post is tracked separately
|
||||
|
||||
## Best Times to Post
|
||||
|
||||
Consider your audience's timezone and activity patterns when scheduling. General guidelines:
|
||||
|
||||
- **LinkedIn**: Tuesday-Thursday, 9am-12pm
|
||||
- **X/Twitter**: Weekdays, 8am-10am and 6pm-9pm
|
||||
- **Instagram**: Monday-Friday, 11am-1pm and 7pm-9pm
|
||||
- **Facebook**: Wednesday-Friday, 1pm-4pm
|
||||
|
||||
## Queue (Coming Soon)
|
||||
|
||||
Future versions will support a post queue where you can add content and let TryPost automatically schedule it at optimal times.
|
||||
|
|
@ -1,64 +0,0 @@
|
|||
---
|
||||
title: Team Management
|
||||
parent: Features
|
||||
nav_order: 3
|
||||
---
|
||||
|
||||
# Team Management
|
||||
|
||||
Invite team members to collaborate on your social media content.
|
||||
|
||||
## Inviting Members
|
||||
|
||||
1. Go to **Settings** > **Members**
|
||||
2. Enter the email address of the person you want to invite
|
||||
3. Select their role
|
||||
4. Click **Send Invite**
|
||||
|
||||
The invited person will receive an email with a link to join your workspace.
|
||||
|
||||
## Roles
|
||||
|
||||
| Role | Permissions |
|
||||
|------|-------------|
|
||||
| **Owner** | Full access, can delete workspace, manage billing |
|
||||
| **Admin** | Can manage members, accounts, and all posts |
|
||||
| **Member** | Can create and manage their own posts |
|
||||
|
||||
## Managing Members
|
||||
|
||||
### View Members
|
||||
|
||||
Go to **Settings** > **Members** to see:
|
||||
|
||||
- Current members and their roles
|
||||
- Pending invites
|
||||
|
||||
### Remove a Member
|
||||
|
||||
1. Go to **Settings** > **Members**
|
||||
2. Find the member you want to remove
|
||||
3. Click the remove button
|
||||
4. Confirm the action
|
||||
|
||||
### Cancel an Invite
|
||||
|
||||
If someone hasn't accepted their invite yet:
|
||||
|
||||
1. Go to **Settings** > **Members**
|
||||
2. Find the pending invite
|
||||
3. Click the cancel button
|
||||
|
||||
## Accepting an Invite
|
||||
|
||||
When you receive an invite:
|
||||
|
||||
1. Click the link in the email
|
||||
2. Log in or create an account (the email will be pre-filled)
|
||||
3. You'll be automatically added to the workspace
|
||||
|
||||
## Best Practices
|
||||
|
||||
- Use **Admin** role for managers who need full control
|
||||
- Use **Member** role for content creators
|
||||
- Regularly review and remove access for people who no longer need it
|
||||
|
|
@ -1,71 +0,0 @@
|
|||
---
|
||||
title: Workspaces
|
||||
parent: Features
|
||||
nav_order: 2
|
||||
---
|
||||
|
||||
# Workspaces
|
||||
|
||||
Workspaces help you organize your social media accounts, especially if you manage multiple brands or clients.
|
||||
|
||||
## What is a Workspace?
|
||||
|
||||
A workspace is a container that holds:
|
||||
|
||||
- Social media accounts
|
||||
- Scheduled posts
|
||||
- Team members
|
||||
- Settings
|
||||
|
||||
Each workspace is completely separate from others.
|
||||
|
||||
## Creating a Workspace
|
||||
|
||||
1. Click on your current workspace name in the sidebar
|
||||
2. Click **Create Workspace**
|
||||
3. Enter a name for the workspace
|
||||
4. Click **Create**
|
||||
|
||||
## Switching Workspaces
|
||||
|
||||
Click on the workspace name in the sidebar to see all your workspaces and switch between them.
|
||||
|
||||
## Use Cases
|
||||
|
||||
### Agencies
|
||||
|
||||
Create a workspace for each client:
|
||||
|
||||
- Client A Workspace (their social accounts)
|
||||
- Client B Workspace (their social accounts)
|
||||
- Your Agency Workspace (your own accounts)
|
||||
|
||||
### Multiple Brands
|
||||
|
||||
If you manage multiple brands:
|
||||
|
||||
- Brand A Workspace
|
||||
- Brand B Workspace
|
||||
|
||||
### Personal vs Business
|
||||
|
||||
Separate your personal and business presence:
|
||||
|
||||
- Personal Workspace
|
||||
- Business Workspace
|
||||
|
||||
## Workspace Settings
|
||||
|
||||
Each workspace has its own settings:
|
||||
|
||||
- **Name** - The workspace display name
|
||||
- **Members** - Who has access (see [Team Management](team.md))
|
||||
- **Connected Accounts** - Social media accounts in this workspace
|
||||
|
||||
## Deleting a Workspace
|
||||
|
||||
1. Go to **Settings** > **Workspace**
|
||||
2. Scroll to the danger zone
|
||||
3. Click **Delete Workspace**
|
||||
|
||||
> **Warning:** This will delete all posts and disconnect all accounts in the workspace. This action cannot be undone.
|
||||
|
|
@ -1,154 +0,0 @@
|
|||
---
|
||||
title: Configuration
|
||||
parent: Getting Started
|
||||
nav_order: 2
|
||||
---
|
||||
|
||||
# Configuration
|
||||
|
||||
TryPost is configured through environment variables in the `.env` file.
|
||||
|
||||
## Basic Configuration
|
||||
|
||||
```env
|
||||
APP_NAME="TryPost"
|
||||
APP_ENV=local
|
||||
APP_DEBUG=true
|
||||
APP_URL=http://localhost
|
||||
```
|
||||
|
||||
| Variable | Description |
|
||||
|----------|-------------|
|
||||
| `APP_NAME` | Your application name |
|
||||
| `APP_ENV` | Environment: `local`, `staging`, `production` |
|
||||
| `APP_DEBUG` | Enable debug mode (set to `false` in production) |
|
||||
| `APP_URL` | Your application URL |
|
||||
|
||||
## Self-Hosted Mode
|
||||
|
||||
```env
|
||||
SELF_HOSTED=true
|
||||
```
|
||||
|
||||
When `SELF_HOSTED=true`, TryPost runs without any payment or subscription requirements. This is the default for self-hosted installations.
|
||||
|
||||
**What changes in self-hosted mode:**
|
||||
|
||||
- No Stripe configuration required
|
||||
- No subscription or payment checks
|
||||
- Unlimited workspaces per user
|
||||
- All features available without restrictions
|
||||
|
||||
{: .note }
|
||||
If you're running TryPost as a SaaS with payments, set `SELF_HOSTED=false` and configure Stripe.
|
||||
|
||||
## Database
|
||||
|
||||
TryPost supports PostgreSQL and MySQL.
|
||||
|
||||
### PostgreSQL (recommended)
|
||||
|
||||
```env
|
||||
DB_CONNECTION=pgsql
|
||||
DB_HOST=127.0.0.1
|
||||
DB_PORT=5432
|
||||
DB_DATABASE=trypost
|
||||
DB_USERNAME=postgres
|
||||
DB_PASSWORD=your_password
|
||||
```
|
||||
|
||||
### MySQL
|
||||
|
||||
```env
|
||||
DB_CONNECTION=mysql
|
||||
DB_HOST=127.0.0.1
|
||||
DB_PORT=3306
|
||||
DB_DATABASE=trypost
|
||||
DB_USERNAME=root
|
||||
DB_PASSWORD=your_password
|
||||
```
|
||||
|
||||
## Redis
|
||||
|
||||
Redis is required for queues and caching.
|
||||
|
||||
```env
|
||||
REDIS_HOST=127.0.0.1
|
||||
REDIS_PASSWORD=null
|
||||
REDIS_PORT=6379
|
||||
```
|
||||
|
||||
## File Storage
|
||||
|
||||
TryPost supports local storage and S3-compatible cloud storage.
|
||||
|
||||
### Local Storage (default)
|
||||
|
||||
```env
|
||||
FILESYSTEM_DISK=local
|
||||
```
|
||||
|
||||
### AWS S3
|
||||
|
||||
```env
|
||||
FILESYSTEM_DISK=s3
|
||||
AWS_ACCESS_KEY_ID=your_key
|
||||
AWS_SECRET_ACCESS_KEY=your_secret
|
||||
AWS_DEFAULT_REGION=us-east-1
|
||||
AWS_BUCKET=your_bucket
|
||||
AWS_URL=https://your-bucket.s3.amazonaws.com
|
||||
```
|
||||
|
||||
### Cloudflare R2
|
||||
|
||||
```env
|
||||
FILESYSTEM_DISK=r2
|
||||
R2_ACCESS_KEY_ID=your_key
|
||||
R2_SECRET_ACCESS_KEY=your_secret
|
||||
R2_ENDPOINT=https://your-account.r2.cloudflarestorage.com
|
||||
R2_REGION=auto
|
||||
R2_BUCKET=your_bucket
|
||||
R2_URL=https://your-custom-domain.com
|
||||
```
|
||||
|
||||
### Other S3-Compatible Storage
|
||||
|
||||
Any S3-compatible storage (MinIO, DigitalOcean Spaces, etc.) can be used with the `s3` disk configuration.
|
||||
|
||||
## Mail
|
||||
|
||||
Configure your mail driver for sending emails (invites, notifications).
|
||||
|
||||
```env
|
||||
MAIL_MAILER=smtp
|
||||
MAIL_HOST=smtp.example.com
|
||||
MAIL_PORT=587
|
||||
MAIL_USERNAME=your_username
|
||||
MAIL_PASSWORD=your_password
|
||||
MAIL_ENCRYPTION=tls
|
||||
MAIL_FROM_ADDRESS="hello@example.com"
|
||||
MAIL_FROM_NAME="${APP_NAME}"
|
||||
```
|
||||
|
||||
## Social Platforms
|
||||
|
||||
Each social platform requires API credentials. See the [Platforms documentation](../platforms/README.md) for setup instructions.
|
||||
|
||||
## Horizon (Queue Dashboard)
|
||||
|
||||
[Laravel Horizon](https://laravel.com/docs/horizon) provides a dashboard to monitor your queues. Access it at `/horizon`.
|
||||
|
||||
```env
|
||||
HORIZON_ALLOWED_EMAILS=admin@example.com,dev@example.com
|
||||
```
|
||||
|
||||
| Variable | Description |
|
||||
|----------|-------------|
|
||||
| `HORIZON_ALLOWED_EMAILS` | Comma-separated list of emails allowed to access Horizon in production |
|
||||
|
||||
If not set, Horizon dashboard will be inaccessible in non-local environments.
|
||||
|
||||
## Next Steps
|
||||
|
||||
- [Connect your social accounts](../platforms/README.md)
|
||||
- [Create your first post](first-steps.md)
|
||||
|
|
@ -1,56 +0,0 @@
|
|||
---
|
||||
title: First Steps
|
||||
parent: Getting Started
|
||||
nav_order: 3
|
||||
---
|
||||
|
||||
# First Steps
|
||||
|
||||
After installing TryPost, follow these steps to start scheduling your social media posts.
|
||||
|
||||
## 1. Create Your Account
|
||||
|
||||
Visit your TryPost installation and click **Register** to create your account.
|
||||
|
||||
## 2. Complete Onboarding
|
||||
|
||||
After registration, you'll go through a quick onboarding process:
|
||||
|
||||
1. **Select your role** - Choose what best describes you (creator, agency, business, etc.)
|
||||
2. **Connect accounts** - Connect at least one social media account
|
||||
|
||||
## 3. Connect Social Accounts
|
||||
|
||||
Click on a platform to connect it:
|
||||
|
||||
- Each platform requires API credentials configured in your `.env` file
|
||||
- See the [Platforms documentation](../platforms/README.md) for setup instructions
|
||||
- You can connect multiple accounts per platform
|
||||
|
||||
## 4. Create Your First Post
|
||||
|
||||
1. Click **Create Post** or navigate to the calendar
|
||||
2. Write your content
|
||||
3. Select which accounts to post to
|
||||
4. Choose to post now or schedule for later
|
||||
5. Click **Schedule** or **Post Now**
|
||||
|
||||
## 5. Manage Your Calendar
|
||||
|
||||
The calendar view shows all your scheduled posts:
|
||||
|
||||
- Drag and drop posts to reschedule
|
||||
- Click a post to edit or delete it
|
||||
- Filter by account or status
|
||||
|
||||
## Tips
|
||||
|
||||
- **Preview your posts** - See how they'll look on each platform before publishing
|
||||
- **Use workspaces** - Separate different brands or clients
|
||||
- **Invite team members** - Collaborate with your team
|
||||
|
||||
## Next Steps
|
||||
|
||||
- [Learn about scheduling](../features/scheduling.md)
|
||||
- [Set up workspaces](../features/workspaces.md)
|
||||
- [Invite team members](../features/team.md)
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
---
|
||||
title: Getting Started
|
||||
has_children: true
|
||||
nav_order: 2
|
||||
---
|
||||
|
||||
# Getting Started
|
||||
|
||||
Get up and running with TryPost in minutes.
|
||||
|
|
@ -1,85 +0,0 @@
|
|||
---
|
||||
title: Installation
|
||||
parent: Getting Started
|
||||
nav_order: 1
|
||||
---
|
||||
|
||||
# Installation
|
||||
|
||||
This guide will walk you through installing TryPost on your server.
|
||||
|
||||
## Requirements
|
||||
|
||||
- PHP 8.2 or higher
|
||||
- Node.js 18 or higher
|
||||
- PostgreSQL 14+ or MySQL 8+
|
||||
- Redis
|
||||
- Composer
|
||||
|
||||
## Quick Install
|
||||
|
||||
### 1. Clone the repository
|
||||
|
||||
```bash
|
||||
git clone https://github.com/trypost-it/trypost.git
|
||||
cd trypost
|
||||
```
|
||||
|
||||
### 2. Install PHP dependencies
|
||||
|
||||
```bash
|
||||
composer install
|
||||
```
|
||||
|
||||
### 3. Install Node.js dependencies
|
||||
|
||||
```bash
|
||||
npm install
|
||||
```
|
||||
|
||||
### 4. Configure environment
|
||||
|
||||
```bash
|
||||
cp .env.example .env
|
||||
php artisan key:generate
|
||||
```
|
||||
|
||||
Edit the `.env` file with your database credentials and other settings. See [Configuration](configuration.md) for details.
|
||||
|
||||
### 5. Run database migrations
|
||||
|
||||
```bash
|
||||
php artisan migrate
|
||||
```
|
||||
|
||||
### 6. Build frontend assets
|
||||
|
||||
```bash
|
||||
npm run build
|
||||
```
|
||||
|
||||
### 7. Start the application
|
||||
|
||||
For development:
|
||||
|
||||
```bash
|
||||
# Terminal 1 - Laravel server
|
||||
php artisan serve
|
||||
|
||||
# Terminal 2 - Queue worker
|
||||
php artisan horizon
|
||||
|
||||
# Terminal 3 - Vite dev server (optional, for hot reload)
|
||||
npm run dev
|
||||
```
|
||||
|
||||
For production, configure your web server (Nginx, Apache) to serve the application.
|
||||
|
||||
## Verify Installation
|
||||
|
||||
Visit `http://localhost:8000` (or your configured domain) and you should see the TryPost welcome page.
|
||||
|
||||
## Next Steps
|
||||
|
||||
- [Configure your environment](configuration.md)
|
||||
- [Connect your first social account](../platforms/README.md)
|
||||
|
|
@ -1,52 +0,0 @@
|
|||
---
|
||||
title: Home
|
||||
layout: home
|
||||
nav_order: 1
|
||||
---
|
||||
|
||||
# TryPost Documentation
|
||||
|
||||
Welcome to the TryPost documentation. Here you'll find everything you need to install, configure, and use TryPost.
|
||||
|
||||
## Getting Started
|
||||
|
||||
- [Installation](getting-started/installation.md) - Install TryPost on your server
|
||||
- [Configuration](getting-started/configuration.md) - Configure environment variables
|
||||
- [First Steps](getting-started/first-steps.md) - Your first post with TryPost
|
||||
|
||||
## Platforms
|
||||
|
||||
Learn how to connect your social media accounts:
|
||||
|
||||
- [Overview](platforms/README.md) - Supported platforms and requirements
|
||||
- [LinkedIn](platforms/linkedin.md)
|
||||
- [X (Twitter)](platforms/x-twitter.md)
|
||||
- [Facebook](platforms/facebook.md)
|
||||
- [Instagram](platforms/instagram.md)
|
||||
- [TikTok](platforms/tiktok.md)
|
||||
- [YouTube](platforms/youtube.md)
|
||||
- [Threads](platforms/threads.md)
|
||||
- [Pinterest](platforms/pinterest.md)
|
||||
- [Bluesky](platforms/bluesky.md)
|
||||
- [Mastodon](platforms/mastodon.md)
|
||||
|
||||
## Features
|
||||
|
||||
- [Scheduling Posts](features/scheduling.md)
|
||||
- [Workspaces](features/workspaces.md)
|
||||
- [Team Management](features/team.md)
|
||||
|
||||
## Self-Hosting
|
||||
|
||||
- [Requirements](self-hosting/requirements.md)
|
||||
- [Production Setup](self-hosting/production.md)
|
||||
- [Docker](self-hosting/docker.md)
|
||||
|
||||
## Contributing
|
||||
|
||||
- [Contributing Guide](./contributing.md)
|
||||
|
||||
## Support
|
||||
|
||||
- [GitHub Issues](https://github.com/trypost-it/trypost/issues) - Report bugs
|
||||
- [GitHub Discussions](https://github.com/trypost-it/trypost/discussions) - Ask questions
|
||||
|
|
@ -1,60 +0,0 @@
|
|||
---
|
||||
title: Platforms
|
||||
has_children: true
|
||||
nav_order: 3
|
||||
---
|
||||
|
||||
# Supported Platforms
|
||||
|
||||
TryPost supports the following social media platforms:
|
||||
|
||||
| Platform | Status | API Requirements |
|
||||
|----------|--------|------------------|
|
||||
| [LinkedIn](linkedin.md) | ✅ Full support | OAuth App |
|
||||
| [X (Twitter)](x-twitter.md) | ✅ Full support | OAuth App |
|
||||
| [Facebook](facebook.md) | ✅ Full support | Meta App |
|
||||
| [Instagram](instagram.md) | ✅ Full support | Meta App (Business account required) |
|
||||
| [TikTok](tiktok.md) | ✅ Full support | TikTok Developer App |
|
||||
| [YouTube](youtube.md) | ✅ Full support | Google Cloud Project |
|
||||
| [Threads](threads.md) | ✅ Full support | Meta App |
|
||||
| [Pinterest](pinterest.md) | ✅ Full support | Pinterest App |
|
||||
| [Bluesky](bluesky.md) | ✅ Full support | App Password (no OAuth) |
|
||||
| [Mastodon](mastodon.md) | ✅ Full support | Instance OAuth |
|
||||
|
||||
## General Setup
|
||||
|
||||
Each platform requires:
|
||||
|
||||
1. **Create a developer app** on the platform's developer portal
|
||||
2. **Configure OAuth credentials** in your `.env` file
|
||||
3. **Set the callback URL** to `{APP_URL}/accounts/{platform}/callback`
|
||||
|
||||
## Callback URLs
|
||||
|
||||
When configuring your apps, use these callback URLs (replace `https://your-domain.com` with your actual URL):
|
||||
|
||||
| Platform | Callback URL |
|
||||
|----------|-------------|
|
||||
| LinkedIn | `https://your-domain.com/accounts/linkedin/callback` |
|
||||
| LinkedIn Page | `https://your-domain.com/accounts/linkedin-page/callback` |
|
||||
| X (Twitter) | `https://your-domain.com/accounts/x/callback` |
|
||||
| TikTok | `https://your-domain.com/accounts/tiktok/callback` |
|
||||
| Facebook | `https://your-domain.com/accounts/facebook/callback` |
|
||||
| Instagram | `https://your-domain.com/accounts/instagram/callback` |
|
||||
| Threads | `https://your-domain.com/accounts/threads/callback` |
|
||||
| YouTube | `https://your-domain.com/accounts/youtube/callback` |
|
||||
| Pinterest | `https://your-domain.com/accounts/pinterest/callback` |
|
||||
| Mastodon | `https://your-domain.com/accounts/mastodon/callback` |
|
||||
|
||||
> **Note:** Bluesky doesn't use OAuth. You'll enter your credentials directly in TryPost.
|
||||
|
||||
## Disabling Platforms
|
||||
|
||||
You can disable specific platforms by setting environment variables:
|
||||
|
||||
```env
|
||||
TRYPOST_LINKEDIN_ENABLED=false
|
||||
TRYPOST_TIKTOK_ENABLED=false
|
||||
```
|
||||
|
||||
This hides the platform from the connection options.
|
||||
|
|
@ -1,54 +0,0 @@
|
|||
---
|
||||
title: Bluesky
|
||||
parent: Platforms
|
||||
nav_order: 9
|
||||
---
|
||||
|
||||
# Bluesky
|
||||
|
||||
Connect your Bluesky account to TryPost.
|
||||
|
||||
## No Developer App Required
|
||||
|
||||
Bluesky uses App Passwords instead of OAuth, so you don't need to create a developer app.
|
||||
|
||||
## Create an App Password
|
||||
|
||||
1. Log in to [Bluesky](https://bsky.app/)
|
||||
2. Go to **Settings** > **App Passwords**
|
||||
3. Click **Add App Password**
|
||||
4. Give it a name (e.g., "TryPost")
|
||||
5. Copy the generated password
|
||||
|
||||
> **Important:** Save this password securely. You won't be able to see it again.
|
||||
|
||||
## Connect Your Account
|
||||
|
||||
1. In TryPost, go to **Accounts**
|
||||
2. Click **Connect Bluesky**
|
||||
3. Enter your Bluesky handle (e.g., `yourname.bsky.social`)
|
||||
4. Enter the App Password you created
|
||||
5. Click **Connect**
|
||||
6. You're ready to post!
|
||||
|
||||
## Environment Variables
|
||||
|
||||
No environment variables are required for Bluesky. Each user connects with their own app password.
|
||||
|
||||
## Supported Features
|
||||
|
||||
- ✅ Text posts
|
||||
- ✅ Image posts (up to 4 images)
|
||||
- ✅ Link cards
|
||||
- ✅ Mentions
|
||||
- ✅ Hashtags
|
||||
|
||||
## Custom PDS
|
||||
|
||||
If you're using a custom Personal Data Server (PDS), you can enter the full handle including your domain.
|
||||
|
||||
## Security
|
||||
|
||||
- App Passwords have limited permissions compared to your main password
|
||||
- You can revoke an App Password at any time from Bluesky settings
|
||||
- TryPost stores the app password securely encrypted
|
||||
|
|
@ -1,68 +0,0 @@
|
|||
---
|
||||
title: Facebook
|
||||
parent: Platforms
|
||||
nav_order: 3
|
||||
---
|
||||
|
||||
# Facebook
|
||||
|
||||
Connect your Facebook pages to TryPost.
|
||||
|
||||
## Create a Meta App
|
||||
|
||||
1. Go to [Meta for Developers](https://developers.facebook.com/)
|
||||
2. Click **My Apps** > **Create App**
|
||||
3. Select **Business** as the app type
|
||||
4. Fill in the app details and create the app
|
||||
|
||||
## Configure Facebook Login
|
||||
|
||||
1. In your app dashboard, add the **Facebook Login** product
|
||||
2. Go to **Facebook Login** > **Settings**
|
||||
3. Add your redirect URL: `https://your-domain.com/accounts/facebook/callback`
|
||||
4. Set **Client OAuth Login** to Yes
|
||||
5. Set **Web OAuth Login** to Yes
|
||||
|
||||
## Configure Permissions
|
||||
|
||||
Go to **App Review** > **Permissions and Features** and request:
|
||||
|
||||
- `pages_show_list` - To list your pages
|
||||
- `pages_read_engagement` - To read page data
|
||||
- `pages_manage_posts` - To create posts
|
||||
|
||||
> **Note:** Some permissions require app review for production use.
|
||||
|
||||
## Get Your Credentials
|
||||
|
||||
1. Go to **Settings** > **Basic**
|
||||
2. Note your **App ID** and **App Secret**
|
||||
|
||||
## Environment Variables
|
||||
|
||||
Add to your `.env` file:
|
||||
|
||||
```env
|
||||
FACEBOOK_CLIENT_ID=your_app_id
|
||||
FACEBOOK_CLIENT_SECRET=your_app_secret
|
||||
FACEBOOK_CLIENT_REDIRECT="${APP_URL}/accounts/facebook/callback"
|
||||
```
|
||||
|
||||
## Connect Your Page
|
||||
|
||||
1. In TryPost, go to **Accounts**
|
||||
2. Click **Connect Facebook**
|
||||
3. Log in and authorize the app
|
||||
4. Select the page(s) you want to connect
|
||||
5. You're ready to post!
|
||||
|
||||
## Supported Features
|
||||
|
||||
- ✅ Text posts
|
||||
- ✅ Image posts
|
||||
- ✅ Multi-image posts
|
||||
- ✅ Video posts
|
||||
- ✅ Link posts
|
||||
- ✅ Page posting
|
||||
|
||||
> **Note:** Personal profile posting is not supported due to Meta API limitations. Only pages can be connected.
|
||||
|
|
@ -1,66 +0,0 @@
|
|||
---
|
||||
title: Instagram
|
||||
parent: Platforms
|
||||
nav_order: 4
|
||||
---
|
||||
|
||||
# Instagram
|
||||
|
||||
Connect your Instagram Business or Creator account to TryPost.
|
||||
|
||||
## Requirements
|
||||
|
||||
- Instagram Business or Creator account (not personal)
|
||||
- Facebook Page connected to your Instagram account
|
||||
- Meta Developer App
|
||||
|
||||
## Create a Meta App
|
||||
|
||||
If you haven't already, follow the [Facebook setup guide](facebook.md) to create a Meta app.
|
||||
|
||||
## Configure Instagram API
|
||||
|
||||
1. In your Meta app dashboard, add the **Instagram Graph API** product
|
||||
2. Go to **Instagram** > **Basic Display** or **Instagram Graph API**
|
||||
|
||||
## Configure Permissions
|
||||
|
||||
Request these permissions in **App Review**:
|
||||
|
||||
- `instagram_basic` - Basic account info
|
||||
- `instagram_content_publish` - To publish content
|
||||
- `pages_show_list` - To access linked Facebook page
|
||||
|
||||
## Environment Variables
|
||||
|
||||
Add to your `.env` file:
|
||||
|
||||
```env
|
||||
INSTAGRAM_CLIENT_ID=your_app_id
|
||||
INSTAGRAM_CLIENT_SECRET=your_app_secret
|
||||
INSTAGRAM_CLIENT_REDIRECT="${APP_URL}/accounts/instagram/callback"
|
||||
```
|
||||
|
||||
## Connect Your Account
|
||||
|
||||
1. Make sure your Instagram account is:
|
||||
- Set to Business or Creator account
|
||||
- Connected to a Facebook Page
|
||||
2. In TryPost, go to **Accounts**
|
||||
3. Click **Connect Instagram**
|
||||
4. Log in with Facebook and authorize
|
||||
5. Select your Instagram account
|
||||
6. You're ready to post!
|
||||
|
||||
## Supported Features
|
||||
|
||||
- ✅ Image posts
|
||||
- ✅ Carousel posts (multiple images)
|
||||
- ✅ Video posts (Reels)
|
||||
- ✅ Captions with hashtags
|
||||
|
||||
## Limitations
|
||||
|
||||
- Personal accounts cannot be connected (Instagram API limitation)
|
||||
- Stories are not supported via API
|
||||
- Direct messages are not supported
|
||||
|
|
@ -1,64 +0,0 @@
|
|||
---
|
||||
title: LinkedIn
|
||||
parent: Platforms
|
||||
nav_order: 1
|
||||
---
|
||||
|
||||
# LinkedIn
|
||||
|
||||
Connect your LinkedIn profile or company pages to TryPost.
|
||||
|
||||
## Create a LinkedIn App
|
||||
|
||||
1. Go to [LinkedIn Developers](https://developer.linkedin.com/)
|
||||
2. Click **Create App**
|
||||
3. Fill in the app details:
|
||||
- App name: `TryPost` (or your preferred name)
|
||||
- LinkedIn Page: Select or create a company page
|
||||
- App logo: Upload an image
|
||||
4. Accept the terms and click **Create app**
|
||||
|
||||
## Configure OAuth
|
||||
|
||||
1. Go to the **Auth** tab
|
||||
2. Add your redirect URLs:
|
||||
- `https://your-domain.com/accounts/linkedin/callback` (for profiles)
|
||||
- `https://your-domain.com/accounts/linkedin-page/callback` (for pages)
|
||||
3. Note your **Client ID** and **Client Secret**
|
||||
|
||||
## Request API Access
|
||||
|
||||
1. Go to the **Products** tab
|
||||
2. Request access to:
|
||||
- **Share on LinkedIn** - Required for posting
|
||||
- **Sign In with LinkedIn using OpenID Connect** - Required for authentication
|
||||
- **Advertising API** (optional) - For company page posting
|
||||
|
||||
> **Note:** Some products require approval and may take a few days.
|
||||
|
||||
## Environment Variables
|
||||
|
||||
Add to your `.env` file:
|
||||
|
||||
```env
|
||||
LINKEDIN_CLIENT_ID=your_client_id
|
||||
LINKEDIN_CLIENT_SECRET=your_client_secret
|
||||
LINKEDIN_CLIENT_REDIRECT="${APP_URL}/accounts/linkedin/callback"
|
||||
LINKEDIN_PAGE_CLIENT_REDIRECT="${APP_URL}/accounts/linkedin-page/callback"
|
||||
```
|
||||
|
||||
## Connect Your Account
|
||||
|
||||
1. In TryPost, go to **Accounts**
|
||||
2. Click **Connect LinkedIn** (for profile) or **Connect LinkedIn Page** (for company pages)
|
||||
3. Authorize the app on LinkedIn
|
||||
4. You're ready to post!
|
||||
|
||||
## Supported Features
|
||||
|
||||
- ✅ Text posts
|
||||
- ✅ Image posts
|
||||
- ✅ Multi-image posts
|
||||
- ✅ Video posts
|
||||
- ✅ Profile posting
|
||||
- ✅ Company page posting
|
||||
|
|
@ -1,51 +0,0 @@
|
|||
---
|
||||
title: Mastodon
|
||||
parent: Platforms
|
||||
nav_order: 10
|
||||
---
|
||||
|
||||
# Mastodon
|
||||
|
||||
Connect your Mastodon account to TryPost.
|
||||
|
||||
## How It Works
|
||||
|
||||
Mastodon is a decentralized network with many instances (servers). TryPost automatically registers an OAuth app with your instance when you connect.
|
||||
|
||||
## No Global Configuration Required
|
||||
|
||||
Unlike other platforms, you don't need to configure environment variables for Mastodon. Each user connects to their own instance.
|
||||
|
||||
## Connect Your Account
|
||||
|
||||
1. In TryPost, go to **Accounts**
|
||||
2. Click **Connect Mastodon**
|
||||
3. Enter your Mastodon instance URL (e.g., `mastodon.social`, `fosstodon.org`)
|
||||
4. Click **Authorize**
|
||||
5. Log in to your Mastodon instance and authorize TryPost
|
||||
6. You're ready to post!
|
||||
|
||||
## Supported Features
|
||||
|
||||
- ✅ Text posts (toots)
|
||||
- ✅ Image posts (up to 4 images)
|
||||
- ✅ Video posts
|
||||
- ✅ Content warnings (CW)
|
||||
- ✅ Visibility settings (public, unlisted, private, direct)
|
||||
- ✅ Hashtags
|
||||
- ✅ Mentions
|
||||
|
||||
## Popular Instances
|
||||
|
||||
Some popular Mastodon instances:
|
||||
|
||||
- `mastodon.social` - The original instance
|
||||
- `fosstodon.org` - For open source enthusiasts
|
||||
- `hachyderm.io` - For tech professionals
|
||||
- `mas.to` - General purpose
|
||||
|
||||
You can connect accounts from any Mastodon-compatible instance (including Hometown, Pleroma, etc.).
|
||||
|
||||
## Character Limits
|
||||
|
||||
Character limits vary by instance. Most use the default 500 characters, but some instances allow more.
|
||||
|
|
@ -1,67 +0,0 @@
|
|||
---
|
||||
title: Pinterest
|
||||
parent: Platforms
|
||||
nav_order: 8
|
||||
---
|
||||
|
||||
# Pinterest
|
||||
|
||||
Connect your Pinterest account to TryPost.
|
||||
|
||||
## Create a Pinterest App
|
||||
|
||||
1. Go to [Pinterest Developers](https://developers.pinterest.com/)
|
||||
2. Click **My Apps** > **Create app**
|
||||
3. Fill in the app details:
|
||||
- App name
|
||||
- Description
|
||||
- Website URL
|
||||
4. Submit for approval
|
||||
|
||||
## Configure OAuth
|
||||
|
||||
1. In your app settings, add the redirect URL:
|
||||
- `https://your-domain.com/accounts/pinterest/callback`
|
||||
2. Note your **App ID** and **App Secret**
|
||||
|
||||
## Request Access
|
||||
|
||||
Pinterest requires app approval for production use. You can use sandbox mode for testing:
|
||||
|
||||
```env
|
||||
PINTEREST_SANDBOX=true
|
||||
```
|
||||
|
||||
Set to `false` once your app is approved.
|
||||
|
||||
## Environment Variables
|
||||
|
||||
Add to your `.env` file:
|
||||
|
||||
```env
|
||||
PINTEREST_SANDBOX=true
|
||||
PINTEREST_CLIENT_ID=your_app_id
|
||||
PINTEREST_CLIENT_SECRET=your_app_secret
|
||||
PINTEREST_CLIENT_REDIRECT="${APP_URL}/accounts/pinterest/callback"
|
||||
```
|
||||
|
||||
## Connect Your Account
|
||||
|
||||
1. In TryPost, go to **Accounts**
|
||||
2. Click **Connect Pinterest**
|
||||
3. Log in and authorize the app
|
||||
4. You're ready to post!
|
||||
|
||||
## Supported Features
|
||||
|
||||
- ✅ Pin creation
|
||||
- ✅ Image pins
|
||||
- ✅ Video pins
|
||||
- ✅ Board selection
|
||||
- ✅ Titles and descriptions
|
||||
- ✅ Link URLs
|
||||
|
||||
## Limitations
|
||||
|
||||
- Idea Pins (multi-page) are not supported via API
|
||||
- Story Pins are not supported
|
||||
|
|
@ -1,60 +0,0 @@
|
|||
---
|
||||
title: Threads
|
||||
parent: Platforms
|
||||
nav_order: 7
|
||||
---
|
||||
|
||||
# Threads
|
||||
|
||||
Connect your Threads account to TryPost.
|
||||
|
||||
## Requirements
|
||||
|
||||
- Threads account linked to Instagram
|
||||
- Meta Developer App
|
||||
- Instagram Business or Creator account
|
||||
|
||||
## Create a Meta App
|
||||
|
||||
If you haven't already, follow the [Facebook setup guide](facebook.md) to create a Meta app.
|
||||
|
||||
## Configure Threads API
|
||||
|
||||
1. In your Meta app dashboard, add the **Threads API** product
|
||||
2. Configure the required permissions
|
||||
|
||||
## Configure Permissions
|
||||
|
||||
Request these permissions in **App Review**:
|
||||
|
||||
- `threads_basic` - Basic account info
|
||||
- `threads_content_publish` - To publish content
|
||||
|
||||
## Environment Variables
|
||||
|
||||
Add to your `.env` file:
|
||||
|
||||
```env
|
||||
THREADS_CLIENT_ID=your_app_id
|
||||
THREADS_CLIENT_SECRET=your_app_secret
|
||||
THREADS_CLIENT_REDIRECT="${APP_URL}/accounts/threads/callback"
|
||||
```
|
||||
|
||||
## Connect Your Account
|
||||
|
||||
1. In TryPost, go to **Accounts**
|
||||
2. Click **Connect Threads**
|
||||
3. Log in and authorize the app
|
||||
4. You're ready to post!
|
||||
|
||||
## Supported Features
|
||||
|
||||
- ✅ Text posts
|
||||
- ✅ Image posts
|
||||
- ✅ Video posts
|
||||
- ✅ Link posts
|
||||
|
||||
## Limitations
|
||||
|
||||
- Account must be linked to Instagram
|
||||
- Some features may require app review approval
|
||||
|
|
@ -1,67 +0,0 @@
|
|||
---
|
||||
title: TikTok
|
||||
parent: Platforms
|
||||
nav_order: 5
|
||||
---
|
||||
|
||||
# TikTok
|
||||
|
||||
Connect your TikTok account to TryPost.
|
||||
|
||||
## Create a TikTok Developer App
|
||||
|
||||
1. Go to [TikTok Developers](https://developers.tiktok.com/)
|
||||
2. Log in and go to **Manage Apps**
|
||||
3. Click **Create App**
|
||||
4. Select **Content Posting API** as your use case
|
||||
5. Fill in the app details
|
||||
|
||||
## Configure Your App
|
||||
|
||||
1. In your app settings, add the redirect URL:
|
||||
- `https://your-domain.com/accounts/tiktok/callback`
|
||||
2. Request the required scopes:
|
||||
- `user.info.basic`
|
||||
- `video.upload`
|
||||
- `video.publish`
|
||||
3. Submit your app for review
|
||||
|
||||
> **Note:** TikTok requires app approval before you can use the API in production.
|
||||
|
||||
## Get Your Credentials
|
||||
|
||||
1. Go to your app's **Manage** page
|
||||
2. Note your **Client Key** and **Client Secret**
|
||||
|
||||
## Environment Variables
|
||||
|
||||
Add to your `.env` file:
|
||||
|
||||
```env
|
||||
TIKTOK_CLIENT_ID=your_client_key
|
||||
TIKTOK_CLIENT_SECRET=your_client_secret
|
||||
TIKTOK_CLIENT_REDIRECT="${APP_URL}/accounts/tiktok/callback"
|
||||
```
|
||||
|
||||
## Connect Your Account
|
||||
|
||||
1. In TryPost, go to **Accounts**
|
||||
2. Click **Connect TikTok**
|
||||
3. Log in and authorize the app
|
||||
4. You're ready to post!
|
||||
|
||||
## Supported Features
|
||||
|
||||
- ✅ Video posts
|
||||
- ✅ Captions with hashtags
|
||||
|
||||
## Requirements
|
||||
|
||||
- Videos must be between 1 second and 10 minutes
|
||||
- Supported formats: MP4, WebM
|
||||
- Maximum file size varies by account type
|
||||
|
||||
## Limitations
|
||||
|
||||
- Images cannot be posted directly (TikTok is video-only)
|
||||
- Some features require a verified business account
|
||||
|
|
@ -1,63 +0,0 @@
|
|||
---
|
||||
title: X (Twitter)
|
||||
parent: Platforms
|
||||
nav_order: 2
|
||||
---
|
||||
|
||||
# X (Twitter)
|
||||
|
||||
Connect your X (formerly Twitter) account to TryPost.
|
||||
|
||||
## Create an X Developer App
|
||||
|
||||
1. Go to the [X Developer Portal](https://developer.twitter.com/)
|
||||
2. Sign up for a developer account if you haven't already
|
||||
3. Create a new project and app
|
||||
4. Select the appropriate access level (Free tier works for basic posting)
|
||||
|
||||
## Configure OAuth 2.0
|
||||
|
||||
1. Go to your app's **Settings**
|
||||
2. Under **User authentication settings**, click **Set up**
|
||||
3. Configure:
|
||||
- **App permissions**: Read and Write
|
||||
- **Type of App**: Web App
|
||||
- **Callback URL**: `https://your-domain.com/accounts/x/callback`
|
||||
- **Website URL**: Your domain
|
||||
4. Save your **Client ID** and **Client Secret**
|
||||
|
||||
## Environment Variables
|
||||
|
||||
Add to your `.env` file:
|
||||
|
||||
```env
|
||||
X_CLIENT_ID=your_client_id
|
||||
X_CLIENT_SECRET=your_client_secret
|
||||
X_CLIENT_REDIRECT="${APP_URL}/accounts/x/callback"
|
||||
```
|
||||
|
||||
## Connect Your Account
|
||||
|
||||
1. In TryPost, go to **Accounts**
|
||||
2. Click **Connect X**
|
||||
3. Authorize the app on X
|
||||
4. You're ready to post!
|
||||
|
||||
## Supported Features
|
||||
|
||||
- ✅ Text posts (tweets)
|
||||
- ✅ Image posts (up to 4 images)
|
||||
- ✅ Video posts
|
||||
- ✅ Threads (multiple connected tweets)
|
||||
|
||||
## Rate Limits
|
||||
|
||||
X has rate limits depending on your access level:
|
||||
|
||||
| Tier | Posts per month |
|
||||
|------|-----------------|
|
||||
| Free | 1,500 |
|
||||
| Basic | 3,000 |
|
||||
| Pro | 300,000 |
|
||||
|
||||
Consider upgrading your X developer tier if you need higher limits.
|
||||
|
|
@ -1,68 +0,0 @@
|
|||
---
|
||||
title: YouTube
|
||||
parent: Platforms
|
||||
nav_order: 6
|
||||
---
|
||||
|
||||
# YouTube
|
||||
|
||||
Connect your YouTube channel to TryPost.
|
||||
|
||||
## Create a Google Cloud Project
|
||||
|
||||
1. Go to [Google Cloud Console](https://console.cloud.google.com/)
|
||||
2. Create a new project or select an existing one
|
||||
3. Enable the **YouTube Data API v3**
|
||||
|
||||
## Configure OAuth Consent
|
||||
|
||||
1. Go to **APIs & Services** > **OAuth consent screen**
|
||||
2. Select **External** user type
|
||||
3. Fill in the app information:
|
||||
- App name
|
||||
- User support email
|
||||
- Developer contact email
|
||||
4. Add scopes:
|
||||
- `youtube.upload`
|
||||
- `youtube.readonly`
|
||||
5. Add test users if in testing mode
|
||||
|
||||
## Create OAuth Credentials
|
||||
|
||||
1. Go to **APIs & Services** > **Credentials**
|
||||
2. Click **Create Credentials** > **OAuth client ID**
|
||||
3. Select **Web application**
|
||||
4. Add your redirect URI: `https://your-domain.com/accounts/youtube/callback`
|
||||
5. Note your **Client ID** and **Client Secret**
|
||||
|
||||
## Environment Variables
|
||||
|
||||
Add to your `.env` file:
|
||||
|
||||
```env
|
||||
GOOGLE_CLIENT_ID=your_client_id
|
||||
GOOGLE_CLIENT_SECRET=your_client_secret
|
||||
GOOGLE_CLIENT_REDIRECT="${APP_URL}/accounts/youtube/callback"
|
||||
```
|
||||
|
||||
## Connect Your Channel
|
||||
|
||||
1. In TryPost, go to **Accounts**
|
||||
2. Click **Connect YouTube**
|
||||
3. Log in with Google and authorize
|
||||
4. Select your YouTube channel
|
||||
5. You're ready to post!
|
||||
|
||||
## Supported Features
|
||||
|
||||
- ✅ Video uploads
|
||||
- ✅ Titles and descriptions
|
||||
- ✅ Tags
|
||||
- ✅ Privacy settings (public, unlisted, private)
|
||||
- ✅ Scheduled publishing
|
||||
|
||||
## Limitations
|
||||
|
||||
- YouTube Shorts are uploaded as regular videos
|
||||
- Live streaming is not supported
|
||||
- Community posts are not supported
|
||||
|
|
@ -1,193 +0,0 @@
|
|||
---
|
||||
title: Docker
|
||||
parent: Self-Hosting
|
||||
nav_order: 3
|
||||
---
|
||||
|
||||
# Docker Deployment
|
||||
|
||||
TryPost includes [Laravel Sail](https://laravel.com/docs/sail), a lightweight Docker development environment.
|
||||
|
||||
## Requirements
|
||||
|
||||
- Docker Desktop (Mac, Windows) or Docker Engine (Linux)
|
||||
- Docker Compose
|
||||
|
||||
## Quick Start
|
||||
|
||||
### 1. Clone the repository
|
||||
|
||||
```bash
|
||||
git clone https://github.com/trypost-it/trypost.git
|
||||
cd trypost
|
||||
```
|
||||
|
||||
### 2. Install Composer dependencies
|
||||
|
||||
You can use a temporary container to install dependencies without PHP on your host:
|
||||
|
||||
```bash
|
||||
docker run --rm \
|
||||
-u "$(id -u):$(id -g)" \
|
||||
-v "$(pwd):/var/www/html" \
|
||||
-w /var/www/html \
|
||||
laravelsail/php84-composer:latest \
|
||||
composer install --ignore-platform-reqs
|
||||
```
|
||||
|
||||
### 3. Configure environment
|
||||
|
||||
```bash
|
||||
cp .env.example .env
|
||||
```
|
||||
|
||||
Update your `.env` for Docker:
|
||||
|
||||
```env
|
||||
APP_URL=http://localhost
|
||||
|
||||
DB_CONNECTION=pgsql
|
||||
DB_HOST=pgsql
|
||||
DB_PORT=5432
|
||||
DB_DATABASE=trypost
|
||||
DB_USERNAME=sail
|
||||
DB_PASSWORD=password
|
||||
|
||||
REDIS_HOST=redis
|
||||
```
|
||||
|
||||
### 4. Generate the Docker Compose file
|
||||
|
||||
```bash
|
||||
php artisan sail:install
|
||||
```
|
||||
|
||||
Select the services you need:
|
||||
- **pgsql** - PostgreSQL database (recommended)
|
||||
- **redis** - Required for queues and caching
|
||||
- **meilisearch** - Optional, for search functionality
|
||||
|
||||
### 5. Start the containers
|
||||
|
||||
```bash
|
||||
./vendor/bin/sail up -d
|
||||
```
|
||||
|
||||
### 6. Generate application key
|
||||
|
||||
```bash
|
||||
./vendor/bin/sail artisan key:generate
|
||||
```
|
||||
|
||||
### 7. Run migrations
|
||||
|
||||
```bash
|
||||
./vendor/bin/sail artisan migrate
|
||||
```
|
||||
|
||||
### 8. Build frontend assets
|
||||
|
||||
```bash
|
||||
./vendor/bin/sail npm install
|
||||
./vendor/bin/sail npm run build
|
||||
```
|
||||
|
||||
## Accessing TryPost
|
||||
|
||||
Once running, access TryPost at: `http://localhost`
|
||||
|
||||
## Common Commands
|
||||
|
||||
```bash
|
||||
# Start containers
|
||||
./vendor/bin/sail up -d
|
||||
|
||||
# Stop containers
|
||||
./vendor/bin/sail down
|
||||
|
||||
# View logs
|
||||
./vendor/bin/sail logs
|
||||
|
||||
# Run Artisan commands
|
||||
./vendor/bin/sail artisan <command>
|
||||
|
||||
# Run npm commands
|
||||
./vendor/bin/sail npm <command>
|
||||
|
||||
# Access PostgreSQL
|
||||
./vendor/bin/sail psql
|
||||
|
||||
# Access Redis CLI
|
||||
./vendor/bin/sail redis
|
||||
```
|
||||
|
||||
## Running the Queue Worker
|
||||
|
||||
For background job processing:
|
||||
|
||||
```bash
|
||||
./vendor/bin/sail artisan horizon
|
||||
```
|
||||
|
||||
Or run it in a separate terminal:
|
||||
|
||||
```bash
|
||||
./vendor/bin/sail up -d
|
||||
./vendor/bin/sail artisan horizon
|
||||
```
|
||||
|
||||
## Shell Alias
|
||||
|
||||
Add this alias to your shell profile (`~/.bashrc`, `~/.zshrc`):
|
||||
|
||||
```bash
|
||||
alias sail='./vendor/bin/sail'
|
||||
```
|
||||
|
||||
Then you can use:
|
||||
|
||||
```bash
|
||||
sail up -d
|
||||
sail artisan migrate
|
||||
sail npm run dev
|
||||
```
|
||||
|
||||
## Production with Docker
|
||||
|
||||
For production deployments with Docker, you'll want to:
|
||||
|
||||
1. Use a production-ready Docker Compose configuration
|
||||
2. Set `APP_ENV=production` and `APP_DEBUG=false`
|
||||
3. Use proper SSL termination (nginx, Traefik, etc.)
|
||||
4. Configure persistent volumes for storage
|
||||
5. Set up proper logging and monitoring
|
||||
|
||||
See the [Production Setup](production.md) guide for more details on production configurations.
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Port conflicts
|
||||
|
||||
If port 80 is already in use, change the `APP_PORT` in `.env`:
|
||||
|
||||
```env
|
||||
APP_PORT=8080
|
||||
```
|
||||
|
||||
### Permission issues
|
||||
|
||||
On Linux, you may need to run:
|
||||
|
||||
```bash
|
||||
sudo chown -R $USER: .
|
||||
```
|
||||
|
||||
### Database connection refused
|
||||
|
||||
Make sure the database container is running:
|
||||
|
||||
```bash
|
||||
./vendor/bin/sail ps
|
||||
```
|
||||
|
||||
Wait a few seconds after starting for the database to initialize.
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
---
|
||||
title: Self-Hosting
|
||||
has_children: true
|
||||
nav_order: 5
|
||||
---
|
||||
|
||||
# Self-Hosting
|
||||
|
||||
Deploy TryPost on your own infrastructure.
|
||||
|
|
@ -1,182 +0,0 @@
|
|||
---
|
||||
title: Production Setup
|
||||
parent: Self-Hosting
|
||||
nav_order: 2
|
||||
---
|
||||
|
||||
# Production Setup
|
||||
|
||||
This guide covers deploying TryPost to a production environment.
|
||||
|
||||
## Environment Configuration
|
||||
|
||||
Set these values in your `.env` for production:
|
||||
|
||||
```env
|
||||
APP_ENV=production
|
||||
APP_DEBUG=false
|
||||
APP_URL=https://your-domain.com
|
||||
|
||||
SELF_HOSTED=true
|
||||
```
|
||||
|
||||
## Optimizations
|
||||
|
||||
Run these commands after deployment:
|
||||
|
||||
```bash
|
||||
# Cache configuration
|
||||
php artisan config:cache
|
||||
|
||||
# Cache routes
|
||||
php artisan route:cache
|
||||
|
||||
# Cache views
|
||||
php artisan view:cache
|
||||
|
||||
# Optimize autoloader
|
||||
composer install --optimize-autoloader --no-dev
|
||||
```
|
||||
|
||||
## Queue Worker
|
||||
|
||||
TryPost uses queues for background processing. Use Supervisor to keep the queue worker running.
|
||||
|
||||
### Install Supervisor
|
||||
|
||||
```bash
|
||||
# Ubuntu/Debian
|
||||
sudo apt install supervisor
|
||||
|
||||
# CentOS/RHEL
|
||||
sudo yum install supervisor
|
||||
```
|
||||
|
||||
### Configure Supervisor
|
||||
|
||||
Create `/etc/supervisor/conf.d/trypost-worker.conf`:
|
||||
|
||||
```ini
|
||||
[program:trypost-horizon]
|
||||
process_name=%(program_name)s
|
||||
command=php /var/www/trypost/artisan horizon
|
||||
autostart=true
|
||||
autorestart=true
|
||||
stopasgroup=true
|
||||
killasgroup=true
|
||||
user=www-data
|
||||
redirect_stderr=true
|
||||
stdout_logfile=/var/www/trypost/storage/logs/horizon.log
|
||||
stopwaitsecs=3600
|
||||
```
|
||||
|
||||
Then start it:
|
||||
|
||||
```bash
|
||||
sudo supervisorctl reread
|
||||
sudo supervisorctl update
|
||||
sudo supervisorctl start trypost-horizon
|
||||
```
|
||||
|
||||
## Nginx Configuration
|
||||
|
||||
Example Nginx configuration:
|
||||
|
||||
{% raw %}
|
||||
```nginx
|
||||
server {
|
||||
listen 80;
|
||||
listen [::]:80;
|
||||
server_name your-domain.com;
|
||||
return 301 https://$server_name$request_uri;
|
||||
}
|
||||
|
||||
server {
|
||||
listen 443 ssl http2;
|
||||
listen [::]:443 ssl http2;
|
||||
server_name your-domain.com;
|
||||
|
||||
root /var/www/trypost/public;
|
||||
index index.php;
|
||||
|
||||
ssl_certificate /etc/letsencrypt/live/your-domain.com/fullchain.pem;
|
||||
ssl_certificate_key /etc/letsencrypt/live/your-domain.com/privkey.pem;
|
||||
|
||||
add_header X-Frame-Options "SAMEORIGIN";
|
||||
add_header X-Content-Type-Options "nosniff";
|
||||
|
||||
charset utf-8;
|
||||
|
||||
location / {
|
||||
try_files $uri $uri/ /index.php?$query_string;
|
||||
}
|
||||
|
||||
location = /favicon.ico { access_log off; log_not_found off; }
|
||||
location = /robots.txt { access_log off; log_not_found off; }
|
||||
|
||||
error_page 404 /index.php;
|
||||
|
||||
location ~ \.php$ {
|
||||
fastcgi_pass unix:/var/run/php/php8.4-fpm.sock;
|
||||
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
|
||||
include fastcgi_params;
|
||||
}
|
||||
|
||||
location ~ /\.(?!well-known).* {
|
||||
deny all;
|
||||
}
|
||||
|
||||
client_max_body_size 100M;
|
||||
}
|
||||
```
|
||||
{% endraw %}
|
||||
|
||||
## SSL Certificate
|
||||
|
||||
Use Let's Encrypt for free SSL:
|
||||
|
||||
```bash
|
||||
sudo apt install certbot python3-certbot-nginx
|
||||
sudo certbot --nginx -d your-domain.com
|
||||
```
|
||||
|
||||
## Scheduled Tasks
|
||||
|
||||
Add the Laravel scheduler to cron:
|
||||
|
||||
```bash
|
||||
crontab -e
|
||||
```
|
||||
|
||||
Add this line:
|
||||
|
||||
```
|
||||
* * * * * cd /var/www/trypost && php artisan schedule:run >> /dev/null 2>&1
|
||||
```
|
||||
|
||||
## File Permissions
|
||||
|
||||
Set correct permissions:
|
||||
|
||||
```bash
|
||||
sudo chown -R www-data:www-data /var/www/trypost
|
||||
sudo chmod -R 755 /var/www/trypost
|
||||
sudo chmod -R 775 /var/www/trypost/storage
|
||||
sudo chmod -R 775 /var/www/trypost/bootstrap/cache
|
||||
```
|
||||
|
||||
## Monitoring
|
||||
|
||||
Consider setting up monitoring for:
|
||||
|
||||
- Server health (CPU, memory, disk)
|
||||
- Application errors (Laravel logs)
|
||||
- Queue status (Horizon dashboard at `/horizon`)
|
||||
|
||||
## Backups
|
||||
|
||||
Regularly backup:
|
||||
|
||||
- Database
|
||||
- `.env` file
|
||||
- Uploaded media (if using local storage)
|
||||
|
|
@ -1,84 +0,0 @@
|
|||
---
|
||||
title: Requirements
|
||||
parent: Self-Hosting
|
||||
nav_order: 1
|
||||
---
|
||||
|
||||
# Server Requirements
|
||||
|
||||
This guide covers the requirements for self-hosting TryPost.
|
||||
|
||||
## Minimum Requirements
|
||||
|
||||
| Component | Minimum | Recommended |
|
||||
|-----------|---------|-------------|
|
||||
| CPU | 1 core | 2+ cores |
|
||||
| RAM | 1 GB | 2+ GB |
|
||||
| Storage | 10 GB | 20+ GB (depends on media storage) |
|
||||
|
||||
## Software Requirements
|
||||
|
||||
### Required
|
||||
|
||||
- **PHP 8.2+** with extensions:
|
||||
- BCMath, Ctype, JSON, Mbstring, OpenSSL, PDO, Tokenizer, XML
|
||||
- GD or Imagick (for image processing)
|
||||
- Redis extension
|
||||
- **Composer** 2.x
|
||||
- **Node.js** 18+ and npm
|
||||
- **PostgreSQL** 14+ or **MySQL** 8+
|
||||
- **Redis** 6+
|
||||
|
||||
### Optional
|
||||
|
||||
- **Nginx** or **Apache** (for production)
|
||||
- **Supervisor** (for queue workers)
|
||||
- **SSL certificate** (Let's Encrypt recommended)
|
||||
|
||||
## PHP Configuration
|
||||
|
||||
Recommended `php.ini` settings:
|
||||
|
||||
```ini
|
||||
upload_max_filesize = 100M
|
||||
post_max_size = 100M
|
||||
memory_limit = 256M
|
||||
max_execution_time = 300
|
||||
```
|
||||
|
||||
## Supported Operating Systems
|
||||
|
||||
TryPost can run on any OS that supports the required software:
|
||||
|
||||
- Ubuntu 22.04+ (recommended)
|
||||
- Debian 11+
|
||||
- CentOS/RHEL 8+
|
||||
- macOS (for development)
|
||||
- Windows with WSL2 (for development)
|
||||
|
||||
## Cloud Providers
|
||||
|
||||
TryPost works well on:
|
||||
|
||||
- DigitalOcean Droplets
|
||||
- AWS EC2
|
||||
- Google Cloud Compute
|
||||
- Hetzner Cloud
|
||||
- Linode
|
||||
- Vultr
|
||||
|
||||
## Storage Considerations
|
||||
|
||||
Media files (images, videos) can be stored:
|
||||
|
||||
- **Locally** - On the server's disk
|
||||
- **S3** - Amazon S3
|
||||
- **R2** - Cloudflare R2
|
||||
- **Any S3-compatible** - MinIO, DigitalOcean Spaces, etc.
|
||||
|
||||
For production with heavy media usage, cloud storage is recommended.
|
||||
|
||||
## Next Steps
|
||||
|
||||
- [Production Setup](production.md)
|
||||
- [Docker Deployment](docker.md)
|
||||
Loading…
Reference in a new issue