SaasRock

The Remix (RR7) SaaS Boilerplate

Visit Website
June 3, 2023 SaasRock Update - Autogenerated API docs, Code generator, View Manager, Row Hooks, and more

May was focused on a ton of improvements (mainly for the ​Entity Builder​):

  • Autogenerated API Docs with Swagger (OpenAPI) and Postman
  • Code Generator support for new types (Multi-select, Range-number...)
  • ⭐ New Entity View Manager at /admin/entities/views
  • ⭐ New Subscriptions page at /admin/accounts/subscriptions
  • Row Hooks: Added functions to customize your BL (onBeforeGetAll, onBeforeEdit, onAfterEdit...)

And other minor fixes:

  • 🔨 Yes-Code: Multi-select missing in generated files #304
  • 🔨 Multi-select attribute not added to Yes-Code Helper #302
  • 🔨 Row Form Number Input cannot clear #303
  • 🔨 Footer Block needs translations #272
  • 🔨 Edit entity gives the wrong path... #268
  • 🔨 ActionResultModal no way to set title #264

Links:


What's Next?

I've said this many times, but hopefully this month I can pull any of these:

  • Knowledge Base (intercom-like help center, ​preview​)
  • Help Desk - Enterprise 🚀 _(accounts submit tickets)
  • Affiliates & Referrals - Enterprise 🚀 (create affiliate links to track signups/commissions)

Let me know what you think of these improvements on the ​Discord server​!

1 Comment

  1. 1

    Love the autogenerated API docs with Swagger – that's a huge time saver. I'm building in a similar space (TrendyRevenue, AI idea validation for founders) and recently had to implement API docs for my own analytics endpoints. Manually writing OpenAPI specs is painful, so seeing this baked into the entity builder is smart.

    The code generator supporting multi-select and range-number – are you generating frontend components too (like React hooks for forms) or just backend models? I've been wrestling with keeping frontend types in sync with backend schemas. Curious how SaasRock handles that.

    Also, Row Hooks for customizing business logic – onBeforeGetAll, onAfterEdit etc. – this is exactly what I needed when building TrendyRevenue's subscription tiers logic. Ended up writing middleware manually. Wish I had this.
    Great update. Following the project

October 28, 2022 Building an over-engineered low-code CRUD for SaaS apps

Watch the preview here or read the full blog post here.

What is CRUDAPVLMEIGK and why your SaaS needs it sooner or later?

Every software revolves around CRUD, supporting at least 1 of these:

  • Create (POST): Adding a record
  • Read (GET): Viewing a list of records
  • Update (PUT): Editing a record
  • Delete (DELETE): Removing a record

But when building SaaS applications - especially B2B apps, you quickly realize that CRUD is not enough. There should be something like CRUDP if we want to support row-level permissions, CRUDPV if we want to add custom views, CRUDPVL if we want to have account limits... and so on.

But how can we give steroids to standard CRUD views and forms?


Introducing CRUD 2.0 - aka CRUDAPVLMEIGK

  • [C][R][U][D]: Standard Create, Read, Update, and Delete rows.
  • [P]ermissions: Should I have permission to [C][R][U] and /or [D] this?
  • [A]PI: REST API to handle CRUD operations
  • Custom [V]iews: Save filters with a specific view name
  • Subscription [L]imits: Does my plan support adding 1 more record?
  • Co[M]ments: Letting your users interact in a specific record
  • [E]xport: A standard way to give your users their data (e.g. from .csv)
  • [I]mport: A standard way to quickly upload data (e.g. to .csv)
  • Ta[G]s: Categorize records with custom tags
  • Tas[K]s: Remind a user to complete a task on a certain record

If your SaaS application is a CRM, imagine building the CRUDAPVLMEIGK for every entity/model: Companies, Contacts and Opportunities.

Sooner or later, B2B users will ask for CRUDAPVLMEIGK features for every entity… or churn, as your software is not compliant (e.g exporting data).


The solution - SaasRock v0.7 Entity Builder

