Git Product home page Git Product logo

michal-simon / amsterdam-styled-components Goto Github PK

View Code? Open in Web Editor NEW

This project forked from amsterdam/amsterdam-styled-components

0.0 1.0 0.0 82.57 MB

Component Library based on Amsterdam Design System

Home Page: https://amsterdam.github.io/amsterdam-styled-components/?path=/docs/introduction-welcome--page

License: Mozilla Public License 2.0

JavaScript 2.15% TypeScript 96.63% Shell 0.15% HTML 0.04% CSS 0.52% Raku 0.10% Perl 0.41%

amsterdam-styled-components's Introduction

Amsterdam Styled Components (ASC)

style: styled-components Storybook lerna TypeScript Build Status Netlify Status code style: prettier

Demo site with the storybook of the components

Use components in your project

Please read the getting started documentation

Contributing / Creating components

Please read the CONTRIBUTION.md

Design system

We aim the components to be aligned with the Amsterdam Design System. In order to align these components, we contact people on the DST (Design System Team) slack group to let them know which components we want to align. Usually some modifications need to be made in both Storybook and Amsterdam Design System. The state of a component indicates whether it is ‘approved’ as officially aligned. There are two possible states:

  1. stable: Stable components are aligned and "approved" by the design system. These components are usually embedded in the corresponding the design system.
  2. experimental: These components are simply not yet aligned and reviewed by the Design system, but they can be used in your project if you want. Keep in mind they can change in the near future when aligning them.

Some components don't have a state in the stories, consider these "experimental".

More info can be found here

If you have any questions, please contact one of the maintainers to get access to the DST slack group

Structure

This project is a monorepo with 2 packages

  • asc-assets - contains fonts and icons (in directory static) and react-icons
  • asc-ui - the react implementation of the components

Vision

Consistency is always an issue in software engineering, especially when it comes to web styling and UX. That is why we think a component library who captures styling but also certain UX aspects, e.g. button loading state, is highly beneficial for organisations with large or multiple applications, such as the municipality of Amsterdam.

We acknowledge that such a library entails some risks and pitfalls and we aim to cover these as much as possible. On the other hand we think that the benefits outweigh the downsides.

Quality assurance and durable maintainability

One of the biggest risks is the way a library needs be maintained in order to guarentee quality and keep developers motivated to continue using it. This is at risk when:

  • Maintainers stop maintaining, e.g. they leave the organisation or company
  • Maintainers do not have the time to properly review PR's, e.g. there is no budget/time to spend on the project
  • Tests are neglected
  • Dev guidelines are violated

Our goal is to set up strict guidelines for development and limit the amount of reviewers in the repo. Creating these guidelines is an iterative process and we invite all who are interested to contribute.

The guidelines can be found here (TBD)

Tradeoff

PROS

  • Able to reuse components, this will not only save development time in the long term, but it also introduces consistency in design and code. No more copy-paste code.
  • Easier to test; strong separation of concerns. Every component keeps its own logic and style.
  • A monorepo: one source for styled components and everything that is related to that. Also updates won't immediately affect other repo’s because of versioning
  • Great to be used in a living styleguide like Storybook
  • Attractive for the (internal) open source community

Risks

  • Quality assurance; we need to set up some well founded contribution guidelines and make sure the repo doesn’t get polluted.
  • Versioning: updating the component package might contain breaking changes. This could be prevented for most of the time if we have a proper updating strategy in our guidelines.
  • More time to set up, develop and maintain. However, this is an investment for future products that will result in decreasing development time drastically.

Extra information

More detailed information can be found in the README.md of each package.

amsterdam-styled-components's People

Contributors

aditudorache avatar alimpens avatar bennievanderwel avatar chrisvanmook avatar daanbeverdam avatar dependabot-preview[bot] avatar dependabot[bot] avatar ebabel-eu avatar fortunato avatar gilleswittenberg avatar janjaap avatar jasperswart avatar jonkoops avatar marin-amsterdam avatar mauritsr avatar remyvdwereld avatar robinpiets avatar royderks avatar timvanoostrom avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.