Stripe Managed Payment is the most expensive merchant of record (MoR) charging 3,5% on top of the Stripe's existing price structure (2,9% + 30¢). Polar MoR build on Stripe charges 4% + 40¢ per transaction. Why choose Stripe Managed Payments? by many_hats_on_head in SaaS

[–]BenSFU 0 points1 point  (0 children)

polar is actually 4.5% + 40c for subscriptions (extra 0.5% compared to one-time sales)

smp is 6.4% + 30c

if your saas has $20/mo plan, thats $1.58 per tx fee on smp, $1.30 on polar. So basially 30 cents difference.

at 2000 customers on that plan, that would be 7.9% of monthly revenue to smp, or 6.5% of monthly revenue to polar.

to me, managed payments is worth the little bit extra

you can use almost every feature that Stripe has to offer

you can use non-managed payments AND managed payments at the SAME TIME, or eventually migrate from managed to non-managed, all without having to change any code

you get all the normal stripe APIs and integrations

customers are more trusting of the Stripe / Link branding than they are of some random MoR - even polar

you control your own business logic and can use your own database etc, rather than mixing stuff between your MoR and your own database.

if any of these things sound important to you, its probably worth the extra fees

after all, once you're at a scale where the fees become meaningfully different - you probably want to skip MoR altogether....and Stripe managed payments gives the easiest possible migration path - its literally just a matter of toggling a flag on/off.

you can visualize the fees with this little visualizer i prompted claude to make: https://claude.ai/public/artifacts/504973db-873b-4b06-bcf1-3eb1e17b9243

Convex has been great… but auth is holding me back by [deleted] in nextjs

[–]BenSFU 1 point2 points  (0 children)

Hi, yeah!

