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 db7f9e42..00000000 Binary files a/docs/assets/images/logo.png and /dev/null differ diff --git a/docs/contributing.md b/docs/contributing.md deleted file mode 100644 index 4712f768..00000000 --- a/docs/contributing.md +++ /dev/null @@ -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). diff --git a/docs/features/index.md b/docs/features/index.md deleted file mode 100644 index e79ab3ee..00000000 --- a/docs/features/index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Features -has_children: true -nav_order: 4 ---- - -# Features - -Learn about TryPost's powerful features. diff --git a/docs/features/scheduling.md b/docs/features/scheduling.md deleted file mode 100644 index ed0f88f1..00000000 --- a/docs/features/scheduling.md +++ /dev/null @@ -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. diff --git a/docs/features/team.md b/docs/features/team.md deleted file mode 100644 index 29e9ab67..00000000 --- a/docs/features/team.md +++ /dev/null @@ -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 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)