Functions catalogue for use with RedwoodJS

Hi friends -

I’ve been reading and chatting with people in the community about the challenges in provisioning Databases for use with RedwoodJS. I have created some automation using Terraform and Pulumi that should help those allergic to infra provision and configure components like DBs and buckets from various cloud providers.

It should help many of you get past the problems I see in the forums, and I’d love to find some people to give me feedback on these tools…

but thinking more about it, i wonder if it would be more appropriately JAMstack to provide you with blackbox functionality at a higher level of abstraction?

What I’m thinking is something like a catalogue of functions that are searchable by use case. Think of Functions examples - Netlify Functions or the workflow in Blockspring.

For example, let’s say you were looking to add Github functionality to your app - you’d search in something like Automate reports – Blockspring
to see github based functions here: GitHub Data on – Blockspring
or go directly to a specific use case - which has a nice workflow flow to tell you what you need to use the api: GitHub - Post an Issue – Blockspring

I can add automation to collect collect any secrets/env vars, add the code to whatever deployment tool you’re using (vercel or netlify or whatever), then deploy it / provision it (maybe using the aws-serverless deploy provider) for you automagically

I’m really curious if:
a. this makes any sense how i’m explaining it. i can definitely SHOW you what i mean but that’s tough when you gotta write it into a forum post :stuck_out_tongue:
b. this seems like it would have value to you (or could have value if you had XYZ things too)
c. if you’d rather just be able to provision the infra components instead

Anyone have a couple min to chat with me about this? Thanks!

1 Like

:exploding_head:

I mean… dude, this is a big idea. Curious to understand specifically where you are in the implementation process.

Remind me about a couple of ideas for near-term show-and-tell with some groups that might be interested. TBD

cc @dthyresson this feels of interest to you as well

@thedavid - I’m pretty excited about it. If you take a look at Blockspring (I was their first employee), it’s pretty much just that: a catalogue of functions that are searchable by use case, and an easy way to provision these functions. the difference is that they focused on a slack and spreadsheets as client (vs. JAMstack apps), and I want to do it Free and Open Source. :slight_smile:

in terms of implementation, it’s mostly proof-of-concept stuff. We have:

  • defined a first version of the config file underlying each function
  • started the search interface (it’ll look a lot like functions.netlify.com)
  • have a CLI skeleton (i.e. a hodgepodge of commands/scripts right now) for NextJS/Vercel.

The scripts are:

  • grabbing a functions code and metadata from a config file
  • asking the user for secrets & pushing them into Vercel
  • doing the other random configuration stuff needed to get the code to run as a Vercel function
    upon your next commit.

Definitely open to changing the implementation and direction if it can make things more useful. This is just one of those things I wish existed… and would love it if i’m not the only one.

looking forward to chatting about the other ideas and with @dthyresson if he’s interested!

1 Like

Here are quick screenshots to show you what i mean about blockspring:

I think I understand this idea – and it is intriguing and in fact (if it is what I think it is) is something I was thinking could greatly benefit the repeater.dev project, too.

I had a look at

and I was :frowning_with_open_mouth: surprised at how un-developer friendly it was. It’s a link to a gist or a repo or an npm – they are all different – and it is up to you to figure out how to integrate it in your app.

I then read this comment from @peterp about running setup over http:

In the future I would would love to figure out a way to make it easy to run setup commands over http (which was mentioned in the original spec)

and :thinking: I see something coming together here.

So, let’s take the repeater.dev case since it has a practical use case and uses a function and needs some setup.

And while I know mail, slack, sms is the common function snippet to use, to me it is the todo list or blog of hello world apps to help discussion.

:point_right: User :closed_book: Story :watch: Time

After placing an order, I will receive an email in a week’s time asking me how I liked my purchase.

For repeater.dev this means that after the Order service places the order, it will schedule a callback endpoint in 7 days time at 9am on the user’s timezone to send them an email/.

What I need:

  • service (or function) to schedule a job with repeater that identifies the orderId or userId to receive the email at a user-defined time
  • repeater.dev account and envs
  • function to send mail (for simplicity argument will just use Postmark)
  • logic to check the user’s profile to get TZ etc
  • Postmark account and envs
  • probably some JWS-based security validation to ensure the function call is ok
  • and email template with maybe more envs
  • maybe more stuffs

The idea is that there would be a packaged up unit … a service, config, some functions, a lib or two … whose bundle could be installed and configured by the RW developer via

yarn redwood setup repeater-scheduled-mail

This command would fetch the bundle over http, extract and run a setup based on some toml config in it to

  • save the functions
  • add the service
  • tell them how to signup for Postmark and Repeater (if no account)
  • add envs (as you said even prompt via command link for them)
  • ask when mail should be sent (in a ISO duration)
  • maybe even a test (crazy! :stuck_out_tongue_winking_eye:)
  • etc

And after “not much work” they can

and after not much work, the user has a way of scheduling an email with a function that’s secure, and that can be re-used in other scenarios for good.

Then a site would have library and catalog of these with some awesome UI/UX to see what’s in the bundles and are tagged with the type of function and 3rd party services and what deploy targets they run onand give you that nice short setup command and off you go.

I actually have a name for this product :wink:

I’ll share if I am on the right track – if not, anyone want something like the above?

3 Likes

@dthyresson - you’ve pretty much got what I’m thinking and described the demo/POC that I’ve put together. I had figured it would be broken out from redwood so my command was

immdom create repeater-scheduled-mail

happy to share more if you’ve got 10-20 min… and also interested to hear your name for it.
mine is “Imminent Domain” or immdom for short :slight_smile:

if it wasn’t clear - i would REALLY want this. think about how many times people rewrite the same API wrappers (I’ve done Salesforce at least 3 times) - it’s like trying to re-craft a wingnut every time you put together a new bike, rather than ordering one from a catalogue. classic opportunity for “conceptual compression” as DHH puts it.

let’s talk - there are lots of applications, and i would love to be a part of making this happen…

1 Like

Great example! Can you two please make this happen? :smiley: I’d love to have that as a plug-n-play kind of thing!

https://pnpfn.com is not taken! :smiley: (and .io and .dev are free to grab too)

1 Like

@Tobbe - actually https://pnpfn.com is taken.
.
.
.

by me!
image

consider it donated to the cause. i also got pnpfn.net

4 Likes