TE
科技回声
首页24小时热榜最新最佳问答展示工作
GitHubTwitter
首页

科技回声

基于 Next.js 构建的科技新闻平台,提供全球科技新闻和讨论内容。

GitHubTwitter

首页

首页最新最佳问答展示工作

资源链接

HackerNews API原版 HackerNewsNext.js

© 2025 科技回声. 版权所有。

Write admin tools from day one (2022)

199 点作者 gnutrino超过 2 年前

30 条评论

jakelazaroff超过 2 年前
Can’t say I agree. You should only build tools if the time saved on the task is greater than the time it takes to build the tool. And in a lot of cases, you don’t actually know in advance what the common and time consuming admin tasks will be. The absolute worst thing is to spend valuable time building an admin tool you don’t end up using. So wait until you see an actual need, and then build your tools.
评论 #34365308 未加载
评论 #34364873 未加载
评论 #34365953 未加载
评论 #34365354 未加载
评论 #34366451 未加载
评论 #34367305 未加载
评论 #34364639 未加载
评论 #34368939 未加载
评论 #34371027 未加载
评论 #34368668 未加载
评论 #34373942 未加载
评论 #34365069 未加载
评论 #34364650 未加载
samwillis超过 2 年前
This is what gives a Django developer super powders. There are comments here suggesting that you should wait for the time needed to develop your admin tools to be less than the time it takes to perform the action manually. With Django that&#x27;s literally 5 min! To add a &quot;basic&quot; first pass of an admin to a model is literally a 5 min job. And when I say &quot;basic&quot; it&#x27;s not really that basic, you can achieve a lot very quickly with the admin framework.<p>If you are using Django and not building out admin tools as you go you are doing it wrong.<p>The other thing touched on in this post is audit trails. I now tend to create a &quot;{model}Log&quot; model for the &quot;key&quot; 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.<p>If you eventually find you are logging too much, just turn it down.<p>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&#x27;s better to build as soon as you have that knowledge.
评论 #34365220 未加载
评论 #34365124 未加载
评论 #34365393 未加载
telecuda超过 2 年前
This has been our approach as we scaled from customer one to acquisition by bigco a decade later, and I&#x27;d still point to it as being a key driver of our success:<p>- 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.<p>- Go around the room and ask the question, &quot;What&#x27;s one thing (report&#x2F;tool&#x2F;insight&#x2F;data&#x2F;etc) that would make your job easier?&quot;<p>- Track those requests on a shared document or board, giving stakeholders an opportunity to reprioritize their list (should never be more than a &quot;top 3&quot;) each meeting<p>- PUNCHLINE: Commit to addressing one item from each department&#x27;s top 3 every quarter. We did this starting early with engineer #2, but if you can&#x27;t devote a FTE, divide and conquer among your current team.<p>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&#x27;s never too late to start and it&#x27;s a great way to build a love affair between your non-technical departments and developers!
评论 #34372579 未加载
aranchelk超过 2 年前
That can’t possibly be right, at least wait until you have product market fit.<p>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.<p>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.
评论 #34364633 未加载
madarco超过 2 年前
Always loved Admin tools provided by modern frameworks, like Sonata-Admin for Symfony or Django-admin.<p>But still can&#x27;t find a generic Admin generator&#x2F;Crud tool for standard REST APIs or GraphQL<p>Even Retool&#x2F;Budibase force you to build countless connectors&#x2F;queries for each resource.<p>I&#x27;d pay $$$ for something that could parse my Graphql API SDL and generate an admin UI for me!
评论 #34368762 未加载
majestic5762超过 2 年前
I agree, but only after you have a product that works. Else, you will see yourself drawn into maintaining the admin features, and not the real product. There can be a middle ground: design your API with ACL from the start, and then the CRUD admin features would just work out of the box. Or there&#x27;s a cool shortcut: Hasura and Appsmith. Hasura connects to my PostgreSQL data and provides authorization, while Appsmith just consumes the REST endpoints created with Hasura.
评论 #34366848 未加载
jacobmischka超过 2 年前
We&#x27;re working on Interval to make doing exactly this easier. We focus on code first, well-typedness, and abstract away UIs for these tools so you can write the business logic using your own existing functions and tools and then get back to working on your actual app.<p>[1]: <a href="https:&#x2F;&#x2F;interval.com" rel="nofollow">https:&#x2F;&#x2F;interval.com</a>
nigamanth超过 2 年前
For small applications I avoid writing admin tools because I don&#x27;t want to waste too much time. However though, an alternative to actually writing admin tools from day one is using django and then seeing if you need admin tools or not.
haney超过 2 年前
Built in admin is the killer feature that keeps me coming back to Django over and over.
评论 #34364799 未加载
afhammad超过 2 年前
On the tools: I have gone the route of using the libraries (e.g Kaffy for Phoenix, ActiveAdmin for Rails) and later building a central shared backoffice from scratch that any team can contribute to. In the former you are always wasting time fighting the library to get what you want, in the latter it has the advantage of being language&#x2F;framework agnostic but it&#x27;s too costly for smaller teams.<p>More recently i&#x27;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.
noisy_boy超过 2 年前
Problem with such tools is that, if done beforehand, they start nice and clean and then as Support requests more features, it starts to get out of hand. Then someone passes the tool to an external team and suddenly you have dependencies that you are not aware of.<p>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.
评论 #34370119 未加载
fluxinflex超过 2 年前
I&#x27;m a big fan of admin tools, they can be very useful in getting data into a database without SQL (in the beginning), providing product people with a handy interface to explore data (if they don&#x27;t use tableplus[3]), allowing customer support to field customer inquires, potentially allowing QA teams to diagnose issues.<p>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.<p>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.<p>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.<p>[0]=<a href="https:&#x2F;&#x2F;nodered.org" rel="nofollow">https:&#x2F;&#x2F;nodered.org</a> [1]=<a href="https:&#x2F;&#x2F;github.com&#x2F;node-red&#x2F;node-red-dashboard">https:&#x2F;&#x2F;github.com&#x2F;node-red&#x2F;node-red-dashboard</a> [2]=<a href="https:&#x2F;&#x2F;pgmodeler.io&#x2F;" rel="nofollow">https:&#x2F;&#x2F;pgmodeler.io&#x2F;</a> [3]=<a href="https:&#x2F;&#x2F;tableplus.com&#x2F;" rel="nofollow">https:&#x2F;&#x2F;tableplus.com&#x2F;</a>
escapedmoose超过 2 年前
As a DBA with my time constantly split between development and operations, my life (and my team’s) was made so much easier when we started focusing on making our admin tools more usable and thorough. But I’ve often felt that our lack of maturity in this realm is due to our small team size.<p>Can someone from a larger dev team speak to whether you still find yourself spending time building&#x2F;improving admin tools like this?
评论 #34364148 未加载
评论 #34364146 未加载
ranting-moth超过 2 年前
If you write a very simple admin tool very early on, you just have to maintain it and add features to it.<p>What would have been a script becomes a feature in the tool with just a slight more effort.<p>If you don&#x27;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&#x27;t have it.<p>But perhaps from day one is too early, but it&#x27;s a very high priority task.
DavidPP超过 2 年前
I&#x27;ve been playing around with <a href="https:&#x2F;&#x2F;directus.io&#x2F;" rel="nofollow">https:&#x2F;&#x2F;directus.io&#x2F;</a> the last few weeks.<p>I&#x27;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 &quot;flows&quot; to automate support tasks.
felixmeziere超过 2 年前
Use Django :-)
评论 #34364255 未加载
评论 #34364109 未加载
评论 #34369020 未加载
评论 #34364357 未加载
Scubabear68超过 2 年前
I have come to really like Nocodb pointed at your database as a catch-all first approximation of an admin layer. It takes very little to setup and gives you an Airtable like interface to your system.<p>The obvious downside is in the wrong hands you can wreak utter havoc with it…
shubhamjain超过 2 年前
Most of the replies here seems to be restating principles behind &quot;Do things that don&#x27;t scale.&quot; I was of the similar mindset. But slowly, I realized the reality is more nuanced and the essay needs to be taken with a grain of salt. I hate repetitive, manual tasks. It&#x27;s more likely I will forgot to do them, or I will make an error in doing them, or I will put them off. At the same time, I am pretty comfortable with programming, I love hacking together different tools and APIs to build useful things.<p>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.
akincel超过 2 年前
All wrong. Admin tools are not fixing the root cause. Instead they are only making the operations more efficient.<p>The way to scale is to focus on eliminating the need of manual operations&#x2F;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.<p>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.
bob1029超过 2 年前
For me, building admin tools from day one is more about culture and setting expectations than predicting future workload.<p>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&#x27;t merge a feature unless that feature&#x27;s developer also included a way for the business to configure it to their expectations.<p>Done correctly, the admin tools should effectively write themselves. It&#x27;s definitely a lot faster to do this while you are deep in whatever feature.
dmarlow超过 2 年前
I would argue that engineers should look to build some of those capabilities into the app itself. So many users want the ability to solve their own problems themselves. Obviously don&#x27;t allow them to reboot servers, etc. But if it&#x27;s gathering certain types of logs, clearing certain things from the cache, first see if that&#x27;s something the user could&#x2F;should want to do themselves. You may end up not just with a good admin tool, but also better user experience and fewer support calls too.
hkon超过 2 年前
Maybe not admin tools, but at least functionality so that users can unf*k themselves. I&#x27;ve worked on projects where adding information was the feature, but updating or deleting it was &quot;nice to have&quot;.<p>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.
robbie-c超过 2 年前
Pre-PMF you probably don&#x27;t need much, just don&#x27;t make it harder for yourself to add things later.<p>For us we usually just add a new feature to the admin dashboard whenever it&#x27;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&#x27;ve never built anything we didn&#x27;t need.
adrianthedev超过 2 年前
Laravel has Nova, Django has Django Admin, and now, Rails has Avo.<p><a href="https:&#x2F;&#x2F;avohq.io" rel="nofollow">https:&#x2F;&#x2F;avohq.io</a><p>*I am the author of Avo
评论 #34368130 未加载
jalino23超过 2 年前
I have isAdmin boolean flag on my users table but I feel like I should create an adminUsers table for admin users
评论 #34364038 未加载
评论 #34365000 未加载
评论 #34368729 未加载
pajuc超过 2 年前
Thinking of a project where 1 person knows how to admin something with quite a bunch of Postman setups on their own computer.<p>At least provide CLIs.
rman666超过 2 年前
Hey, Andy! Representing the MKE! Word! Lol.
评论 #34436696 未加载
foxbee超过 2 年前
An alternative may be to use a low code platform like Budibase (I am the cofounder) which is designed to help IT teams build admin panels faster. It ships with its own DB (Couch) which should speed up the process!<p>it&#x27;s open source too!<p><a href="https:&#x2F;&#x2F;github.com&#x2F;Budibase&#x2F;budibase">https:&#x2F;&#x2F;github.com&#x2F;Budibase&#x2F;budibase</a>
评论 #34366890 未加载
gnutrino超过 2 年前
Don’t wait until support requests become overwhelming, write administrative tools for your software from day one.
评论 #34365291 未加载
bullen超过 2 年前
If you need admin tools, you need authority. The best way to design products is if they are not centralized or distributed but instead decentralized.<p>This is incredibly hard to do, and nearly impossible to scale, but we need to go there.<p>In the short term one can look at Mastodon, which decentralizes the authority. It&#x27;s messy but it sort of works.
评论 #34367107 未加载