I'm about this 🤏 close to release SaasRock v0.7.0, which has more than 400 git changes (don't kill me) but also a ton of new features, especially for the Entity Builder.

Importing/Sharing Entities has never been easier

If you ever need help on debugging your entity properties, workflow, or custom views, just export them and hand the .json file to me:

/admin/entities

Creating Entities with 1 click (ok 2)

Before SaasRock v0.7.0 I seeded my system's entities (CRM Contacts & Deals), but now, I can start creating Entity Templates that contain entities metadata and how they relate to each other (e.g. Opportunities belong to Companies).

/admin/entities/templates/manual


No-code Routes & Blocks

Entities now have types:

  • App: Loads only at /app/:tenant/:entity
  • Admin: Loads only at /admin/entities/:entity/no-code
  • All: Both app and admin (e.g. CRM for both admins and customers)

For each Entity that you create, it will generate 9 full-stack routes:

List Route

  • Features: Pagination + Filters + Custom views + Export
  • File: $entity.__autogenerated/__$entity.tsx
  • Autogenerated Route: …/:entity

List Route

New Route

  • Features: Creates a Row + Sets relationships (parents/children)
  • File: $entity.__autogenerated/__$entity.new.tsx
  • Autogenerated Route: …/:entity/new

New Route

Overview Route

  • Features: Row Details + Workflow + Tags + Tasks + Comments + Share
  • File: $entity.__autogenerated/__$entity.$id.tsx
  • Autogenerated Route: …/:entity/:id

Overview Route

Edit Route

  • Features: Updates a Row
  • File: $entity.__autogenerated/__$entity.$id/edit.tsx
  • Autogenerated Route: …/:entity/:id/edit

Edit Route

Share Route

  • Features: Sets permissions (who can view/update/comment/delete this?)
  • File: $entity.__autogenerated/__$entity.$id/share.tsx
  • Autogenerated Route: …/:entity/:id/share

Share Route

Public URL Route

  • Features: Lets unauthenticated users overview the Row
  • File: app/routes/public/$entity.$id.tsx
  • Autogenerated Route: /public/:entity/:id

Public URL Route

All-in-one Route

  • Features: List + Uses Remix useFetcher to call the New and Edit route loaders and actions to keep CRUD in the same URL
  • File: $entity.__autogenerated/__$entity.all-in-one.tsx
  • Autogenerated Route: …/:entity/all-in-one

You can replace the List route with this.

All-in-one Route

All No-code Routes & Misc Blocks menu

  • Features: Overview of your entities and their autogenerated routes
  • File: app/routes/admin/entities/no-code/index.tsx
  • Autogenerated Route: /admin/entities/no-code

All the No-code Routes & Blocks


Continue reading...

3 Comments

  1. 2

    I thought this was a joke when I hit 'CRUDAPVLMEIGK'

    Then I figured out you were serious.

    Suggestion, use a different acronym.

    Something like CRUD++?

    Something someone can actually say in a conversation.

    1. 1

      Haha yeah! I'm joking with the term, I was looking after my niece watching this.

  2. 1

    Hey Alex! Cool product dude!

    Have you thought about how to manage permissions? Eventually, all backend as a service tools come upon this challenge of how to allow users to configure access control rules over the db entities.

    Firestore invented their own declarative permissions language based on db paths and ABAC.

    8Base invented their own permissions language too.

    AppWrite is doing the same.

    There's a new open source solution that can be used for fine grained access controls. It's called Cedar, and Amazon Verified Permissions is a managed version of it.

    Would love to chat with you about it.

July 7, 2022 My first "tutorial" video

Building a SaaS with SaasRock — Day 1 — Set up and Taxpayers model

This July I want to have my own SaaS in production using SaasRock as the starting point, I will try to make many videos on the decisions and steps I take.

Click here to watch the video.

TLDW:

  • Explained what I’m building — A SaaS for invoices and expenses.
  • Set up a private repository with the latest SaasRock release (v0.3.3).
  • Set up a remove upstream.
  • Removing the Sample Entities (Contracts, Employees, and Attribute Tests).
  • Fixing encountered problems.

