2026-01-15 01:13:44 +00:00
|
|
|
{
|
|
|
|
|
"$schema": "https://getcomposer.org/schema.json",
|
2026-01-26 15:14:41 +00:00
|
|
|
"name": "trypost-it/trypost",
|
2026-01-15 01:13:44 +00:00
|
|
|
"type": "project",
|
2026-01-26 15:14:41 +00:00
|
|
|
"description": "Open-source social media scheduling for creators and teams",
|
2026-01-15 01:13:44 +00:00
|
|
|
"keywords": [
|
2026-01-26 15:14:41 +00:00
|
|
|
"open-source",
|
|
|
|
|
"self-hosted",
|
2026-01-15 01:13:44 +00:00
|
|
|
"laravel",
|
2026-01-26 15:14:41 +00:00
|
|
|
"social-media",
|
|
|
|
|
"social-media-scheduler",
|
|
|
|
|
"social-media-management",
|
|
|
|
|
"content-scheduling",
|
|
|
|
|
"twitter",
|
|
|
|
|
"linkedin",
|
|
|
|
|
"instagram",
|
|
|
|
|
"facebook",
|
|
|
|
|
"tiktok",
|
|
|
|
|
"youtube",
|
|
|
|
|
"threads",
|
|
|
|
|
"pinterest"
|
2026-01-15 01:13:44 +00:00
|
|
|
],
|
|
|
|
|
"license": "MIT",
|
2026-01-26 15:14:41 +00:00
|
|
|
"homepage": "https://trypost.it",
|
|
|
|
|
"support": {
|
|
|
|
|
"issues": "https://github.com/trypost-it/trypost/issues",
|
|
|
|
|
"source": "https://github.com/trypost-it/trypost"
|
|
|
|
|
},
|
2026-01-26 15:15:21 +00:00
|
|
|
"authors": [
|
|
|
|
|
{
|
|
|
|
|
"name": "Paulo Castellano",
|
|
|
|
|
"homepage": "https://github.com/paulocastellano"
|
|
|
|
|
}
|
|
|
|
|
],
|
2026-01-15 01:13:44 +00:00
|
|
|
"require": {
|
|
|
|
|
"php": "^8.2",
|
fix: overhaul social publishing — validation, uploads, token refresh
- Fix UpdatePostRequest missing content_type, synced, meta fields
(content_type was silently dropped, causing Instagram Reels to post as Feed)
- Create API FormRequests (StorePostRequest, UpdatePostRequest) replacing inline validation
- Fix syntax errors in all publishers ($media->isVideo() missing variable)
- Fix Instagram Feed with single video calling publishSingleImage instead of publishReel
- Fix TikTok hardcoded SELF_ONLY privacy — now queries creator_info API
- Refactor YouTubePublisher to use google/apiclient SDK with chunked resumable upload
- Fix all publishers using file_get_contents for large videos (memory overflow)
— X, LinkedIn, LinkedInPage, Pinterest, Bluesky, Mastodon now use temp file + stream
- Fix Media::isVideo/isImage to use mime_type instead of extension
- Fix Threads not saving refresh_token (was null, now saves access_token)
- Add Instagram token refresh to publisher and ConnectionVerifier
- Fix PublishToSocialPlatform job: tries 3→1 (prevents duplicate uploads),
timeout 60→600s, added failed() method for cleanup
- Increase Horizon worker timeout 60→630s, Redis retry_after 90→660s
- Increase upload limit 500MB→1GB
- Add mastodon to getDefaultContentType in Edit.vue
2026-03-31 22:25:19 +00:00
|
|
|
"google/apiclient": "^2.19",
|
2026-03-29 21:10:10 +00:00
|
|
|
"inertiajs/inertia-laravel": "^3.0",
|
feat: implement MCP server with tools, Post API tests, auth middleware
- Create TryPostServer MCP server with 17 tools:
Post (List, Get, Create, Delete), Hashtag (List, Create, Update, Delete),
Label (List, Create, Update, Delete), Workspace (Get),
ApiKey (List, Create, Delete)
- Create AuthenticateMcpToken middleware (logs in workspace owner)
- Register mcp.auth middleware alias in bootstrap/app.php
- Create routes/ai.php with mcp.trypost.test subdomain
- Add PostApiTest with 6 tests (list, show, create, delete, isolation)
- Fix PostApiTest assertions for pagination/resource wrapping
- 704 tests passing, frontend build passing
2026-03-29 23:30:36 +00:00
|
|
|
"laravel/ai": "^0.4.2",
|
2026-03-29 21:10:10 +00:00
|
|
|
"laravel/boost": "^2.0",
|
2026-01-15 01:13:44 +00:00
|
|
|
"laravel/cashier": "^16.2",
|
2026-03-29 21:10:10 +00:00
|
|
|
"laravel/framework": "^13.0",
|
2026-01-15 01:13:44 +00:00
|
|
|
"laravel/horizon": "^5.42",
|
feat: implement MCP server with tools, Post API tests, auth middleware
- Create TryPostServer MCP server with 17 tools:
Post (List, Get, Create, Delete), Hashtag (List, Create, Update, Delete),
Label (List, Create, Update, Delete), Workspace (Get),
ApiKey (List, Create, Delete)
- Create AuthenticateMcpToken middleware (logs in workspace owner)
- Register mcp.auth middleware alias in bootstrap/app.php
- Create routes/ai.php with mcp.trypost.test subdomain
- Add PostApiTest with 6 tests (list, show, create, delete, isolation)
- Fix PostApiTest assertions for pagination/resource wrapping
- 704 tests passing, frontend build passing
2026-03-29 23:30:36 +00:00
|
|
|
"laravel/mcp": "^0.6.4",
|
2026-01-18 19:46:27 +00:00
|
|
|
"laravel/nightwatch": "^1.22",
|
2026-01-15 17:24:39 +00:00
|
|
|
"laravel/reverb": "^1.0",
|
2026-01-15 01:13:44 +00:00
|
|
|
"laravel/socialite": "^5.24",
|
2026-03-29 21:10:10 +00:00
|
|
|
"laravel/tinker": "^3.0",
|
2026-01-15 01:13:44 +00:00
|
|
|
"laravel/wayfinder": "^0.1.9",
|
|
|
|
|
"league/flysystem-aws-s3-v3": "^3.0",
|
2026-03-31 00:18:07 +00:00
|
|
|
"posthog/posthog-php": "^4.1",
|
2026-01-15 01:13:44 +00:00
|
|
|
"predis/predis": "^3.3",
|
2026-03-16 16:14:22 +00:00
|
|
|
"sendkit/sendkit-laravel": "^1.1",
|
2026-01-17 02:46:30 +00:00
|
|
|
"socialiteproviders/facebook": "^4.1",
|
|
|
|
|
"socialiteproviders/instagram": "^5.1",
|
2026-01-15 01:13:44 +00:00
|
|
|
"socialiteproviders/linkedin": "^5.0",
|
2026-01-18 16:10:01 +00:00
|
|
|
"socialiteproviders/pinterest": "^4.3",
|
2026-01-15 01:13:44 +00:00
|
|
|
"socialiteproviders/tiktok": "^5.2",
|
|
|
|
|
"socialiteproviders/twitter": "^4.1"
|
|
|
|
|
},
|
|
|
|
|
"require-dev": {
|
|
|
|
|
"fakerphp/faker": "^1.23",
|
|
|
|
|
"laravel/pail": "^1.2.2",
|
|
|
|
|
"laravel/pint": "^1.24",
|
2026-01-18 21:57:15 +00:00
|
|
|
"laravel/sail": "*",
|
feat: implement MCP server with tools, Post API tests, auth middleware
- Create TryPostServer MCP server with 17 tools:
Post (List, Get, Create, Delete), Hashtag (List, Create, Update, Delete),
Label (List, Create, Update, Delete), Workspace (Get),
ApiKey (List, Create, Delete)
- Create AuthenticateMcpToken middleware (logs in workspace owner)
- Register mcp.auth middleware alias in bootstrap/app.php
- Create routes/ai.php with mcp.trypost.test subdomain
- Add PostApiTest with 6 tests (list, show, create, delete, isolation)
- Fix PostApiTest assertions for pagination/resource wrapping
- 704 tests passing, frontend build passing
2026-03-29 23:30:36 +00:00
|
|
|
"laravel/telescope": "^5.19",
|
2026-01-15 01:13:44 +00:00
|
|
|
"mockery/mockery": "^1.6",
|
|
|
|
|
"nunomaduro/collision": "^8.6",
|
2026-03-29 21:10:10 +00:00
|
|
|
"pestphp/pest": "^4.4",
|
|
|
|
|
"pestphp/pest-plugin-laravel": "^4.1",
|
2026-01-16 15:36:52 +00:00
|
|
|
"spatie/laravel-horizon-watcher": "^1.1"
|
2026-01-15 01:13:44 +00:00
|
|
|
},
|
|
|
|
|
"autoload": {
|
|
|
|
|
"files": [
|
2026-03-31 14:35:49 +00:00
|
|
|
"app/Helpers/Upload.php"
|
2026-01-15 01:13:44 +00:00
|
|
|
],
|
|
|
|
|
"psr-4": {
|
|
|
|
|
"App\\": "app/",
|
|
|
|
|
"Database\\Factories\\": "database/factories/",
|
|
|
|
|
"Database\\Seeders\\": "database/seeders/"
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"autoload-dev": {
|
|
|
|
|
"psr-4": {
|
|
|
|
|
"Tests\\": "tests/"
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"scripts": {
|
|
|
|
|
"setup": [
|
|
|
|
|
"composer install",
|
|
|
|
|
"@php -r \"file_exists('.env') || copy('.env.example', '.env');\"",
|
|
|
|
|
"@php artisan key:generate",
|
|
|
|
|
"@php artisan migrate --force",
|
|
|
|
|
"npm install",
|
|
|
|
|
"npm run build"
|
|
|
|
|
],
|
|
|
|
|
"dev": [
|
|
|
|
|
"Composer\\Config::disableProcessTimeout",
|
|
|
|
|
"npx concurrently -c \"#93c5fd,#c4b5fd,#fb7185,#fdba74\" \"php artisan serve\" \"php artisan queue:listen --tries=1\" \"php artisan pail --timeout=0\" \"npm run dev\" --names=server,queue,logs,vite --kill-others"
|
|
|
|
|
],
|
|
|
|
|
"dev:ssr": [
|
|
|
|
|
"npm run build:ssr",
|
|
|
|
|
"Composer\\Config::disableProcessTimeout",
|
|
|
|
|
"npx concurrently -c \"#93c5fd,#c4b5fd,#fb7185,#fdba74\" \"php artisan serve\" \"php artisan queue:listen --tries=1\" \"php artisan pail --timeout=0\" \"php artisan inertia:start-ssr\" --names=server,queue,logs,ssr --kill-others"
|
|
|
|
|
],
|
|
|
|
|
"lint": [
|
|
|
|
|
"pint --parallel"
|
|
|
|
|
],
|
|
|
|
|
"test:lint": [
|
|
|
|
|
"pint --parallel --test"
|
|
|
|
|
],
|
|
|
|
|
"test": [
|
|
|
|
|
"@php artisan config:clear --ansi",
|
|
|
|
|
"@test:lint",
|
|
|
|
|
"@php artisan test"
|
|
|
|
|
],
|
|
|
|
|
"post-autoload-dump": [
|
|
|
|
|
"Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
|
|
|
|
|
"@php artisan package:discover --ansi"
|
|
|
|
|
],
|
|
|
|
|
"post-update-cmd": [
|
|
|
|
|
"@php artisan vendor:publish --tag=laravel-assets --ansi --force",
|
|
|
|
|
"@php artisan boost:update --ansi"
|
|
|
|
|
],
|
|
|
|
|
"post-root-package-install": [
|
|
|
|
|
"@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
|
|
|
|
|
],
|
|
|
|
|
"post-create-project-cmd": [
|
|
|
|
|
"@php artisan key:generate --ansi",
|
|
|
|
|
"@php -r \"file_exists('database/database.sqlite') || touch('database/database.sqlite');\"",
|
|
|
|
|
"@php artisan migrate --graceful --ansi"
|
|
|
|
|
],
|
|
|
|
|
"pre-package-uninstall": [
|
|
|
|
|
"Illuminate\\Foundation\\ComposerScripts::prePackageUninstall"
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
"extra": {
|
|
|
|
|
"laravel": {
|
refactor: organize middleware/requests into App/ subdirs, add Resources, fix auth routes
- Move middleware to App/ subdir (HandleInertiaRequests, HandleAppearance,
EnsureSubscribed, EnsureUserSetupIsComplete) matching Sendkit pattern
- Move all Form Requests into organized subdirs (App/Post, App/Workspace,
App/Media, App/Invite, App/Settings, App/Auth)
- Create AuthUserResource and AuthWorkspaceResource for HandleInertiaRequests
shared data (role inside currentWorkspace, matching Sendkit pattern)
- Split auth.php into 3 route groups (no middleware, guest, auth) matching
Sendkit pattern exactly
- Fix UserFactory to include all nullable attributes (current_workspace_id,
stripe_id, pm_type, pm_last_four, trial_ends_at)
- Fix SocialAccountResource (display_name not name)
- Update frontend for new auth prop structure
- 702 tests passing (2 pre-existing Mastodon failures)
2026-03-30 00:13:30 +00:00
|
|
|
"dont-discover": [
|
|
|
|
|
"laravel/telescope"
|
|
|
|
|
]
|
2026-01-15 01:13:44 +00:00
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"config": {
|
|
|
|
|
"optimize-autoloader": true,
|
|
|
|
|
"preferred-install": "dist",
|
|
|
|
|
"sort-packages": true,
|
|
|
|
|
"allow-plugins": {
|
|
|
|
|
"pestphp/pest-plugin": true,
|
|
|
|
|
"php-http/discovery": true
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"minimum-stability": "stable",
|
|
|
|
|
"prefer-stable": true
|
|
|
|
|
}
|