Migrating the website to Angular 15, with optional redesign #1709
Replies: 3 comments 10 replies
-
Wow! This is awesome! 💯 Upgrading the website has been something we've wanted to do for a while, but never gotten around to fully completing. I must say, I love the new design! Getting rid of that ugly green background does wonders, and I much prefer this over the old design! The way you implemented filtering by tags is awesome too, and done exactly how I would do it myself 😁 There are, like you said, a few issues. So let me come with some suggested solutions :)
Let me know if this feedback is useful or not, and if you have any questions :) Honestly I'm surprised by how few issues there are with the new design, so big kudos to you! Color me impressed! |
Beta Was this translation helpful? Give feedback.
-
The website looks just awesome! Amazing work with that, thank you so much. 🚀 And regarding the maintainer thing, you're more than welcome to join the website team once we get to set up this completely. |
Beta Was this translation helpful? Give feedback.
-
One thing I really like about this (that I think hasn't been mentioned already) is that it lets us easily separate the website and the icon pack. That will lead to less spaghetti code, less complexity (smaller codebases), and generally a better experience for contributors and maintainers since we don't have to run the long running CodeQL workflows on icon PRs. @risbi0 Would it be okay if we forked your repo into devicons, and started working on the website together with you? |
Beta Was this translation helpful? Give feedback.
-
I think the website is due for an upgrade of its framework. Devicon is made in AngularJS which is discontinued in December 2021. While it doesn't really pose any risk, migrating to a modern, updated framework makes it more approachable to potential contributors.
Angular is a suitable choice since it's basically the successor to AngularJS (and I wanted to learn about it since I hadn't experienced it). With that I made two websites that can replace the current one. One is purely a migration to Angular 15, and the other has a complete redesign with some added stuff.
Proposal 1: Migration to Angular 15 (current design retained)
Source code
Website
By design and like most modern frontend frameworks, the new features offer better dev experience and code maintenance compared to the old framework, which includes Typescript, Sass, testing, and component separation. Additional tools I added are for linting and formatting, which is ESLint and Prettier. I used an ESLint config from Airbnb since it's really popular and recommended by many.
Aside from a few headers not being bold, the website is practically the same. Also this is based on the master branch I cloned a few days ago. I later realized there's a develop branch but was too lazy to change it since I'm already working on the 2nd proposal. I made 2 proposals since I really had full liberty on the 2nd one since I basically built it from scratch. This proposal is my low offer on at the least getting it migrated to Angular 15.
Proposal 2: Migration to Angular 15 (complete redesign)
Source code
Website
Other than the tools mentioned above, I used Tailwind CSS as the CSS framework since that's my go-to, with daisyUI for pre-made components and theme management.
The themes don't follow the green palette of the Devicon icon but it's easily reconfigurable. I did use the main font in the current website, Damion, on the main title as an homage to the old one.
This website has all the functionalities of the current one and also resolves some Issues:
devicon.json
#988Additionally, icon names displayed are its full name, and are sorted alphabetically. I ran the favicon into realfavicongenerator since I think the logos are too many. The mobile experience is also better as the layout adjusts well in mobile, though not really the place to be for frontend dev, it's a nice addition.
I also notice the use of "font" as one of the icon versions aside from svg. They are actually font in the sense that it is inserted in the content attribute as an entity, but for front end developers who mostly use it in websites, they might get confused thinking how a font became an icon (maybe that's just me). It's better to make it more generalized and I renamed it to "CSS" instead. That's my take.
Issues
Since I made the settings as concise as possible (separating wordmark and colored variants as toggles), the site displays an icon's details under the assumption that each version has a wordmark version, and if not disable the toggle. For example, "plain" has its wordmark version which would be prepended by the same name, which would be "plain-wordmark". This runs fine for everything but a few icons. Some only has "plain" and "original-wordmark" as its versions. The issue is inconsistent naming which I asked briefly in #1703 . I did do an ugly workaround of explicitly setting the wordmark version to specific icons, but I wish the naming is more consistent. I think this is impossible since it would break any icons used by anyone, but I just letting this out here.
Another issue is the version and icons are manually set. This is because I had to put each of the icons' full names for the display, which I would also propose to be put on officially if this was accepted
If either proposals are accepted I plan to apply as maintainer, where I focus on the development/maintaining of the website. Even when it's not accepted, I still learned a lot about Angular while creating these websites, and still that's a plus for me.
Beta Was this translation helpful? Give feedback.
All reactions