Replies: 6 comments
-
Hi @Yarith Thanks you so much for such a detailed feedback, this is very valuable to me ❤️ So, let's dive in:
Very interesting point. I'm thinking of allowing users to create an account, store some projects and allow them to share with other users. Also, if Azimutt can have access to the schema (github repo) or directly to the database (in dev for example), it could sync the schema periodically to have it always fresh. What do you think? I totally get that aligning all the schema can be quite time consuming and tedious. Obviously I'm thinking of making this better (auto layout but also sticky grid) but I don't think this should be its primary goal. I see Azimutt as an exploration tool, the one you go when you are looking to find, understand or even manage your schema. Something living that you can model as you need, not a perfect drawing tool to print schemas (even if it could be useful for this also ^^). But it's still very early and I'm still refining this vision with any feedback. Again, thanks a lot for taking the time to share your thoughts on Azimutt. The project is just starting so it miss a lot of things but it keeps improving and with good feedback from users, I hope it will become an obvious choice to work with database schemas 🚀 |
Beta Was this translation helpful? Give feedback.
-
Hi @loicknuchel After your reply i gave this tool another try. I updated to the latest version in the main branch. I started integrating it in our webserver which serves our documentation. At first i wanted to only change the So i created a fork and you can see the diff. One of the last changeset added a lot of noise to the comparision, because i switched from Now about the points:
While i had worked on my fork i made some other changes: You can look at the changes yourself by downloading my fork. Everything should work normally except the new server storage feature. It was really hard to integrate it to our server, because i needed to extend the base directory. The app lives inside the /sites/azimutt/ directory. Updating elm-spa costed some hours but was on the easier part. Also i needed to find all usages of resources in the elm code. Gadly they were only 3 kinds which could be find with regex replace. Maybe if someone will host it beside other stuff in an existing server here my used regex expressions: // Regex to prepend base directory to elm code files
/((src|href)(\s*=)?\s+"\/)((?!sites\/azimutt\/).*?")/m
// Regex to extend the samples with our own database schema
// src\\Conf.elm
/(schemaSamples =\r?\n Dict.fromList\r?\n \[(\r|\n|.)*?)(\])/m
// Changes for the generated elm-spa files:
// generateed/Gen/Route.elm
// Regex to prefix the (Route -> String) function
/^( joinAsHref : List String -> String\n joinAsHref segments =\n ")(.*?\/)(" \+\+ String.join "\/" segments)$/m
// Regex to prefix the route parsers
// generated/Gen/Params/**/*.elm
/^(parser =\n .*?\()(.*?)(\))$/m I played a little bit with the find path feature: So sharing in my team is also solved for me by the different storage types in my fork. I don't think the other team members would create accounts only to have a quick look. Having the documentation inside the repository is really nice to work with as a developer. Yes of course Azimutt is an exploration tool. It has a really nice looking user interface and is written in elm, which makes it easy to integrate into intranet websites. Now I think managing the layouts will not be so time consuming anymore. The main feature is exploring the existing schema, another one could be exploring the effect of changes to it. I will definitely use it for living schema. The database schema is the core of the application and always up-to-date. It is nice to have now a non-overwhelming tool to revisit it any time. The export feature of 9. is a little bit out of scope for now. I am more interested about 26. and 27. when it comes to export features. But export features in general are not so important. I need to start really using it, currently i was just playing around and validating its usefulness. It was a really fun time to read and extend the source code. You have separated the modules, probably to fight against the cyclic module dependencies. Was at first really difficult to navigate, but after time it was not so annoying anymore. I think after my changes to Azimutt, it is working for me. Now after spending a little bit more than a week with it, i should move back to the other interesting projects. A nice project and good work so far! 👍 |
Beta Was this translation helpful? Give feedback.
-
Hi @Yarith, AWESOME! I'm quite happy to see you exploring the tool and bringing interesting use cases and solutions 🎉 Thanks for your so detailed explanations, they are really helpful and I will probably come back to them along the next year to choose what to implement ^^ I'm currently in the process to move from bootstrap to tailwind but I also use this opportunity to improve the UI in many ways, so the code is very different. Your changes will not be compatible and maybe not easily to migrate. You can have a look to the code in the linked PR and a preview version. Feel free to leave some feedback comments it you have some :) I won't answer to all your proposals, it would be a too huge answer (but I keep them in mind and will regularly come back to your comment in the coming months) but here are some cherry picks:
19-22. Yeah, it's because of JS mono-thread and the fact I don't split the computation. Having a max number of result is a good idea but with a breadth-first strategy, not sure it will get so much faster and in a depth-first one, not sure it will be relevant... But I can experiment on this. Clearly this feature is experimental and lot of work is still needed: search algo (needs more heuristics and breakpoints to avoid freeze), UX (tables and columns should have auto-complete and tag system to be more friendly than just text). If you could choose 2 or 3 features, what would be the most important for you? |
Beta Was this translation helpful? Give feedback.
-
Hi @loicknuchel About 19-22: In my cases the slowness comes not from calculating the results. I see after 4 Seconds already that i have 4700 results, but then it hangs for over 2 minutes. The profiler showed me that the problem is the Lets see which new features would be nice:
The storage feature will probably only be a feature in my fork for a while. All the other changes between 11-18 are just corrections that ensures the app works as expected. I ordered the features by priority instead of limiting them. I have not really many feature ideas at the moment. For now i will use the current version. When the new version is available, i will take a look again. I had looked on sunday on it, but nothing was working. So i switched back to main branch. If all my fixes are not necessary in the new version it is good enough. |
Beta Was this translation helpful? Give feedback.
-
I didn't look into performance for the find path, thanks for doing it, and it's quite reassuring that it's the popovers that cause this problem so "easy" to fix like you did 👍 Thanks a lot for your feature list, the 1. and 2. seems really interesting, for the 3. and 4. I'm not sure they fit in the core things I want to provide with Azimutt but still worth investigating. I will come back to you when working on them :) Yes, my new version for now just handle the create project part, I'm just starting to implement the "real app" ^^ |
Beta Was this translation helpful? Give feedback.
-
Hi @Yarith I finally finished my migration and implemented a few more features, some from your suggestions 🎉 I would love to have your feedback on them if you have some time to look into them :) |
Beta Was this translation helpful? Give feedback.
-
Hello,
i have tested this tool with our database schema. I had following problems and toughts while using it:
localStorage
to an own storage on the server. It seems you have already planned another form with named groups of multiple tables Table groups #30I planned to put this tool on our development server which hosts some documents. Like this it would be too hard to introduce coworkers into it. I wanted to automatically fetch the current database schema from our development PostgreSQL database and have it preloaded. So i only need to send a link to our index.html file and everyone can access it easily by clicking on the link.
I don't know how much i would use this tool. Preparing and aligning all those layouts would be quite time consuming. You have planned with #22 better positioning, but in our case, the tool would have not enough knowledge to place them correctly. Maybe if it is possible to easily update the manually created layouts with a newer database schema, it is not so bad anymore.
I hope this write down helps you to further improve this tool.
Beta Was this translation helpful? Give feedback.
All reactions