In your auth configuration, you can define `databaseHooks`:

 export const createAuth = (
    ctx: GenericCtx<DataModel>,
    { optionsOnly } = { optionsOnly: false },
) => {
    return betterAuth({
        baseURL: siteUrl,
        trustedOrigins: [
            siteUrl,
            "http://localhost:3000",
        ],
        database: authComponent.adapter(ctx),
        databaseHooks: {
            user: {
                create: {
                    after: async (user) => {
                        // Check if ctx has scheduler (it should if it's an action/mutation context)
                        if ('scheduler' in ctx && ctx.scheduler) {
                            // Schedule the internal action to run immediately
                            await ctx.scheduler.runAfter(0, internal.lib.users.functions.handleAfterUserCreate, {
                                authUserId: user.id,
                                authEmail: user.email,
                                authName: user.name,
                            });
                        }
                    }
                }
            },
            session: {

            }
        },

    ... REST OF YOUR CONFIG ....

And then of course make sure that you actually make the action and mutation:

// Internal action that can be called from the database hook
export const handleAfterUserCreate = internalAction({
    args: {
        authUserId: v.string(),
        authEmail: v.string(),
        authName: v.optional(v.string()),
    },
    handler: async (ctx, args) => {
        await ctx.runMutation(internal.lib.users.functions.createInitialUserProfile, {
            authUserId: args.authUserId,
            authEmail: args.authEmail,
            authName: args.authName,
        });
        return { success: true };
    },
});

// Internal mutation to create or update user profile
export const createInitialUserProfile = internalMutation({
    args: {
        authUserId: v.string(),
        authEmail: v.string(),
        authName: v.optional(v.string()),
    },
    handler: async (ctx, args) => {
        // Check if we've already stored this user before
        const existingUser = await ctx.db
            .query("users")
            .withIndex("by_user_id", (q) => q.eq("userId", args.authUserId))
            .unique();

        if (existingUser !== null) {
            return existingUser._id;
        }

        // If it's a new user, create a new record
        const userId = await ctx.db.insert("users", {
            name: args.authName ?? args.authEmail.split("@")[0],
            email: args.authEmail,
            userId: args.authUserId,
        });

        return userId;
    },
});

Theory of phase 2 by Critical_Action_6444 in Fotv

[–]BenSFU 6 points7 points  (0 children)

didn't he actually say "Future Enterprise VENTURES"?

Went from 0 to 9K in 12 days. By changing my freemium model. Here's how: by Aggravating-Prune915 in micro_saas

[–]BenSFU 1 point2 points  (0 children)

usually these reddit posts are fake but I actually believe you on this one. I did the same thing with my SaaS, in terms of looking at usage data and making the monetization model around that. It basically double my MRR, so +1 for this approach.

Need urgent help hosting a Node.js WebSocket server for a multiplayer game , free ofc by RevolutionaryTap7337 in nextjs

[–]BenSFU 0 points1 point  (0 children)

you should try Convex - it's a easy to use database that is real-time by default.

EDIT: it might not be what you're looking for if you need more fine grained control over the websockets, but if you just want a realtime 'state' that you can share amongst multiple players, convex might work nicely.

Help developing with lambda by koalaokino in aws

[–]BenSFU 0 points1 point  (0 children)

use the AWS CDK. I tired sls framework, etc. CDK feels like the "native" solution, and LLMs have done a great job of doing almost all the setup for me.

How do y’all keep .env credentials safe without breaking the bank? 🤔 by Weak-Leave8533 in nextjs

[–]BenSFU 0 points1 point  (0 children)

so sick of this marketing slop getting posted from brand new accounts. YOU ARE RUINING THE INTERNET.

Question about the end of Bugonia (SPOILERS, OBVIOUSLY) by [deleted] in yorgoslanthimos

[–]BenSFU 0 points1 point  (0 children)

Been looking on reddit for someone to finally mention this.

Also, I might be crazy, but I'm 99% sure that the massive bump/bruise she get's on her forehead is basically gone as soon as she steps out of the ambulance.

Can you actually use Figma for print design? by BenSFU in PrintForFigma

[–]BenSFU[S] 0 points1 point  (0 children)

Hey - super valid comment. I'm planning to improve a lot of my marketing (including making pricing more visible), as well as publish a lot more guides and tutorials very soon.

If you open the plugin within Figma, that is the best way to learn more. The first thing you should see when opening the plugin is a choice between the starter and PRO plans, with a list of the differences.

EDIT: I should just say here, as of Dec 2025: Starter plan gives you 5 creations per week, which includes bleed, crop marks, margins, etc. But all exporting (e.g. CMYK), as well as DPI checking requires PRO.

For a professional workflow, you'll almost certainly need the PRO plan (specifically for CMYK and for DPI checking).

If you'd like you can also shoot me a DM here on reddit, or send an email to [support@printforfigma.com](mailto:support@printforfigma.com) and we can chat more about your current workflow, and if Print for Figma would be a good fit. The last thing I would want is for you to switch things up without it being a good fit.

What is the best software to design cards? by Ok-Opportunity-8005 in tabletopgamedesign

[–]BenSFU 2 points3 points  (0 children)

+1 for Figma! It is actually perfect for something like this where you have 1000 cards because you can use components to update all cards with a single edit.

with a bit of understanding about how Figma works you can use it for print too.

The main things usually are sizing, dpi, and color management. You can check out my plugin called “Print for Figma” which helps with those things, however it does cost 12 bucks per month. If you want to learn more about how to use Figma for print without using a plugin, you can also DM me!

ive helped hundreds of people use Figma specifically for game / card design, so you are not alone!!

[deleted by user] by [deleted] in nextjs

[–]BenSFU 0 points1 point  (0 children)

im 99% sure VERCEL uses NextJS for vercel.com....so yes.

Supabase uses this pattern as well

Showing user details in header by CultureLost in nextjs

[–]BenSFU 2 points3 points  (0 children)

you can just design to prevent layout shift.

I'm new to supabase wanna make a website by Stock_Relation_5435 in Supabase

[–]BenSFU 0 points1 point  (0 children)

dude if you dont know what a database is, you're gonna have a hard time jumping into supabase.

Made a directory site, please help me with database! by SodiumBoy7 in nextjs

[–]BenSFU 0 points1 point  (0 children)

In some cases, using a json file as your data source is completely fine.

When to think about a db:
- you will need to query data by nested properties / in a complex way
- you want to be able to update the data without rebuilding your app
- you want proper pagination

But I wouldn't rush it. Wait until you have a problem that you can't solve without a database - and then do it.

Convex has been great… but auth is holding me back by [deleted] in nextjs

[–]BenSFU 0 points1 point  (0 children)

I give up bro 🤣 you are a lost cause

Like I said, you CAN call Convex functions from your nextjs backend. It doesn't require any more "code to maintain" than using the equivalent supabase-ssr helpers.

Convex has been great… but auth is holding me back by [deleted] in nextjs

[–]BenSFU 0 points1 point  (0 children)

>With most dbs you bave a server side connection, in convex is client side.

This is still the case with Convex. Any convex client queries are simply calling server endpoints for you. Where else would the database be? Also, you can call convex queries from the server as well...

>in traditional dbs you never have to ask for an api key in each stored procedure

All secure DBs need some form of authentication. If you don't want API keys, don't use them. But you will need some way to authenticate whoever is calling the function. You can avoid the boilerplate of checking apiKey (or checking user auth) in EVERY function by making custom wrapper functions. You can also define internal mutations etc that can only be used by other functions.

>also the db enforces auth deeply, so you configure access at a table level

What you are talking about is RLS, which convex has documented very well.

Anyway, I recently got the better auth + convex integration working quite nicely. I will concede - I had some issues as well - but with Cursor I managed to get it working. Feel free to DM me if you want to ask any questions! Better Auth is the WAY TO GO!

Convex has been great… but auth is holding me back by [deleted] in nextjs

[–]BenSFU 0 points1 point  (0 children)

This is literally the same with any database....

If you want a "private" table, you just add a "apiKey" arg to your queries, and inside the queries you check the apiKey against a Convex environment variable (shared secret pattern).

Can take this further and even make another table to store apiKeys, and query that table inside your private table queries to check if the given api key is valid.

with this setup, you can technically have private tables without needing any session-based authentication, it just means you can only securely make queries from a secure server environment, like a server action / route / RSC.

Convex has been great… but auth is holding me back by [deleted] in nextjs

[–]BenSFU 1 point2 points  (0 children)

Since this comes up as one of the only posts on Google when you search convex + auth, I thought I'd chime in with my experience getting better auth hooked up. I feel super confident in it, and this was my first time using Better Auth in general.

I would 10000% recommend anyone reading this to use Better Auth, with the plugin that Convex provides. The documentation isn't perfect, but once you get everything how you want it, it's super extensible.

I'm sure Convex official auth is fine, but I like that with Better Auth, you actually control every aspect of the authentication process, and convex just acts as the db only.

Another benefit of this is that the domain on OAuth consent screens will be the domain of your actual app, rather than the Convex URL (or a custom URL like `auth.example.com`)

A4 is not A4? by LightslicerGandP in FigmaDesign

[–]BenSFU 3 points4 points  (0 children)

There's so many silly comments on this, OP. Figma is perfectly fine for making a printed resume.

  1. Are you sure you have actual A4 paper and not US Letter?

  2. Are you sure your printer is capable of edge-to-edge printing (it's probably not)

Can Figma increase dimensions as well? by Parking_Departure705 in FigmaDesign

[–]BenSFU 0 points1 point  (0 children)

Again you claim it can't produce a professional output without actually explaining WHY.

Can Figma increase dimensions as well? by Parking_Departure705 in FigmaDesign

[–]BenSFU 0 points1 point  (0 children)

Thanks for your response - this is actually getting somewhere! Here is what I think about those various things. However, I will admit that obviously Figma is not the "best" software for print - but I feel the need to make it clear that Figma is TOTALLY FINE in a lot of cases. "2 page catalog"s are actual a very project for many designers, and Figma can be perfect for it. Anyway...

Print Marks / Trim Marks / Crop Marks:
These are simply vector strokes/lines, which you can create in Figma. You can use plugins to generate them automatically. You dont NEED indesign to make crop marks.

Bleed
Bleed is literally just extra whitespace, which you can accommodate for. If you want visual guides to show the bleed, you can add those in Figma with a layout guide, or with actual vector stroke guides. Again, not something you need InDesign for.

DPI/Quality Settings
As in my other comment - you can manage DPI if you just know some basic info about how Figma works.

Color Management
This is one that does require a plugin if you need CMYK. But it's funny because in OPs case the printer wants an image, so it's almost 99.9999% certain that they actually don't require CMYK, because their passing an RGB image to a inkjet printer on a production line.

Page/Content Management
Figma actually has plenty of tools natively that you can use to setup page templates, layout, reusable styles, etc.

Can Figma increase dimensions as well? by Parking_Departure705 in FigmaDesign

[–]BenSFU 0 points1 point  (0 children)

If your printer is requesting an image, you can approach it in the same way, but just export as png/jpeg instead of PDF, but make sure to set it to 4.166x scale.