jamwt
jamwt6mo ago

Notes from our Internal "Build Convex Components Day"

Today our team is building Convex components using our internal alpha. Here are some of the projects the team is working on (or has already finished): * Workflow system (Inngest clone). A nice DSL that uses async/await to express several steps in a long-running workflow. Automatically retries each step as idempotent upon temporary failures. * Geospatial Indexing. Provides high performance geospatial indexing by using Uber's h3 library + Convex's indexes. * Action retrier. A packaged up version of Convex's https://github.com/JamesCowling/convex-action-retrier that uses components and a client library for less boilerplate. * Push notifications component. Integrates with common mobile push notification services. * Notification tray component. Client + server package for easily batching up messages for a user that they need to acknowledge within a product. * Payments component. Integrate with Stripe easiliy. * Presence tracking. Wrap up efficient, high performance presence system into a component. * Migrations. Feel out moving the various migrations helpers ( https://stack.convex.dev/migrating-data-with-mutations ) into a component * CDN Component Automatically reflect static assets out of Convex storage into a CDN like cloudflare * Expiring Storage URLs Wrapper that makes file storage assets only valid for some specified period of time * Web Crawler Crawls a website in the background and makes the contents available to your Convex app. * Sharded Counter. A port of @Web Dev Cody 's high-performance counter. We'll follow up here with more notes & more components as we get them. So far, pretty exciting! Fire away with any questions.
GitHub
GitHub - JamesCowling/convex-action-retrier: Helper function to ret...
Helper function to retry a Convex action until it succeeds. - JamesCowling/convex-action-retrier
Stateful Migrations using Mutations
Online migrations in Convex using mutations. Including a helper to track migration state!
12 Replies
erquhart
erquhart6mo ago
No questions yet, but love the transparency here, thanks for sharing this!
Khalil
Khalil6mo ago
I'm curious to learn how the web crawler works? Afaik puppeteer or playwright don’t work in Convex. Is it for SSR content only?
KinKon
KinKon6mo ago
Exciting. Let me know if you need alpha / beta testers
Gustav
Gustav6mo ago
Yes, this is super exciting stuff, can't wait for more details! 🤩
jamwt
jamwtOP6mo ago
that's one @Pasha worked on, he might be able to say more
adam
adam6mo ago
Sounds great! What is your approach to striking the right balance between abstraction and flexibility? Will you adopt the shadcn "copy-paste" approach with Convex components?
jamwt
jamwtOP6mo ago
they'll be open source projects on npm (and GitHub) but nothing is stopping anyone from forking/customizing when their team needs something different--and obviously, if it feels a universal improvement etc, we'll be happy to review PRs and so on we'd love for one day a lot of the best and most popular components to be built by other teams that don't work at convex, but we'll be putting in a lot of initialization energy for the most common needs out of the gate
mikeysee
mikeysee5mo ago
Workflow system (Inngest clone). A nice DSL that uses async/await to express several steps in a long-running workflow. Automatically retries each step as idempotent upon temporary failures.
ooo nice, this sounds a bit like temporal.io, I have been thinnking about this on convex for a while
jamwt
jamwtOP5mo ago
yep! in our view systems like temporal and convex will converge over the next 5-10 years
hasanaktasTR
hasanaktasTR5mo ago
Hello @jamwt What is the progress in CDN? I mentioned it in another title. We experience high latency in accessing photos from Turkey even when they do not exceed 1MB in storage. We are eagerly waiting for the CDN layer. Other developments are also exciting. Good luck.
Pasha
Pasha5mo ago
Yes, SSR content only for now.
jabra
jabra4mo ago
can't wait for Expiring Storage URLs Wrapper that makes file storage assets only valid for some specified period of time

Did you find this page helpful?