The accelerator to speed-up your web development. Ring is an opinionated framework built with React and Next.js which let you focus on delivering value to your customers.
- Software development focused on sections.
- Each section is independent from any other section.
- High scalability, architecture designed to support any number of sections. Following the separations of concerns: markup (HTML), styling (CSS), logic (JavaScript) and data.
- Each section is reflected on each layer of Ring:
- Ring UI: Headless UI
- Ring CMS: Integration between the CMS and Ring UI.
- Ring Commerce: Integration between the Commerce service and Ring UI.
- Ring Contracts: Contracts between the APIs and the Front-end.
- Monorepo architecture with Turborepo to have an productive developer experience.
-
Ring UI: Headless UI built with React and Tailwind CSS:
- Figma Tokens to syncronize Figma with the front-end code.
- Components documented with Storybook.
- Design system following atomic design.
- Best testing practices with Testing Library and MSW to achieve 100% test coverage.
- WCAG Level AA compliant.
- Designs for mobile, tablet and desktop.
- LTR and RTL support.
-
Ring CMS: Integration of Ring UI and Ring Storefront with a selection of CMS
- Contentful:
- Data modeling to work with Ring UI.
- Import/Export content models and content.
- Generated API types.
- Sitecore:
- Data modeling to work with Ring UI.
- Contentful:
-
Ring Commerce
- Commercetools
- Data modeling to work with Ring UI.
- Swell
- Data modeling to work with Ring UI.
- Commercetools
- Ring Storefront: Storefront made with Next.js, Ring UI, Ring CMS (Contentful) and Ring Commerce (Swell).
Shared configuratino files to ensure consistency between all the applications and libraries.
- Shared TypeScript and Jest configuration.
- Shared ESLint configurator with an extensive set of plugins to ensure high code quality.
- Semantic release for each application or library with git tags.
Continuous integration and continuous delivery with GitHub actions:
- Workflows to deploy the applications/libraries.
- Checks defined to guarantee a stable software:
- Build: Build the application and libraries, so they work as expected.
- Tests: Run unit and integration tests to deliver the software with confidence.
- ESLint: Ensure best and consistent practices accross the code.
- TypeScript: run type checks to ensure the consistency of the code and caught defects early enough.
- Run the checks before release.
- Run the checks before deployment.
- Run the checks to block the merge of pull requests.
- Generate releases based on Conventional Commits with Semantic Release.
- Check Pull Requests test coverage, and block them if they are below the defined threshold.
- Check Pull Requests title, as the titles are used to generate the releases.
- Dependabot to generate pull requests which update the dependencies, including auto approval and auto merge jobs for a full automatic setup.
- Auto attach a size label to each Pull Request, to encourage small Pull Requests.