by gnutrino on 1/13/23, 3:32 AM with 103 comments
by jakelazaroff on 1/13/23, 6:00 AM
by samwillis on 1/13/23, 7:08 AM
If you are using Django and not building out admin tools as you go you are doing it wrong.
The other thing touched on in this post is audit trails. I now tend to create a "{model}Log" model for the "key" models in an application, fairly basic with a JSON column. So for a shop, the products, basket, orders, etc. Then aggressively log to it all and any actions that happen, both internal stuff and external API calls (requests and responses). I make this log visible in the admin on the page for each of the key models. It makes digging into what is happening so much easer for everyone.
If you eventually find you are logging too much, just turn it down.
I do however very much see there bing two layers to admin tools, the first being the visibility, CRUD, audit tools. The second layer of tools for specific actions (e.g. compiling with GDPR removal requests) can make sense to wait until you have experienced doing it manually a few times to understand the problem better. But even then, it's better to build as soon as you have that knowledge.
by telecuda on 1/13/23, 3:36 PM
- Set a monthly meeting with a co-worker from each functional area (e.g. finance, support, sales). The meeting should be run by whomever has the best horizontal view of needs across the business, along with whoever is running point on development to clarify things.
- Go around the room and ask the question, "What's one thing (report/tool/insight/data/etc) that would make your job easier?"
- Track those requests on a shared document or board, giving stakeholders an opportunity to reprioritize their list (should never be more than a "top 3") each meeting
- PUNCHLINE: Commit to addressing one item from each department's top 3 every quarter. We did this starting early with engineer #2, but if you can't devote a FTE, divide and conquer among your current team.
10+ years later we have dozens of internal tools that have automated so much of what I see bigco still addressing by throwing people at it. It's never too late to start and it's a great way to build a love affair between your non-technical departments and developers!
by aranchelk on 1/13/23, 6:32 AM
Also there’s going to be something analogous to PMF for the tools themselves. Beyond CRUD, which is already trivial with most backends, you won’t really know what advanced admin tool features are needed until you’re servicing support requests.
On early stage products it’s very possible you’ll switch backends at some point. Most recently I had a POC using Redis (for reasons) and if I’d written any admin tools instead of just using the CLI, it would have been 100% thrown away when I migrated to Cloudflare Workers.
by madarco on 1/13/23, 2:38 PM
But still can't find a generic Admin generator/Crud tool for standard REST APIs or GraphQL
Even Retool/Budibase force you to build countless connectors/queries for each resource.
I'd pay $$$ for something that could parse my Graphql API SDL and generate an admin UI for me!
by majestic5762 on 1/13/23, 12:11 PM
by jacobmischka on 1/13/23, 1:35 PM
[1]: https://interval.com
by nigamanth on 1/13/23, 5:04 AM
by haney on 1/13/23, 6:08 AM
by afhammad on 1/13/23, 10:41 AM
More recently i've used tools such as Retool (there are many alternatives), it has been ideal and allows for non engineers to build there own tools with a little bit of SQL knowledge.
by noisy_boy on 1/13/23, 1:17 PM
The best approach is to re-use the existing setup e.g. hook into existing observability ecosystem instead of building your own from scratch. If support needs to execute something frequently, question if that can be done via any existing orchestrator like Tidal or Autosys etc. If that is insufficient, maybe a dashboard is more manageable since it is server-side. If you see that you are building such dashboards for each of the services, they maybe there is need for a general Support dashboard (even that is not a panacea because that too starts nice and clean and then as Support requests more features, it starts to get out of hand and becomes a dumping ground for random requests). Push back on what is not essential, drive towards fixing the root cause of something that is symptomatic of a deeper issue; on the other hand, if it is a genuine need, add the feature - as with most things, balance is the key.
by fluxinflex on 1/13/23, 1:14 PM
They can indeed be a pain to build if one puts in the same codebase as the product codebase, best to separate their code out into a separate codebase. Business logic is often not applied to admin tools hence better own codebase.
Recently I built a backend using Node-Red[0], being a card-carrying Emacs user, I was surprised how simple it was to design flows to represent an API for my application. But the really great advantage was the admin tool. I just used Node-Reds dashboard[1] to create a simple frontend to interface with my database. It allowed me to play around with my database schema until it felt usable. After that I designed the API.
Just one more plug: pgModeler[2] is terrific for visualling modelling a postgres database. Incredibly useful and much preferred (for me anyway) over codified migrations. Combined with Node-Red, I could focus on getting the business logic done and not fiddle around with database migrations, data format conversions or debugging code.
[0]=https://nodered.org [1]=https://github.com/node-red/node-red-dashboard [2]=https://pgmodeler.io/ [3]=https://tableplus.com/
by escapedmoose on 1/13/23, 4:41 AM
Can someone from a larger dev team speak to whether you still find yourself spending time building/improving admin tools like this?
by ranting-moth on 1/13/23, 8:42 AM
What would have been a script becomes a feature in the tool with just a slight more effort.
If you don't write it until everything is on fire all the time, it becomes a much bigger task. Plus all the time wasted when you didn't have it.
But perhaps from day one is too early, but it's a very high priority task.
by DavidPP on 1/13/23, 2:04 PM
I'm really impressed so far, it can either act as the only backend, or as an admin tool over an existing DB. It also has built-in support for "flows" to automate support tasks.
by felixmeziere on 1/13/23, 4:41 AM
by Scubabear68 on 1/13/23, 2:59 PM
The obvious downside is in the wrong hands you can wreak utter havoc with it…
by shubhamjain on 1/13/23, 7:33 AM
I have found creating mini tools a better use of my time, then just follow a shitty workflow because I need to keep doing things until I have reached a certain threshold. YMMV, of course.
by akincel on 1/13/23, 8:14 AM
The way to scale is to focus on eliminating the need of manual operations/admin tools by giving the power to the users of your products. Focus on self-service. Sure, not everyone should be able to overwrite an arbitrary value or change an important setting but that is easily solved with granular access rights.
In my team, we never want to create a feature that only devs or support team can use. These exclusive features create the need for us to operate them instead of staying focused on engineering.
by bob1029 on 1/13/23, 12:56 PM
If you have the whole team aware of the basic ground rules for what the admin tools are and what they need to be like moving forward, you can build an ongoing process. i.e. don't merge a feature unless that feature's developer also included a way for the business to configure it to their expectations.
Done correctly, the admin tools should effectively write themselves. It's definitely a lot faster to do this while you are deep in whatever feature.
by dmarlow on 1/13/23, 3:31 PM
by hkon on 1/13/23, 4:56 PM
After a couple of months, constant requests coming in to developers for changing or delete users information, but still no prioritization of such features. Directly in db ofc, since no tooling.
by robbie-c on 1/13/23, 9:48 AM
For us we usually just add a new feature to the admin dashboard whenever it's needed for the first time, usually triggered by a customer support question. The downside is that unusual queries can take a few days to answer, but the upside is that we've never built anything we didn't need.
by adrianthedev on 1/13/23, 2:24 PM
*I am the author of Avo
by jalino23 on 1/13/23, 4:31 AM
by pajuc on 1/13/23, 4:38 PM
At least provide CLIs.
by rman666 on 1/13/23, 4:32 PM
by foxbee on 1/13/23, 12:22 PM
it's open source too!
by gnutrino on 1/13/23, 3:32 AM
by bullen on 1/13/23, 12:28 PM
This is incredibly hard to do, and nearly impossible to scale, but we need to go there.
In the short term one can look at Mastodon, which decentralizes the authority. It's messy but it sort of works.