⭐ New Enterprise template: YouTube scraper (I built TubeData.co with it)
🐞 Permissions: Added verifyUserHasPermission or requireAuth in missing places
🔨 SaasRock checker: removed version checker calling saasrock/api/version. It was meant to start a license-checker to prevent piracy but I never implemented it.
🔨 Novu: Fix notifications button (finally!)
🔨 Stripe: Upgrade to v13 so now -100% coupons on one-time prices can be applied
🔨 Minor upgrades: Remix 2.12.0 and Headless UI 2.1.7
⭐ Rate limiting per minute/second (Enterprise-only)
⭐ JsonProperty Types: added wysiwyg and monaco
⭐ Pricing Features: order, clear, and 'copy from product' buttons
⭐ Knowledge Base: New docs layout (one-page)
⭐ CRM: Sync contacts from Users and ConvertKit
⭐ Email Marketing: replace current email editor (react-quill) with novel/monaco like blog
⭐ saasrock-portal 1.2.0
⭐ Entity Builder Import: Select tenant (or admin) to import
🔨 SEO sitemap.xml: fix articles in sitemap lastmod fix (had knowledge base creation date)
🔨 CRM: Create contact when user registers
🔨 Scripts Injector: head and body scripts at /admin/settings/general
🔨 Vercel: Fixed i18n (thanks @praneybehl!)
🔨 Delete heavy dependencies: pdfjs-dist (CDN instead), octokit, hyperformula
🔨 New analytics period filters: ytd, mtd, wtd, last hour, last 10 min
🔨 Dashboard: duplicate scrolls minor fix
🔨 Unit tests: fixed 8 tests
🔨 Remove InputText.uppercase and lowercase (rendering loop)
🐞 Email Marketing: fix pageSize creating a campaign selecting a contacts view
🐞 Portals: Analytics now have portalUserId (visitors, views, events)
🐞 Knowledge Base: dark mode fixes
🐞 Header fix: withThemeSelector
🐞 Known error fix: When working with portals, if you get 'Error: insert or update on table "AnalyticsUniqueVisitor" violates foreign key constraint "AnalyticsUniqueVisitor_portalId_fkey"': run this in your database: DELETE FROM "AnalyticsUniqueVisitor" WHERE "portalId" is not null and "portalId" not in (select "id" from "Portal"). And apply the changes to the database again.
❗ SERVER_URL and DOMAIN_NAME: removed these unnecessary and annoying environment variables
❗ baseUrl: string renamed to getBaseURL(request: Request)
❗ Header and Footer: withThemeSwitcher → withDarkModeToggle
❗ Header and Footer: withLanguageSwitcher → withLanguageSelector
❗ FAQ: Items are no longer an array of 'front.faq.questions[]' but 'front.faq.questions.q1', 'front.faq.questions.a1'… because Vercel can’t find t(…).map function.
❗ Removing the /components directory routes
❗ defaultSocials.ts: add full URLs to defaultSocials
❗ JsonPropertiesUtils: 'properties' changed to 'attributes'
Implementing custom code is now easier with RowRepository and RowModel. Tenants can now have their own blog @ /b/:tenant-slug. And Prompt Mapping to create from AI.
You can now seamlessly implement GPT in real-world applications and enjoy the benefits of new property types, designed to simplify no-code MVP iteration.
Implemented Feature Flags management in the admin portal + manually adding users + deactivating accounts + tenant IP logging + filtering users by last login.
Page Blocks for building custom pages with existing (or custom) blocks, Send notifications with Novu, and create built-in Onboarding flows (enterprise 🚀).
SaasRock v0.7 - Entity Builder on steroids, CRM 2.0, and Email Marketing 🚀
This is a major release with a lot of new features. Entity Builder 2.0 with 9+ Autogenerated CRUD routes; CRM module 2.0 to manage your Companies, Contacts and Opportunities; and Email Marketing module for sending marketing emails to your CRM contacts.
The first release of SaasRock came with only 2 pricing models, Flat rate and Per-seat. Soon enough I'd realize 2 things: I need to support more pricing models.
The entity builder just got stronger with a lot of new features for every created Row. Plus a kanban board component and API limits based on the account's subscription.
Done
Entity Row Filters by URL, Tags, Tasks, Comments, and Workflow
URL filters for /admin/accounts,users,roles,permissions
Upgrade remix to 1.6
No se pueden asignar imágenes a un campo de una entidad si hay varios campos de imágenes
Update Guide
API Key Limits should have configurable interval
Enable no expiration for API Keys
Plan Limits for API Keys and Usage
Entity Details Views: Page (default) and Modal
Entity Form Views: Page (default) and Modal
Entity List Views: Table and Kanban board (with Pagination?, show/hide columns, default filters…)
Dashboard → Entity stat
Add Module: Workflows with Custom Forms and Custom Fields
Added issues
⌛ Admin should be able to manually change the plan for all accounts
⌛ Single Sign On
⌛ Missing the currency on the pricing
⌛ Improve Registration/Onboarding
⌛ Limit the users (anti-scraping)
⌛ Affiliate Management
⌛ Deploy with Docker
⌛ Use Supabase API for file storage (RowValueMedia)
Added admin and application Roles & Permissions for page views and actions. Added application Groups and Row-level visibility - only you, public, or share with account members, groups, or specific users.
Custom Entities with Autogenerated Views/Forms and API. Integrate with other apps using Webhooks. Added the PER_SEAT pricing model. Added /documentation pages.
Done
Rebranding
Testimonials
Upcoming Features
Pricing CTA
Newsletter
Entity Builder
Autogenerated Views and Forms
Autogenerated API
Entity Webhooks
Plan Entity Limits
Per-seat Pricing Model
Documentation
Added issues
⌛ Enable no expiration for API Keys
⌛ Plan Limits for API Keys and Usage
⌛ Entity Details Views: Page (default) and Modal
⌛ Entity Form Views: Page (default) and Modal
⌛ Entity List Views: Table and Kanban board (with Pagination?, show/hide columns, default filters…)
⌛ TopBanner per-page manager, e.g. Pre-launch pricing!
⌛ Log button clicks
⌛ Log page views
⌛ Let the Admin change the Tenant/Account alias, e.g. Company
⌛ More entity property variants
⌛ Table: Query text with URL debounce
⌛ Feedback page: Let tenants submit and vote ideas, e.g. feedback.canny.io
TLDR: We use cookies for language selection, theme, and analytics. Mehr erfahren. TLDR: We use cookies for language selection, theme, and analytics. Mehr erfahren