In the next video, I’ll set up an inbox for accounts using the Postmark Inbound Address and try to use Supabase Storage for email attachments.


Join to SaasRock’s community or subscribe to the newsletter to get notified on future videos!

Comment

July 4, 2022 Sending the first email to 1k "customers"

I just scheduled the first email to 1k GumRoad "customers". Most of them downloaded the first release for free, that's why I have more than 1k emails.

This is the copy I'll send tomorrow (July 5th) at 9 am:

Email

Let me know what could be improved, thanks!

Comment

June 29, 2022 SaasRock v0.3.0 Preview - Row Filters, Tags, Tasks, Comments, and Workflows

I wanted to build this month a SaaS app using SaasRock. But my gut told me to empower the Entity Builder before that, so I guess my SaaS idea will have to wait for July.

I'm having a blast with Remix, Tailwind CSS, and Prisma, I feel like every idea that comes to my mind, is 1 hour away from reality.

Tomorrow night or Friday morning I'll release all these new features:

Comment

June 29, 2022 SaasRock's Preview - Row Filters, Tags, Tasks, Comments, and Workflows

I wanted to build this month a SaaS app using SaasRock. But my gut told me to empower the Entity Builder before that, so I guess my SaaS idea will have to wait for July.

I'm having a blast with Remix, Tailwind CSS, and Prisma, I feel like every idea that comes to my mind, is 1 hour away from reality.

Tomorrow night or Friday morning I'll release all these new features:

Comment

June 23, 2022 From 800 MRR to 2.9k MRR in 1 night

In 1 night I got 3 different customers:

  • 1 for my 1-year of updates (one-time payment).
  • 1 for the per-month updates (subscription).
  • 1 for custom software development using SaasRock.

This is even more motivation 😁!

3 new customers

35 Comments

  1. 4

    Congratulations 💪.
    But please clean the Pricing page ( Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut... all over the page )

    1. 1

      Of course! I'll make it more clear because it's supposed to be Lorem ipsum as they're demo prices that you can change by going to the /admin/setup/pricing page.

  2. 2

    Congratulations!

    Correct me if I'm wrong but the value add here for a customer is time + cost to launch?

    1. 1

      Thanks a lot! Correct, right now is pre-launch access. When v1.0 is ready, it'll cost something like Gravity, and I hope to have a no-code solution as well, not to take down Bubble or Webflow, but to build simple SaaS MVPs to validate your idea, and downloading the code for custom customization if needed.

      1. 1

        Clean idea - best of luck

  3. 2

    Wow, that sounds magnificent.

  4. 2

    That's very encouraging. Onward and upward.

  5. 2

    That's terrific work, Alexandro. Congrats 🤩

    Getting validation overnight gives a fantastic feel for sure🙌

    1. 2

      I needed the validation 😀👌

  6. 2

    Awesome work! Keep up the hu$tle.

  7. 2

    Congrats. I believe soon there will be handful of open source powerful remix saas kit starters (there is already some). It is highly suggested to jump on freemium ship asap. Have a look at abp.io, they have done great work on freemium with huge growth over last 3/4 years.

    1. 1

      Thanks a lot! I’d love to make this open source and charge for premium support or a cloud solution, e.g. Appsmith. I hope this is open source, it could be once it has enough funding - just as Remix did - and compensate early members somehow, but I’m talking about a minimum of 12 months working on this. I like abp by the way, I tried to make my own .NET boilerplates but with React, Svelte and Vue (2 and 3), they didn’t work.

  8. 2

    Inspiring, keep it up!

  9. 2

    Congrats! Keep it up 👏🏻

  10. 2

    Impressive project - how long have you spent building this? And are you a one person team?

    1. 1

      3 months today: https://www.indiehackers.com/post/launching-a-remix-saas-kit-this-monday-e7844b870b. Thank you, and yes it’s only me. I have a mentor tough, Chris Kluis knew me because of that post/tweet with > 600 likes.

  11. 2

    I think you should separate the demo and your product web page, the pricing demo page is confusing => and it is easy to overlook the "demo" word in the title.

    1. 2

      I’ll do that, thanks 👌

  12. 2

    Very inspiring! How big was your audience and what caused this spike?

    1. 1

      Hmm I’d say 250 twitter followers, I usually post products there, but I also post here, dev.to, medium, hashnode, HN, linkedin, tealfeed… I don’t think I have an audience yet, besides SaasRock’s customers. Also I have a 8 open source projects. I have > 1,000 GumRoad customers, 900 of them were from a free v0.0.1 remix saas kit I posted, but I have not sent emails to them, I’m waiting until this gets to v1.0.

  13. 2

    Nothing like cold cash to verify business 🚀

    1. 1

      For sure! 😀

  14. 1

    Congrats on making both business and technological progress!

    I see that you're using Prisma. How do you handle server side errors with Prisma? With database operations there can arise a multitude of errors. Prisma offers some error codes and messages but they don't seem to cover all cases and I find them tedious to handle. What's your experience with it?

    1. 2

      Thanks Alexander! I've only had these types of errors in Prisma:

      • Selecting wrong fields. Solution: make sure always to use typescript. Also, Prisma tells you something like "did you mean...?".
      • Duplication (@unique). Solution: validate before creating/updating.
      • Unknown resource. Solution: I get the row before updating or deleting it.
      • Depends on another object. Solution: onCascade:true, but not on every model.

      I can't think of other errors I've got.

  15. 1

    I tried hard but can’t find any pricing information for your product. It is something I would conisder

    1. 1

      Any suggestions? You could click on the “ Get pre-launch price” button at the landing page (hero section).

      1. 1

        I clicked on that but didn’t see a price. Using mobile.

        1. 1

          I’ll check it out, it should send you here.

  16. 2

    This comment was deleted 2 years ago

