No description
Find a file
Paulo Castellano 09e37f2879 feat: notification system with SendNotification job, dialog UI, tests
Backend:
- Create notifications table (user_id, workspace_id, type, channel,
  title, body, data JSON, read_at, archived_at)
- Create Notification model with Type enum (post_failed,
  account_disconnected, invite_received, member_joined, member_removed)
  and Channel enum (email, in_app, both)
- Create SendNotification job: isolated from publish flow, handles
  saving in-app notification and sending email independently
- NotificationController: index (excludes archived, scoped to workspace),
  markAsRead, markAllAsRead, archiveAll
- Integrate with PublishToSocialPlatform (post failed/partial)
- Integrate with VerifyWorkspaceConnections (batch disconnection)
- Integrate with SocialAccount::markAsDisconnected (single disconnection)
- All use SendNotification::dispatch() instead of direct Mail::to()

Frontend:
- NotificationBell component in sidebar footer with unread badge
- Dialog with notification list, mark as read, mark all read, archive all
- Click navigates to relevant page (post edit, accounts)
- i18n for notifications UI (en, es, pt-BR)

Tests:
- 8 tests for NotificationController (auth, CRUD, workspace scoping)
- 4 tests for SendNotification job (channels, email, data storage)

All 745 tests passing.
2026-03-30 16:47:03 -03:00
.claude/skills feat: implement MCP server with tools, Post API tests, auth middleware 2026-03-29 20:30:36 -03:00
.github feat: adding tests 2026-01-18 22:12:25 -03:00
app feat: notification system with SendNotification job, dialog UI, tests 2026-03-30 16:47:03 -03:00
bootstrap refactor: auth split layout, subscribe redesign, onboarding, i18n, cookie locale 2026-03-30 11:53:42 -03:00
config refactor: auth split layout, subscribe redesign, onboarding, i18n, cookie locale 2026-03-30 11:53:42 -03:00
database feat: notification system with SendNotification job, dialog UI, tests 2026-03-30 16:47:03 -03:00
lang feat: notification system with SendNotification job, dialog UI, tests 2026-03-30 16:47:03 -03:00
maizzle feat: PostPlatform enum, failure email, DB indexes, rate limiting, tests 2026-03-30 16:11:38 -03:00
public feat: Introduce a self-hosted mode, refactor email notifications to use Mailable classes with new templates, and update the project README. 2026-01-18 17:48:12 -03:00
resources feat: notification system with SendNotification job, dialog UI, tests 2026-03-30 16:47:03 -03:00
routes feat: notification system with SendNotification job, dialog UI, tests 2026-03-30 16:47:03 -03:00
storage chore: first commit 2026-01-14 22:13:44 -03:00
stubs feat: implement MCP server with tools, Post API tests, auth middleware 2026-03-29 20:30:36 -03:00
tests feat: notification system with SendNotification job, dialog UI, tests 2026-03-30 16:47:03 -03:00
.editorconfig chore: first commit 2026-01-14 22:13:44 -03:00
.env.ci feat: adding tests.. 2026-01-18 22:01:55 -03:00
.env.example feat: improvements on ui 2026-01-21 20:50:57 -03:00
.env.testing feat: improvements on ui 2026-01-21 20:50:57 -03:00
.gitattributes chore: first commit 2026-01-14 22:13:44 -03:00
.gitignore chore: first commit 2026-01-14 22:13:44 -03:00
.mcp.json upgrade: Laravel 13, Inertia v3, remove pion/chunk-upload 2026-03-29 18:10:10 -03:00
.prettierignore chore: first commit 2026-01-14 22:13:44 -03:00
.prettierrc chore: first commit 2026-01-14 22:13:44 -03:00
artisan chore: first commit 2026-01-14 22:13:44 -03:00
boost.json feat: implement MCP server with tools, Post API tests, auth middleware 2026-03-29 20:30:36 -03:00
CLAUDE.md refactor: auth split layout, subscribe redesign, onboarding, i18n, cookie locale 2026-03-30 11:53:42 -03:00
components.json chore: first commit 2026-01-14 22:13:44 -03:00
compose.yaml feat: add documentation for connecting social media platforms and getting started guide 2026-01-18 18:57:15 -03:00
composer.json refactor: auth split layout, subscribe redesign, onboarding, i18n, cookie locale 2026-03-30 11:53:42 -03:00
composer.lock feat: implement MCP server with tools, Post API tests, auth middleware 2026-03-29 20:30:36 -03:00
eslint.config.js chore: first commit 2026-01-14 22:13:44 -03:00
GEMINI.md chore: update config files and remove unused translation files 2026-01-26 12:02:24 -03:00
LICENSE.md feat: Introduce a self-hosted mode, refactor email notifications to use Mailable classes with new templates, and update the project README. 2026-01-18 17:48:12 -03:00
package-lock.json upgrade: Laravel 13, Inertia v3, remove pion/chunk-upload 2026-03-29 18:10:10 -03:00
package.json upgrade: Laravel 13, Inertia v3, remove pion/chunk-upload 2026-03-29 18:10:10 -03:00
phpunit.xml feat: adding tests 2026-01-18 22:04:34 -03:00
pint.json chore: first commit 2026-01-14 22:13:44 -03:00
README.md refactor: auth split layout, subscribe redesign, onboarding, i18n, cookie locale 2026-03-30 11:53:42 -03:00
tsconfig.json chore: first commit 2026-01-14 22:13:44 -03:00
vite.config.ts feat: Implement soft deletes for workspace hashtags and labels, and integrate content_type into the initial post platforms table creation. 2026-01-17 14:44:37 -03:00

TryPost

The open-source social media scheduling platform

Schedule, manage, and publish content to all your social media accounts from one place.
Self-hosted. Privacy-focused. No limits.

Stars License Release

📚 Documentation • 🗺️ Roadmap • 💬 Community


🤔 Why TryPost?

Tired of paying expensive monthly fees for social media scheduling tools? Want full control over your data? TryPost is the solution.

🔓 100% Open Source Inspect the code, contribute, make it yours
🏠 Self-Hosted Your data stays on your servers
♾️ No Limits Schedule unlimited posts, connect unlimited accounts
🔒 Privacy First No tracking, no analytics, no data selling

✨ Features

📅 Visual Calendar Drag and drop posts across your content calendar
✍️ Post Composer Create and preview posts for multiple platforms at once
🖼️ Media Library Upload images and videos with automatic optimization
👥 Team Collaboration Invite team members with role-based permissions
🏢 Workspaces Manage multiple brands or clients separately
👀 Multi-Platform Preview See exactly how your post will look on each platform

🌐 Supported Platforms


X (Twitter)

LinkedIn

Facebook

Instagram

TikTok

YouTube

Pinterest

Threads

Bluesky

Mastodon

🚀 Getting Started

Get TryPost running in minutes:

📖 Installation Guide Step-by-step setup
🐳 Docker Setup Run with Laravel Sail
⚙️ Configuration Environment setup
🔗 Platform Setup Connect your social accounts

🤝 Contributing

We love contributions! See our Contributing Guide to get started.

  • 💬 Discussions - Ask questions, share ideas
  • 🐛 Issues - Report bugs, request features

📄 License

TryPost is licensed under the Functional Source License (FSL).

✅ You can: Use for personal or business use, self-host, modify and contribute.

❌ You cannot: Offer as a competing SaaS, white-label and resell.


If TryPost helps you, please give us a ⭐