Internal Announcements
Communication · React + Node (Express) · 18 @molecule/* packages
Company town hall with announcements, acknowledgments, comments, and threading — with built-in Stripe-backed subscription tiers
Try it
Opens instantly. Runs on sample data, so changes reset on reload.
What is inside
Screens (14)
- Login
/login - Signup
/signup - ForgotPassword
/forgot-password - ResetPassword
/reset-password - Feed
/feed(signed in) - AnnouncementDetail
/announcement/:id(signed in) - Composer
/compose(signed in) - MyAcknowledgments
/my-acknowledgments(signed in) - Analytics
/analytics(signed in) - Settings
/settings(signed in) - Profile
/profile(signed in) - Notifications
/notifications(signed in) - Search
/search(signed in) - TeamDirectory
/people(signed in)
Data model (13 tables)
- acknowledgments — id, announcement_id, user_id, acknowledged_at, ip, created_at, updated_at
- announcement_audiences — id, announcement_id, kind, target_id, created_at
- announcement_categories — id, name, color, icon, created_by, user_id, created_at, updated_at
- announcement_comments — id, announcement_id, parent_id, author_id, user_id, body, edited_at, created_at, …
- announcements — id, title, body, body_html, category_id, author_id, user_id, audience, …
- comments — id, resourceType, resourceId, userId, parentId, body, editedAt, createdAt, …
- devices — id, createdAt, updatedAt, userId, name, pushPlatform, pushSubscription, hasPushSubscription
- notifications — id, createdAt, updatedAt
- reactions — id, resourceType, resourceId, userId, type, createdAt, updatedAt
- resource_tags — id, tagId, resourceType, resourceId, createdAt
- tags — id, name, slug, color, description, createdAt, updatedAt
- view_events — id, announcement_id, user_id, viewed_at, created_at
- payments — id, createdAt, updatedAt, userId, transactionId, productId, platformKey, data, …
API (4 handlers)
- announcements
api/src/handlers/announcements.ts - categories
api/src/handlers/categories.ts - comments
api/src/handlers/comments.ts - team
api/src/handlers/team.ts
Subscription tiers
free / pro / team — gated by: maxAnnouncements, maxCategories, maxComments, advancedFeatures, canExport, retentionDays
Built from 18 @molecule/* packages
@molecule/api-database-postgresql@molecule/api-email-templates@molecule/api-emails-mailgun@molecule/api-entitlements@molecule/api-payments-stripe@molecule/api-permissions-custom@molecule/api-push-notifications-web-push@molecule/api-resource-comment@molecule/api-resource-notification@molecule/api-resource-payment@molecule/api-resource-reaction@molecule/api-resource-tag@molecule/api-resource-user@molecule/api-search-meilisearch@molecule/app-billing-react@molecule/app-data-table@molecule/app-markdown@molecule/app-virtual-scroll
Required secrets
DATABASE_URLPostgreSQL connection stringMAILGUN_API_KEYMailgun API key for announcement notifications
The @molecule/* packages are Apache-2.0. The app you build from this template is yours to export and self-host. Licensing