solias99
Joined 6 years ago
Joined 6 years ago
Some reasons listed below:
1. Gpt hallucinates shadcn's big data table implementation more often than not. Also, you don't have props for everything by default (page size, filtering, sticky columns etc)
2. We have certain rules we ask our AI to stick to, such as always putting a table in a card and consistent padding. So there's lesser cognitive effort in you thinking about how to style your tools.
3. Current LLMs are shaky with next14 right now, especially on where to use server and client components.
We mostly shrunk away from pitching the AI because we thought people will find immediate value in the starter and be able to use it (like our existing users/customers), but in hindsight that was a mistake, especially considering the AI is already decently valuable.
2. Easy to make API calls.
3. Easy to reason about server/client component boundaries
Makes it easy for an LLM to write code without all the cruft/boilerplate.
This is something we're actively working on fixing. That's where we're going with the project as a whole!
The value will be in closing that feedback loop:
1. Here's the shape of the data coming in from endpoint /api/xyz. Currently, generating an endpoint with AI with this much nuance is very low in terms of success rate (and I think is what you're talking about).
2. However, once you know the endpoint and what the data looks like, our tool becomes valuable because you can just specify in natural language, which component you want to use, and how it has to be laid out on the page. Several people will prefer natural language over dragging and dropping UI elements on a screen. And the success rate is far higher for something like this.
If this is my workflow most of the time, then surely this can be more streamlined. The way to streamline it would be:
1. Can I tell GPT-4 about my components (and always be up to date)
2. Can I ask GPT-4 to write to the file directly
3. If the output has an error, can I ask GPT to look at the compile time error and auto fix it?
The 3 things I mentioned above is something I do every single day. We're just looking to make it easier.
npx creoctl@latest init
cd into the project, download the dependencies, and npm run dev.
On port 8891, you can open any of the tools (or create a new one) and a chat box appears on the right. There you can ask for what you want!
The value is in being able to prompt AI something like "Here's my data that comes from endpoint X. Give me a table that shows this data that is also searchable."
I personally find that valuable (along with not having to think about which auth vendor and component library to use).
We embed those tools in our parent web app, which has authentication, team permissions etc. So you will never interface with the code that does that.
You just have to focus on your business logic.
In terms of the AI copilot, the main value prop is knowing about our components, and using them to stitch together something fast. (Instead of the AI writing the component from scratch.)
For us, an underrated part of what is valuable is the components and their API design. Being able to have a <DataTable /> with just the right props for the right use cases, so that a foundational model doesn't go and build it from scratch is useful. The reason is mainly because now you save money on tokens, and save time because faster inference (since abstractions are already in place).
tl;dr give AI the right tools > trying to compete at foundational layer. (We are building those tools.)
And we try to be meticulous about our components' API design, that's where we think most of the value accrues.
With Retool, I tried building a form where if I change one input, the other input needs to conditionally change. I struggled a little with figuring this out, more than I should have. I also find it unwieldy to do any complex state management with a low-code builder (as in the case above), so it was a no-no for me.
At the same time, I understand that this feels like "writing code all over again".
The reason we don't believe so is because there's a hidden cost (cognitive effort) associated with picking the right component library, the right framework, etc.
Eventually, you won't be writing too much code either way for CRUD because of AI.
Let's say you want to edit some of the styling. Instead of writing some TailwindCSS, you will just ask our AI to say "move this graph to the right of the table" and it will just do it. We're opinionated to the point of having our own CSS rule engine, to make sure that the padding is always the same when adding new elements on to the screen, so the goal is for you to not write code as far as possible.
Have a look at https://v0.dev, it paints a good picture of what we're trying to do with this.
We may have underplayed a little, only because we have existing users already finding value with our current setup.
The goal is more like v0.dev, where with a prompt, you can generate your entire internal tool. We think we're not too far away from this (as shown in the YouTube demo).