First off, thanks for taking the time to contribute!
All types of contributions are encouraged and valued. See the Table of Contents for different ways to help and details about how this project handles them. Please make sure to read the relevant section before making your contribution. It will make it a lot easier for us maintainers and smooth out the experience for all involved.
And if you like the project, but just don't have time to contribute, that's fine. There are other easy ways to support the project and show your appreciation, which we would also be very happy about:
- Star the project
- Tweet about it
- Refer this project in your project's readme
- Mention the project at local meetups and tell your friends/colleagues
This project and everyone participating in it is governed by the SnapNote Code of Conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior to fredsg222@gmail.com.
Before posing a question, thoroughly review the Documentation and explore existing Issues for potential solutions. Should your query persist:
- Open a detailed Issue.
- Provide extensive context regarding the encountered issue.
- Include relevant project and platform versions (nodejs, npm, etc).
Your concerns will be promptly addressed by our team, ensuring a smooth resolution process.
To familiarize yourself with the project, please read the README. Here are some resources to help you get started with open-source contributions:
- Setting up Git
- GitHub flow
- Finding ways to contribute to open-source on GitHub
- Collaborating with pull requests
Aim for a comprehensive bug report to expedite the resolution process:
- Ensure you are using the latest version.
- Verify if it's a bug, not an environmental issue (refer to documentation).
- Check the bug tracker for existing reports.
- Gather bug details: stack trace, OS, platform, version, input/output, and reproduction steps with older versions.
You must never report security related issues, vulnerabilities or bugs including sensitive information to the issue tracker, or elsewhere in public. Instead sensitive bugs must be sent by email to fredsg222@gmail.com.
We use GitHub issues to track bugs and errors. If you run into an issue with the project:
- Open an Issue.
- Detail expected vs. actual behavior, provide context, and share reproduction steps.
- Include collected information.
Once it's filed:
- The team labels the issue.
- Reproduction attempts are made.
- If reproducible, marked
needs-fix
for resolution.
This section guides you through submitting an enhancement suggestion for SnapNote, including completely new features and minor improvements to existing functionality. Following these guidelines will help maintainers and the community to understand your suggestion and find related suggestions.
- Ensure you're on the latest version.
- Thoroughly review documentation.
- Check existing suggestions here.
- Confirm alignment with the project's scope.
Enhancement suggestions are tracked as GitHub issues.
- Use a clear, descriptive title.
- Provide a detailed step-by-step description.
- Explain current and expected behavior.
- Optionally include screenshots or GIFs.
- Justify the enhancement's utility for most users.
SnapNote is made with CRXJS, React, TypeScript, Tailwind CSS, Redux, Font Awesome, and Vite. We aim to keep the code concise and consistent, allowing contributors to feel comfortable implementing bug fixes or enhancements.
The first guideline, highly encouraged for any code added to SnapNote, is always to leave comments about your code at any step you find viable. This can help others understand the code better at a first glance.
Tech Stack Specific:
- CRXJS: No rules here, but it is highly encouraged to use its main functionality, which helps test SnapNote as an extension in Google Chrome (or Chromium). To add SnapNote dev build as an extension, follow the guide at https://crxjs.dev/vite-plugin/getting-started/react/dev-basics.
- React:
- In this project, we solely use Functional Programming, but it is required to do it with variables
const example = () => {}
rather than functionsfunction example() {}
. This is to take advantage of hoisting, making the code more concise.
- In this project, we solely use Functional Programming, but it is required to do it with variables
- TypeScript:
- When declaring types, try your best to prevent using the old
React.FC<PropsType>(props)
instead, use({ destructuredProps }: PropsType)
. This is to prevent some known issues and limitations when usingReact.FC
. - When declaring types, put them at the top of the file and use
interface
to do so.
- When declaring types, try your best to prevent using the old
- Tailwind CSS:
- Tailwind classes can be a mess at times, so it is highly encouraged to be very efficient with classes by preventing the use of unnecessary classes.
- Dark Mode is implemented with Tailwind CSS classes; always do your best to keep the changing values like colors next to each other, specifically when declaring
dark:
on any class.
- Redux:
- Redux has been recently implemented to replace the Context API. Accordingly, any settings-related code should be added to the
settingsSlice.ts
file. Additionally, you can create new files to contain any state that you wish to share across the entire application.
- Redux has been recently implemented to replace the Context API. Accordingly, any settings-related code should be added to the
- Font Awesome: This project implements FontAwesome Pro 6.4.2 via CDN.
That's it. I would like to clarify that any sort of addition to SnapNote is heavily appreciated, and these guidelines are not to restrict you but to give you a path on how to interact with the code and community ❤️.