From f6deae47d077f0cde3c56631cd6fb2cca01ad32a Mon Sep 17 00:00:00 2001 From: Paulo Castellano Date: Sun, 29 Mar 2026 17:33:36 -0300 Subject: [PATCH] chore: remove docs directory, migrated to separate repository --- docs/_config.yml | 31 ----- docs/assets/images/logo.png | Bin 11236 -> 0 bytes docs/contributing.md | 143 ------------------- docs/features/index.md | 9 -- docs/features/scheduling.md | 60 -------- docs/features/team.md | 64 --------- docs/features/workspaces.md | 71 ---------- docs/getting-started/configuration.md | 154 -------------------- docs/getting-started/first-steps.md | 56 -------- docs/getting-started/index.md | 9 -- docs/getting-started/installation.md | 85 ------------ docs/index.md | 52 ------- docs/platforms/README.md | 60 -------- docs/platforms/bluesky.md | 54 ------- docs/platforms/facebook.md | 68 --------- docs/platforms/instagram.md | 66 --------- docs/platforms/linkedin.md | 64 --------- docs/platforms/mastodon.md | 51 ------- docs/platforms/pinterest.md | 67 --------- docs/platforms/threads.md | 60 -------- docs/platforms/tiktok.md | 67 --------- docs/platforms/x-twitter.md | 63 --------- docs/platforms/youtube.md | 68 --------- docs/self-hosting/docker.md | 193 -------------------------- docs/self-hosting/index.md | 9 -- docs/self-hosting/production.md | 182 ------------------------ docs/self-hosting/requirements.md | 84 ----------- 27 files changed, 1890 deletions(-) delete mode 100644 docs/_config.yml delete mode 100644 docs/assets/images/logo.png delete mode 100644 docs/contributing.md delete mode 100644 docs/features/index.md delete mode 100644 docs/features/scheduling.md delete mode 100644 docs/features/team.md delete mode 100644 docs/features/workspaces.md delete mode 100644 docs/getting-started/configuration.md delete mode 100644 docs/getting-started/first-steps.md delete mode 100644 docs/getting-started/index.md delete mode 100644 docs/getting-started/installation.md delete mode 100644 docs/index.md delete mode 100644 docs/platforms/README.md delete mode 100644 docs/platforms/bluesky.md delete mode 100644 docs/platforms/facebook.md delete mode 100644 docs/platforms/instagram.md delete mode 100644 docs/platforms/linkedin.md delete mode 100644 docs/platforms/mastodon.md delete mode 100644 docs/platforms/pinterest.md delete mode 100644 docs/platforms/threads.md delete mode 100644 docs/platforms/tiktok.md delete mode 100644 docs/platforms/x-twitter.md delete mode 100644 docs/platforms/youtube.md delete mode 100644 docs/self-hosting/docker.md delete mode 100644 docs/self-hosting/index.md delete mode 100644 docs/self-hosting/production.md delete mode 100644 docs/self-hosting/requirements.md diff --git a/docs/_config.yml b/docs/_config.yml deleted file mode 100644 index ae42fa76..00000000 --- a/docs/_config.yml +++ /dev/null @@ -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 FSL License." - -# Back to top link -back_to_top: true -back_to_top_text: "Back to top" - -# Exclude files -exclude: - - CNAME diff --git a/docs/assets/images/logo.png b/docs/assets/images/logo.png deleted file mode 100644 index db7f9e423e21eea783eb9c392c0298469685e1ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11236 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 **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 diff --git a/docs/features/workspaces.md b/docs/features/workspaces.md deleted file mode 100644 index b4eb3131..00000000 --- a/docs/features/workspaces.md +++ /dev/null @@ -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. diff --git a/docs/getting-started/configuration.md b/docs/getting-started/configuration.md deleted file mode 100644 index 3d86af42..00000000 --- a/docs/getting-started/configuration.md +++ /dev/null @@ -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) diff --git a/docs/getting-started/first-steps.md b/docs/getting-started/first-steps.md deleted file mode 100644 index 53058ba3..00000000 --- a/docs/getting-started/first-steps.md +++ /dev/null @@ -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) diff --git a/docs/getting-started/index.md b/docs/getting-started/index.md deleted file mode 100644 index 23d48281..00000000 --- a/docs/getting-started/index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Getting Started -has_children: true -nav_order: 2 ---- - -# Getting Started - -Get up and running with TryPost in minutes. diff --git a/docs/getting-started/installation.md b/docs/getting-started/installation.md deleted file mode 100644 index 8bb96448..00000000 --- a/docs/getting-started/installation.md +++ /dev/null @@ -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) diff --git a/docs/index.md b/docs/index.md deleted file mode 100644 index b0d835fd..00000000 --- a/docs/index.md +++ /dev/null @@ -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 diff --git a/docs/platforms/README.md b/docs/platforms/README.md deleted file mode 100644 index 10888f8e..00000000 --- a/docs/platforms/README.md +++ /dev/null @@ -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. diff --git a/docs/platforms/bluesky.md b/docs/platforms/bluesky.md deleted file mode 100644 index d8a418ef..00000000 --- a/docs/platforms/bluesky.md +++ /dev/null @@ -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 diff --git a/docs/platforms/facebook.md b/docs/platforms/facebook.md deleted file mode 100644 index 1d404cd3..00000000 --- a/docs/platforms/facebook.md +++ /dev/null @@ -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. diff --git a/docs/platforms/instagram.md b/docs/platforms/instagram.md deleted file mode 100644 index 17890c02..00000000 --- a/docs/platforms/instagram.md +++ /dev/null @@ -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 diff --git a/docs/platforms/linkedin.md b/docs/platforms/linkedin.md deleted file mode 100644 index 5bf66987..00000000 --- a/docs/platforms/linkedin.md +++ /dev/null @@ -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 diff --git a/docs/platforms/mastodon.md b/docs/platforms/mastodon.md deleted file mode 100644 index f2ec609c..00000000 --- a/docs/platforms/mastodon.md +++ /dev/null @@ -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. diff --git a/docs/platforms/pinterest.md b/docs/platforms/pinterest.md deleted file mode 100644 index f309823f..00000000 --- a/docs/platforms/pinterest.md +++ /dev/null @@ -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 diff --git a/docs/platforms/threads.md b/docs/platforms/threads.md deleted file mode 100644 index 6721dc04..00000000 --- a/docs/platforms/threads.md +++ /dev/null @@ -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 diff --git a/docs/platforms/tiktok.md b/docs/platforms/tiktok.md deleted file mode 100644 index 7ca7a551..00000000 --- a/docs/platforms/tiktok.md +++ /dev/null @@ -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 diff --git a/docs/platforms/x-twitter.md b/docs/platforms/x-twitter.md deleted file mode 100644 index f46cec4f..00000000 --- a/docs/platforms/x-twitter.md +++ /dev/null @@ -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. diff --git a/docs/platforms/youtube.md b/docs/platforms/youtube.md deleted file mode 100644 index fa213b9f..00000000 --- a/docs/platforms/youtube.md +++ /dev/null @@ -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 diff --git a/docs/self-hosting/docker.md b/docs/self-hosting/docker.md deleted file mode 100644 index 5793375c..00000000 --- a/docs/self-hosting/docker.md +++ /dev/null @@ -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 - -# Run npm commands -./vendor/bin/sail npm - -# 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. diff --git a/docs/self-hosting/index.md b/docs/self-hosting/index.md deleted file mode 100644 index bc7fdc13..00000000 --- a/docs/self-hosting/index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Self-Hosting -has_children: true -nav_order: 5 ---- - -# Self-Hosting - -Deploy TryPost on your own infrastructure. diff --git a/docs/self-hosting/production.md b/docs/self-hosting/production.md deleted file mode 100644 index e09b975e..00000000 --- a/docs/self-hosting/production.md +++ /dev/null @@ -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) diff --git a/docs/self-hosting/requirements.md b/docs/self-hosting/requirements.md deleted file mode 100644 index a99ef438..00000000 --- a/docs/self-hosting/requirements.md +++ /dev/null @@ -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)