Show HN: Retool Templates – Custom internal tools with drag-and-drop components
retool.com
retool.com
One thing that’s been challenging for us: because Retool is such a horizontal product, it was always hard for us to explain a) what exactly Retool is, and b) what people use it for. That’s why I decided to work on templates. A template is a pre-made app that you can plug your datasource (Stripe, Postgres, Github, etc.) into. Think old-school MS Word templates but for apps instead. You can plug in your credentials to get an extensible UI for your data. These templates aren’t meant to be 100% usable out of the box, but really to give you an idea of what you can do with Retool, quickly. (For example, here’s a video of us building the Github PR dashboard, which I mention below, in 15 minutes: https://cdn.tryretool.com/github_dashboard.mp4)
All of these templates are built from real-world use-cases that other companies are using Retool for. For example, we have customers using something very similar to our “Stripe refund tool” template. It pulls in data from Stripe, joins it to purchases in our database, and lets you refund an order in one click. (It updates the database, POSTs back to Stripe, and sends an email to the customer.)
My favorite is probably the Github PR dashboard. As an engineer myself, I want to start work everyday knowing who I’m blocking (i.e. I need to review their PR), and who I’m blocked on (i.e. I need to remind them to review my PR). I’d also like a quick summary of what a PR is. So I built this dashboard that loads all this information with the Github API at once, so I can just browse through them without waiting for each page to load. (Apparently this is an actual internal tool at Stripe that engineers check every day.)
Please let us know what you think! You can use any template to create your own app by clicking on “Use Template”.
But... if you have a good use case and can't make the pricing work, please let me know. I'm david@retool.com, and I'd be happy to give HN readers a significant discount or even free Retool for a bit. Your guys' feedback has gotten us to where we are today. Thanks!
1) a dashboard for an internal system which will be used by a team of 10 only. Will it cost me $100/month?
2) A dashboard used by 10 people in my team, but could be view by the rest of the company (say 100) people occasionally. will it cost me $1100/month?
3) Lastly, say I develop 10 different internal tools for my team of 10 people. Will I have to pay $100/month for each app?
2 - We bill per monthly active user, so if they're active that month, we'll bill for them. If that's too much for you, please reach out to david@retool.com and I'll try to find some pricing plan that works for you.
3 - No, you can build as many apps as you want.
Thanks for the questions!
or more simply - can you connect a single "tool" to multiple databases?
Also — probably our coolest feature (IMO): you can query anything via SQL, including APIs. So you could query Stripe, Salesforce, etc. via SQL, since all data in Retool is in JSON. AND you can actually join across them too. Imagine joining a Google Sheet with Stripe data with data from your database. It's great fun! https://docs.tryretool.com/docs/querying-via-sql
For example, here's how you query a JSON blob via SQL:
select
*
from
{{ [{ id: 1, apples: 3 }, { id: 3, apples: 20 }] }}
where
apples > 5
And here's how you join data from two separate APIs (that return JSON): select
users.*, payments.*
from
{{ usersApi.data }} as users,
{{ paymentsApi.data }} as payments
where
users.id = payments.user_idNow that you've shipped, come back and hang out at the house soon!
Everyone on our team is now able to build complex tools and dashboards without dev resources!
In our experience, it's the current winner amongst the flourishing low code/db app/spreadsheet app space. It is one of few that to me, proves that this space should (and will) eat market share from excel/gsheets on one end, and expensive bespoke tools on the other. Also eager to see these offering more competition against small ERPs, CRMs and the like - Perhaps this will eventually even give behemoths such as ConnectWise, Salesforce et al a run for their money. Those companies need some competition on both innovation and price. For now though obviously, this is best used for business automation, small tools, and stitching data/processes together.
Not affiliated, just a very happy customer. Customer support is above and beyond. Trialed internally to great success, thus preparing to consider in client solutions.
The last time I evaluated RAD (Rapid Application Development, for all you cool folks who refuse to know anything that wasn't invented after JavaScript) tool-builders, I really liked https://www.awareim.com/. They're not that famous, but I appreciated the extensibility.
Here's more info on:
* git syncing: https://docs.tryretool.com/docs/git-syncing
* hosting on-prem: https://docs.tryretool.com/docs/setup-instructions
* custom components: https://docs.tryretool.com/docs/custom-react-components
* using JS between {{}}: https://docs.tryretool.com/docs/javascript-overview
* writing custom JS: https://docs.tryretool.com/docs/custom-js-code
Let me know if there's anything else I can help with? Thanks!
One piece of feedback/missing feature was the ability to see a version history. Ideally I'd like to be able to back up my entire set up to github so that we could rollback changes easily.
Ah, good feature request! We recently launched a beta version history + git syncing to on-prem customers. Every Retool app is a JSON blob, and we serialize it to human-readable YAML, so you can do nice diffs + PRs. If you're interested in trying it out... let me know? Thanks! https://docs.tryretool.com/docs/git-syncing
Here's what an example Retool app in YAML looks like, btw:
version: 2.8.1
components:
- id: table1
position:
top: 1
right: 1
width: 8
height: 5
template:
data: "{{ query1.data }}"
selectedIndex: ''
columns:
- id
- name
- salary
columnWidths:
- 10
- 100
- 50
columnColors:
- white
- white
- "{{ self > 60 : 'green' : 'red' }}"
pageSize: 10
alwaysShowPaginator: true
onRowSelect: ''
serverPaginated: false
totalRowCount: ''
paginationOffset: 0
sort: null
sortedColumn: ''
sortedDesc: false
allowMultiRowSelect: false
queries:
- id: query1
template:
query: "select * from users"
runWhenPageLoads: false
runWhenModelUpdates: true
requireConfirmation: false
confirmationMessage: ""
queryDisabled: "",
triggersOnSuccess: []
triggersOnFailure: []
privateParams: []
queryRefreshTime: ''
queryThrottleTime: '750'
queryTimeout: '10000'
showSuccessToaster: true,
successMessage: ''After a week a scrapped it all and went back to developing the back office's front in React.
Although, in hindsight, maybe I was "holding it wrong". Unless my situation wasn't appropriate for the tool. Or maybe my way of using Firestore collections is just plain wrong. Who knows? ¯\_(ツ)_/¯
Do you mind if I reach out to you? (Edit: found your email via your blog; just sent you an email.) I know that you've already built everything in React so I'm not here to sell you / convince you to switch back to Retool; I'm here to see how we can improve our Firebase integration / our handling of nested JSON so the next ElFitz doesn't have this issue again. Thanks!
Got your email, and replied. I'd be glad to help. Also, although I have ended up building our back office in React, I'd be glad to ditch it, have one less thing to maintain, and let my "internal customers" build their own tools.
Have a great week-end!
Love your work though!
I was really confused until I scrolled through your landing page and I learned from examples.