June 18, 2022 SaasRock v0.2.7 - Roles, Permissions, Groups, and Row-level visibility

v0.2.7 has been released with security features - saasrock.com.

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.

Closed issues

  • ✅ Add Page: Roles and User roles #14
  • ✅ Add Page: Object-level permissions (Create, Read, Update, Delete) #15
  • ✅ Rename the "tenant" nomenclature to "account" #52

Roles & Permissions 🪨

Click here to view the demo.

Roles

Roles

Permissions

Permissions

Set Admin Roles

Set Admin Roles

Set App/Account Roles

Set App/Account Roles

Row-level visibility & permissions 🪨

Click here to view the demo.

Groups

Groups

Private (default)

Private (default)

Share to Account Members

Share to Account Members

Share to Specific Groups

Share to Specific Groups

Share to Specific Users

Share to Specific Users

Set Public

Set Public

Public row view

Public row view

2 Comments

  1. 2

    Congratulations on the release of roles & permissions for SaaSRock.

    I think SaaSRock addresses the need-gap: Boilerplate for building SaaS products posted on my problem validation forum.

    If it does, Then you're welcomed to explain how SaaSRock addresses that problem so those who need it can find it easily.

June 1, 2022 $694 MRRafter 1 week of pre-launch

Hey everyone!

This is my first recurring +500 MRR stream, besides my job of course. This was achieved after one week of pre-launching SaasRock.com, with a few blog posts and Twitter threads.

I don’t want to be the “successful” guy that earns money from “how to earn money” books. My subscription is for on-going development for a SaaS framework called SaasRock, built with Remix, Tailwind CSS and Prisma. And this month I want to make an actual SaaS (Invoicing software for Mexican companies) to validate the framework.

I set up a community discord (15 members), a newsletter (3 members), got 80 twitter followers (248 total) and 21 medium followers (22 total). Before going for the subscription model, I sold the framework (1 year of updates) for 299 and got around 2k in the first 2 months. But the subscription model, now at 99 (or 149 for upcoming enterprise features) feels right since 1) I can secure on-going development and 2) I must deliver new SaaS features to my customers on a monthly basis.

Often I underestimate what I’ve achieved, but this time I’m really proud with this 2 month project :)

Comment

About

I've built with Vue, Svelte, Next, NET... but Remix clicked for my B2B web apps.