Hey there 👋
Are you interested to contribute to our open source project? That would be awesome, we are always looking for contributors 👍
The following guide is here to try to guide you through the process of contributing to our project in case you do not know where to get started. If you have further questions, we are happy to help, just ping us on our Slack channel.
- How to get Involved
- Technical facts
- Issues
- Bugs and features requests
- Translations (i18n)
- Documentation
Everyone is welcomed to contribute to our projects, no matter how experienced you are. DeckDeckGo was an important learning experience for ourselves and, we would be happy if contributing to our project is also profitable to you in terms of learning.
DeckDeckGo is a mix of applications, components, functions and infrastructure. You could have a look to our README which lists all of these.
In short summary, all our applications and components are developed with Stencil.JS Web Components.
Our website is implemented with Gatsby.
On the other side, our publication engine is developed with Haskell, Nix and Terraform.
We are flagging our issues with the labels good first issue
when we think that the issue is accessible without too much experience and know-how of our project. We are also flagging issue with the label question
when we need your input. It could be general questions such as brainstorming regarding UX or anything else.
You are welcomed to find these kinds of issues to get started but obviously if you don't find any issue, don't hesitate to take over other types of issues if they inspire you.
In any case, ping us to get start, your help would be super appreciated!
Some bugs (sh*t happens) might not yet been reported. Likewise, your awesome ideas to make DeckDeckGo better are always wanted. Therefore don't hesitate to open new issues but if you are unsure about if it's the right place or if you would like to discuss it first, go to Slack for that purpose.
We would be grateful to get your help to translate our apps:
- Editor
- Site
- Remote
- Docs
The online editor (studio) can be translated as following:
- Copy en.json to a new filename reflecting the language (such as for example
fr.json
for French) - Translate each keys of the newly created file
- Provide a PR
If you would like to test your translations, either test these by overwriting temporarily en.json or add the new language as following:
- Add it the to the list of supported languages in languages.d.ts
- Add a related dynamic import in the state management i18n.store.ts
- Add it to the default language detection list in lang.service.ts
Translations are handled in JSON files but, as we are consuming these through a store, their representation have to exist as interfaces.
To ease the process we have developed a script which extract the declarations automatically.
In case you would add new keys, run npm run i18n
to generate the interfaces.
The new website of DeckDeckGo supports i18n. To provide a new language with a Pull Request, follow these steps:
- Copy each pages to their new languages. For example
index.en.js
toindex.fr.js
to create a French page. - Translate the text of the pages "index, enterprise and discover" in their related json data.
- Translate all other pages directly in their related Javascript files (we did not extract the text from the "simple" page).
- Provide a translation for the meta description.
The remote control is not yet translated. If you think that's a must, let us now!
We don't plan to translate the documentation for developers, it seems like quite a big task. That being said, we are welcoming contributions. If you are up to, for sure that would be awesome!
The source of our documentation are available in the docs app.
Any improvements regarding this subject are welcomed!
If you are looking to document a new or existing web component, proceed as following:
- document properties, methods, styles etc. in the component itself. We leverage the ability to generate automatically README.md at build time with Stencil
- fetch the component with a CDN in preview-head.html
- add a menu entry in entry.js
- add a new story and import readme, see folder components
When trying out your documentation locally, run the docs, Storybook, with the "no cache" option to be sure that you get your change (npm run start-no-cache
)