Baseline snapshot of custom AI implementation before Laravel AI SDK migration. Includes: - Custom services: GeminiTextGenerationService, TextGenerationService (OpenAI), ImageGenerationService, AudioGenerationService, VideoGenerationService - IntentDetector for content moderation via keyword matching - AI enums: Intent, Orientation, UsageType - Blade prompt templates: system.blade.php, image.blade.php, video.blade.php - AiMessage with content_html accessor (markdown rendering) - AiUsageLog for monthly quota tracking per account - PostAssistantController with regex-based [GENERATE_*] parsing - WritingAssistantTab with markdown rendering, add-to-post, attachments - Workspace brand fields (name, description, tone, voice_notes) in system prompt - Session state block injected into prompts (thread counts, quota remaining) - AttachmentCollector pattern will replace the regex approach in Phase 2 - Post comments with replies, emoji reactions, real-time via Echo - Assets page with Unsplash + Giphy integrations
156 lines
5.1 KiB
JSON
156 lines
5.1 KiB
JSON
{
|
|
"$schema": "https://getcomposer.org/schema.json",
|
|
"name": "trypost-it/trypost",
|
|
"type": "project",
|
|
"description": "Open-source social media scheduling for creators and teams",
|
|
"keywords": [
|
|
"open-source",
|
|
"self-hosted",
|
|
"laravel",
|
|
"social-media",
|
|
"social-media-scheduler",
|
|
"social-media-management",
|
|
"content-scheduling",
|
|
"twitter",
|
|
"linkedin",
|
|
"instagram",
|
|
"facebook",
|
|
"tiktok",
|
|
"youtube",
|
|
"threads",
|
|
"pinterest"
|
|
],
|
|
"license": "MIT",
|
|
"homepage": "https://trypost.it",
|
|
"support": {
|
|
"issues": "https://github.com/trypost-it/trypost/issues",
|
|
"source": "https://github.com/trypost-it/trypost"
|
|
},
|
|
"authors": [
|
|
{
|
|
"name": "Paulo Castellano",
|
|
"homepage": "https://github.com/paulocastellano"
|
|
}
|
|
],
|
|
"require": {
|
|
"php": "^8.2",
|
|
"google/apiclient": "^2.19",
|
|
"inertiajs/inertia-laravel": "^3.0",
|
|
"intervention/image": "^4.0",
|
|
"laravel/boost": "^2.0",
|
|
"laravel/cashier": "^16.2",
|
|
"laravel/framework": "^13.0",
|
|
"laravel/horizon": "^5.42",
|
|
"laravel/mcp": "^0.6.4",
|
|
"laravel/nightwatch": "^1.22",
|
|
"laravel/pennant": "^1.23",
|
|
"laravel/reverb": "^1.0",
|
|
"laravel/socialite": "^5.24",
|
|
"laravel/tinker": "^3.0",
|
|
"laravel/wayfinder": "^0.1.9",
|
|
"league/flysystem-aws-s3-v3": "^3.0",
|
|
"posthog/posthog-php": "^4.1",
|
|
"predis/predis": "^3.3",
|
|
"sendkit/sendkit-laravel": "^1.1",
|
|
"socialiteproviders/facebook": "^4.1",
|
|
"socialiteproviders/instagram": "^5.1",
|
|
"socialiteproviders/linkedin": "^5.0",
|
|
"socialiteproviders/pinterest": "^4.3",
|
|
"socialiteproviders/tiktok": "^5.2",
|
|
"socialiteproviders/twitter": "^4.1"
|
|
},
|
|
"require-dev": {
|
|
"fakerphp/faker": "^1.23",
|
|
"laravel/pail": "^1.2.2",
|
|
"laravel/pint": "^1.24",
|
|
"laravel/sail": "*",
|
|
"laravel/telescope": "^5.19",
|
|
"mockery/mockery": "^1.6",
|
|
"nunomaduro/collision": "^8.6",
|
|
"pestphp/pest": "^4.4",
|
|
"pestphp/pest-plugin-laravel": "^4.1",
|
|
"spatie/laravel-horizon-watcher": "^1.1"
|
|
},
|
|
"autoload": {
|
|
"files": [
|
|
"app/Helpers/Upload.php"
|
|
],
|
|
"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": {
|
|
"dont-discover": [
|
|
"laravel/telescope"
|
|
]
|
|
}
|
|
},
|
|
"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
|
|
}
|