Thank you for considering a contribution to OrgExplorer, an AOSSIE project. This guide describes how the repository is set up today and how we expect contributions to flow.
By participating, you agree to communicate respectfully with maintainers and other contributors, in line with AOSSIE community norms on Discord and GitHub.
Project coordination happens on Discord. GitHub is used for code and issue tracking; important updates and questions should also reach maintainers on Discord.
- Join the AOSSIE Discord server before you start substantial work.
- Share a link to your PR in the relevant channel so reviewers can find it.
- PRs that are hard to discover or lack context may be delayed—see also the pull request template.
- How you can contribute
- Project overview
- Getting started
- Development workflow
- Pull request guidelines
- Code style
- Community notes
Before opening an issue, search existing ones to avoid duplicates. Useful bug reports include:
- A clear title and short summary
- Steps to reproduce
- Expected vs actual behavior
- Screenshots or recordings if the UI is involved
- Environment (OS, browser, Node.js version if relevant)
- Check whether the idea already exists as an issue
- Describe the feature and the problem it solves
- Add examples or mockups if helpful
- Open or pick an issue — For non-trivial work, tie your change to an issue (feature, bug, or docs).
- Comment / get aligned — Prefer waiting for maintainer assignment or confirmation on Discord before large efforts, to avoid duplicate or rejected work.
- Open a PR — Keep the change focused; unrelated drive-by edits make review harder.
OrgExplorer is a single-package frontend application:
| Area | Stack |
|---|---|
| UI | React 19 |
| Language | TypeScript |
| Build & dev server | Vite (with @vitejs/plugin-react) |
| Linting | ESLint 9 (flat config in eslint.config.js) |
Approximate layout:
OrgExplorer/
├── public/ # Static assets (e.g. logos)
├── src/
│ ├── App.tsx # Root UI
│ ├── main.tsx # React entry
│ └── *.css # Styles
├── index.html
├── vite.config.ts
├── eslint.config.js
├── tsconfig.json # TypeScript project references
└── package.json
There is no test script in package.json yet. Before opening a PR, run lint and build locally (see below).
- Node.js — Use a current LTS release (for example 20.x or 22.x). If
npm run devornpm run buildfails, try upgrading Node first. - npm — Comes with Node; this repo uses
package-lock.json, so prefernpm installfor consistent dependency trees.
-
Fork the repository on GitHub (if you do not have write access to the org repo).
-
Clone your fork and enter the project root:
git clone https://github.com/YOUR_USERNAME/OrgExplorer.git cd OrgExplorer -
Add
upstream(replace the URL if the canonical remote differs):git remote add upstream https://github.com/AOSSIE-Org/OrgExplorer.git
-
Install dependencies:
npm install
-
Run the dev server:
npm run dev
Vite prints a local URL (typically
http://localhost:5173). Open it in your browser. -
Production build (sanity check):
npm run build
-
Preview the production build (optional):
npm run preview
If the project later adds a .env.example, copy it to .env and fill in values as documented. Until then, the default setup does not require env files for local development.
Create a branch from the latest default branch (usually main):
git fetch upstream
git checkout main
git pull upstream main
git checkout -b docs/your-change-description
# or: fix/issue-42-short-name
# or: feat/short-feature-name- Prefer small, reviewable commits with clear messages.
- Update docs when behavior or setup changes.
- Remove stray
console.logand debug code before submitting.
npm run lint
npm run buildFix any ESLint or TypeScript errors reported by these commands.
Conventional prefixes help scan history:
| Prefix | Use for |
|---|---|
feat: |
New user-facing behavior |
fix: |
Bug fixes |
docs: |
Documentation only |
style: |
Formatting, no logic change |
refactor: |
Internal restructuring |
chore: |
Tooling, config, dependencies |
Example:
git commit -m "docs: refine CONTRIBUTING for Vite and React setup"git push origin docs/your-change-descriptionOn GitHub, open a pull request against the upstream default branch. Use the PR template, link the issue (e.g. Fixes #23), and post on Discord as requested in the checklist.
git fetch upstream
git rebase upstream/main
# resolve conflicts if any, then:
git push --force-with-lease origin docs/your-change-descriptionUse rebase or merge according to what maintainers prefer; rebasing keeps history linear.
-
npm run lintpasses -
npm run buildpasses - Documentation updated when setup or behavior changes
- Commits are understandable without reading every file
- Branch is reasonably up to date with upstream
- Fill in
.github/PULL_REQUEST_TEMPLATE.md. - Link related issues (
Fixes #123orRelated to #123). - Add screenshots or recordings for visible UI changes.
- Mention anything reviewers should know (breaking changes, follow-ups).
- Share the PR link on Discord.
- Respond to review feedback; additional commits on the same branch are fine.
- The PR template includes an AI notice: if you used AI-assisted tooling, you are still responsible for correctness, build, and lint.
## Description
Brief summary of changes.
## Related issue
Fixes #23
## Testing
- `npm run lint`
- `npm run build`
- Manual: …
## Checklist
See PR template.- Follow the existing ESLint setup in
eslint.config.js(typescript-eslint, React Hooks, React Refresh for Vite). - Prefer
const; useletonly when reassignment is needed. - Use meaningful names; keep components and functions focused.
- Match formatting and patterns in nearby files.
- Avoid unnecessary dependencies.
- Do not commit secrets or large generated artifacts unrelated to the feature.
- Be respectful and constructive.
- If you cannot finish an issue, say so on Discord so it can be reassigned.
- If a PR has no response after a reasonable time, follow up on Discord rather than only pinging on GitHub.
- One primary assignee per issue unless maintainers say otherwise.
- Check for an existing PR before duplicating work.
Thank you for helping improve OrgExplorer.