Thank you for considering contributing to our project! We appreciate your time and effort. To ensure a smooth collaboration, please follow these guidelines:
The project is developed in collaboration with Rensselaer Center for Open Source (RCOS). RCOS Contributors and HackRPI Organizing Team Contributors please read the section for RCOS/HackRPI Contributors.
If you are not an RCOS contributor we are glad to have your contribution too! Please read the section for External Contributors
If you need help or are interested in getting involved further please join our HackRPI Organizing Team Discord Server
You should have Write access to the repository by being a member of the HackRPI organization. If you are not a member of the HackRPI organization then please contact the current Director of Technology to get added.
Because you have write access to the repository you should be able to just clone the repository to make necessary changes.
git clone https://github.com/hack-rpi/HackRPI-Website-2024.git
Thank you for taking the time to contribute to our website! To contribute please make a fork of the repository in github and clone your fork
git clone <link-to-your-fork>
Take a look at our open issues on our issues page to find something to do.
Important
We use a modified version of the "GitFlow" method of working with branches. You can learn more about GitFlow here.
The only change we make to GitFlow is that we do not have release branches, only the develop and master branch.
For general features please create a branch off of the "develop" branch. Please do not branch from main unless it is a quick "hotfix."
Once you are satisfied with your feature and are ready to merge your changes into the rest of the codebase please follow the following steps.
- Run
npm run build
to verify that the build passes. - Run
npx prettier --write .
to format your code to the same style as the rest of the repository - Run
npx eslint .eslintrc.js
to run linting checks to ensure a uniform code style and catch potential bugs. - Test your code thoroughly to ensure it looks and works well on mobile and on desktop.
- Open a pull request into the develop branch to get your code reviewed and merged
There are a few code style things to mention:
- Please use Typescript
- For most pages there will be little to no JS functionality required for them and many will be purely HTML and CSS. But still please use TypeScript by using
.tsx
files instead of.jsx
- For most pages there will be little to no JS functionality required for them and many will be purely HTML and CSS. But still please use TypeScript by using
- Please use TailwindCSS
- Tailwind can take a little while to get used to, and often it is great to have their docs pinned / bookmarked. It does become very intuitive after a little while.
- If you are annoyed by the long class names Tailwind adds to the HTML then I would recommend the Inline Fold Extension for VSCode.
- Don't Repeat Yourself
- If you find that you are duplicating classes or elements, consider breaking them out into their own component so that they can be reused more easily.
- If you find yourself repeating code then try to refactor it out into another function.
- Stick with the Provided Formatting
- ESLint (Linter) and Prettier (Formatter) will help you with sticking with the provided formatting.
- You can run eslint with
npx eslint .eslintrc.js
- You can run prettier to format the repository with
npx prettier --write .
- Both of these will run automatically when you make your pull request but its good to stick with the formatting throughout development.
If you find a bug but aren't sure how to fix it, let us know by opening a GitHub Issue! In your bug reports please include the following things:
- A description of the bug
- The expected functionality
- Steps to reproduce the bug
- Screenshots (if you can get some)
Ideas flourish when people of all backgrounds contribute. Have a great idea but just not sure how to implement it? Let us know by opening a GitHub Issue!
In your Pull Requests please make a general description of what you have changed. No need to be to detailed but also don't just leave the description body blank or with "changing stuff."
If you can include screenshots to make it easier for us to review. 😊
This project is licensed under the MIT Open Source License which means that you are free to see our source code, copy it, redistribute it, and use it for commercial purposes without a warranty.
MIT License
Copyright (c) 2024 HackRPI
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.