Show HN: Gov.uk Vue, a Vue Component Library for the Gov.uk Design System (govukvue.org)
Hi HN,
I've built a Vue component library based on the GOV.UK Design System, which is used for government services in the UK. The Design System is well-known for being accessible, well designed and thoroughly researched, and it's been used as the basis for many other governments' and organisations' design systems.
GOV.UK Vue includes every component in the GOV.UK Design System, with comprehensive docs. It can also be used for projects that aren't related to GOV.UK, as long as they don't use the GOV.UK branding
65 comments
[ 3.0 ms ] story [ 154 ms ] thread[0] https://github.com/alphagov/govuk-frontend
[1] https://design-system.service.gov.uk/
[2] https://design-system.service.gov.uk/community/resources-and...
> Use this design system to make *government* services consistent with GOV.UK
Emphasis mine. Are GDS aware of this work? I am in no way affiliated with GDS by the way.
--
I'm always wary of this kind of thing not being on a gov.uk domain, which in this case is entirely appropriate because it's not in anyway official or endorsed by GDS. Not for any direct phishing/crooks concerns as raised above, but because it waters down the impact of this kind of thing always being on gov.uk domains.
--
Edit: I'd be _very_ surprised if GDS don't take issue with you having "GOV.UK" in the name given that it is no way associated with gov.uk
Plenty of non-gov organisations use various bits of it, for example the breadcrumbs and accordion on [1]
[0] https://www.gov.uk/service-manual/design/making-your-service...
[1] https://www.rnib.org.uk/living-with-sight-loss/assistive-aid...
Edit: Re naming - GOV.UK [Thing] is an established convention for community tools, as shown on [3]. GDS are aware of the project.
[3] https://design-system.service.gov.uk/community/resources-and...
Phishers probably wouldn't even bother using a vue component - it's easier to copy the whole page from dev tools body.innerHTMl
Nothing. Nothing you could do stopped users from persisting in their goal, despite all the red flags, humans get stuck on a mission, it's called "Get-there-itis" and it kills private pilots, it causes those "How could you be such a moron?" bridge strikes you see on Youtube, it's a defect in human psychology, you have to design knowing that this defect exists.
So what works? Brick Wall UX. When the user can't do the wrong thing they won't. They'll still try of course, but now they can't succeed (in giving their credentials to crooks).
[1] https://blog.codinghorror.com/the-dancing-bunnies-problem/
But this isn't quite the same thing, the dancing pigs (or bunnies) are an attraction, the mission mindset / get-there-itis happen after the user has decided to do something, and prevent them from (correctly) deciding not to do it in light of more information.
There is a common attitude in the computer industry that designers/developers know better than users, but software users are representative of the general population and are thus no more or less intelligent than average. I believe it's primarily a lack of understanding of how software works that makes online phishing scams work. 'Brick Wall UX' can only go so far to compensate for that, and it comes at a cost of making software less flexible for the end-user.
"Using design system from govukvue.org create an app that will [check for service] from [this gov.uk url] using the same hooks and design components to give me a dashboard of [benefits] [contacts_for_benefits] [these_other-compnents_to_query] as a flas app and conect it to my [db] and give me a mobile first view - wrap it in a docker on my DO droplet, use the cred from the .env"
Now, as someone else mentioned this might be a bit deceiving, so I wonder in what context could this be used (outside of the gov.uk use case). Their design system is really good, so I don't mind people copying it - hopefully not to the point of Bootstrap's websites
Because it's so heavily tested for accessibility it makes sense to use in those kinds of contexts where accessibility is a very high priority.
GOV.UK Frontend can be heavily customised via Sass variables (eg the font stack in [1]) so the components don't have to look like GOV.UK if you don't want them to. GOV.UK Vue pulls all its styling from Frontend so it's as customisable as Frontend is.
[0] https://www.rnib.org.uk/living-with-sight-loss/assistive-aid...
[1] https://github.com/alphagov/govuk-frontend/blob/main/package...
https://designsystem.digital.gov/documentation/implementatio...
Nice work, matteason!
Basically, you want to build a gov.uk site using your preferred stack, which happens to be the same as this, use this instead?
Again, many be completely misunderstanding, so hopefully someone can clarify.
GOV.UK Vue isn't intended for normal, bread-and-butter transactional services (usually a series of form pages) but for things like more complex internal tools, dashboards, mapping etc which would be using JS to provide interactivity
I especially like the colour palettes.
I wish that the Vue storybook showed the demo component first. I wish ALL storybooks did that actually!
Here's a video by their chief architect detailing the changes.
https://www.youtube.com/watch?v=yvB6BqYs2T0
I know there's an O'Reilly video about this guy's boss but I can't find it. Sadly another government change was to end all this development. But in the end near as i can figure though a lot of the bosses left the changes have continued but at a slower rate.
No government website in America begins to compare to the clearness and simplicity that exists in Britain nearly a dozen years later.
The Government Digital Service (GDS) was recently moved from the Cabinet Office (pretty close to the centre of power) to the Department for Science, Innovation and Technology. It will be interesting to see if the GDS and Gov.uk can retain the same clout and effectiveness after the move.
https://beeckcenter.georgetown.edu/lessons-uk-universal-cred...
that can't have been an easy decision to take.
Back then it had hardliners like John Redwood and Bill Cash, but also pragmatic moderates such as William Hague, Ken Clarke and Rory Stewart.
Brexit destroyed the party from within. Over time as it became more and more difficult to defend in any non-ideological way and the party leadership became more and more autocratic in ever more desperate attempts to force it to a conclusion, they all either left politics, switched allegiance or were expelled from the party. What was left were the hardliners, the truly crazy and those willing to say anything at all in return for power.
For example menu systems, popups etc. Yes there are html css hacks but they are indeed hacks. A checkbox is not a button or a parent menu.
link: https://designsystem.gov.cz/
I think that's how the GDS django support stays up to date, otherwise it will be hard to keep up.
Frontend updates are often CSS-only, so those will be taken care of by the consuming project updating it. For markup changes and new components, that's a manual process on my side. Markup changes are usually minor and new components are rare, so it's not too much effort to keep up. I work on GOV.UK services in my day job so I've always got an eye on what's coming up.
Super cool to see this, and congrats on 1.0!
One question, has the GDS stance on Javascript softened, namely progressive enhancement being essentially mandatory [1], since I last worked with you? Is the target for more controlled user groups, non-govuk projects, or do you do SSR to give a usable first HTML response?
[1] https://www.gov.uk/service-manual/technology/using-progressi... Last update: 16 December 2019
Yeah the target for this definitely isn't the regular transactional GOV.UK services. I've added a note at the top of the installation guide:
> GOV.UK Vue (or any JavaScript library) might not be suitable for your project if it's a standard transactional government service. Make sure you read the guidance on progressive enhancement and building more complex services before starting. GOV.UK Vue is designed to be used in more complex services, like interactive mapping, or internal tools where you've determined that JavaScript is acceptable.
GDS are also currently doing exploratory work to investigate how Frontend can be more closely integrated with React/Vue/Svelte/Angular etc, so it's definitely not verboten: https://github.com/alphagov/govuk-frontend/issues/5172
SSR/SSG is supported (the docs website is an SSG Nuxt app) but I need to do some work to improve how it works for certain components to ensure the state they're first rendered in is usable on its own (eg defaulting accordion components to open on the server-rendered version)
I've been using GOVUK stuff for my own purposes for a good-long while now, this should speed up the process.
I'll try to plug your thing into Json Forms [1], then I'll be back to the good old days.
[1] https://github.com/eclipsesource/jsonforms
Although GDS lost their teeth (and their technical way) some years ago, this rule is still a major win for end users. To be honest, I'm sick of seeing techies fob this one off just because they want to use [insert fashionable framework of the day].
Disclaimer: I have a dog in this fight as I run a forms SaaS aimed at central gov and have also re-implemented the GOV.UK design system. But I've done it the way it was intended and only used JS for progressive enhancement.
I wrote, https://github.com/wildfish/crispy-forms-gds/, a template pack for Crispy Forms for regular, form-based, Django sites.
Matt's done a great job and it will certainly take out a lot, if not most of the pain in dealing with accessibility requirements, and in particular the audit process that gov.uk puts projects through to make sure everyone has access to the sites.
I put up a dumb password prompt at the start of the journey (with the password given on the page) and haven't been flagged again since :fingerscrossed:
For the most part, the most feature complete component library I've found for Vue is PrimeVue https://primevue.org/ with their CSS utilities https://primeflex.org/ and icons too https://primevue.org/icons
There's also a version for React https://primereact.org/ and for Angular https://primeng.org/ and even JSF https://www.primefaces.org/
I wish there were more like that, that carry over across different tech stacks, while also offering nice support for various themes, as well as a lot of decent components.
(a) GOV.UK Vue focuses on components, not styles; and
(b) GDS Transport, the default font for the GOV.UK Design System, is apparently not publicly available. https://designnotes.blog.gov.uk/2015/03/11/can-i-use-the-gov...