Skip to content

Commit ece47b1

Browse files
authored
Merge pull request #213 from Max347bot/docs/issue-210-contributor-onboarding-guide
docs: create comprehensive contributor onboarding guide (Closes #210)
2 parents 44c24a5 + e83f748 commit ece47b1

2 files changed

Lines changed: 568 additions & 2 deletions

File tree

CONTRIBUTING.md

Lines changed: 175 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,17 @@ learning and credential verification platform built on the Stellar blockchain, a
55
grows through community contributions of every size — from typo fixes to new smart
66
contracts.
77

8-
This guide explains how to set up your environment, the standards we follow, and how to
9-
get a change merged.
8+
This guide is your **comprehensive onboarding resource** as a new contributor. It covers
9+
environment setup, the monorepo structure, coding conventions, the pull request workflow,
10+
and how to find your first issue to work on.
11+
12+
> **Just landed here and want to get started fast?** Jump to the
13+
> [First-Time Contributor Checklist](#first-time-contributor-checklist).
1014
1115
## Table of Contents
1216

17+
- [First-Time Contributor Checklist](#first-time-contributor-checklist)
18+
- [Finding and Claiming Good First Issues](#finding-and-claiming-good-first-issues)
1319
- [Code of Conduct](#code-of-conduct)
1420
- [Ways to Contribute](#ways-to-contribute)
1521
- [Project Layout](#project-layout)
@@ -20,8 +26,76 @@ get a change merged.
2026
- [Testing Requirements](#testing-requirements)
2127
- [Pull Request Process](#pull-request-process)
2228
- [Review Process](#review-process)
29+
- [Troubleshooting Common Setup Issues](#troubleshooting-common-setup-issues)
2330
- [Reporting Bugs & Requesting Features](#reporting-bugs--requesting-features)
2431
- [Security Issues](#security-issues)
32+
- [Additional Resources](#additional-resources)
33+
34+
## First-Time Contributor Checklist
35+
36+
If you are brand new to StarkEd, follow this checklist to get your first PR merged:
37+
38+
- [ ] **1. Fork and clone the repository** — see [Getting Started](#getting-started).
39+
- [ ] **2. Install all prerequisites** — Node.js v18+, pnpm, Rust + Soroban CLI, PostgreSQL, Redis.
40+
Full details in [docs/DEVELOPMENT.md](docs/DEVELOPMENT.md).
41+
- [ ] **3. Run `pnpm install:all` and verify your setup** — the backend, frontend, and contracts
42+
should all build without errors. Use `pnpm build` from the root, then run a few tests
43+
(`pnpm test` in each package).
44+
- [ ] **4. Read the [Architecture Overview](docs/ARCHITECTURE.md)** — understand how the three
45+
packages (contracts, backend, frontend) fit together.
46+
- [ ] **5. Find a [good first issue](#finding-and-claiming-good-first-issues)** — look for issues
47+
labeled `good first issue` on the [issues board](https://github.com/Epondia/starked-education/issues).
48+
- [ ] **6. Comment on the issue** — write a short comment like "I'd like to work on this" so a
49+
maintainer can assign it to you.
50+
- [ ] **7. Create a topic branch** — follow the [branch naming convention](#development-workflow).
51+
- [ ] **8. Make focused changes and write tests** — see [Coding Standards](#coding-standards) and
52+
[Testing Requirements](#testing-requirements).
53+
- [ ] **9. Run the existing test suite**`pnpm test` (backend), `pnpm test` (frontend), or
54+
`cargo test` (contracts) in each package you touched, to confirm nothing is broken.
55+
- [ ] **10. Run linters and type checks** — make sure `pnpm run lint` and `pnpm run typecheck`
56+
(backend) or `pnpm run type-check` (frontend) pass for the packages you touched. For
57+
contracts, run `cargo fmt` and `cargo clippy`.
58+
- [ ] **11. Open a pull request** — fill out the PR template completely and link the issue with
59+
`Closes #<number>`.
60+
- [ ] **12. Respond to review feedback** — be patient and address all comments.
61+
62+
If you hit a snag at any step, check the [Troubleshooting](#troubleshooting-common-setup-issues)
63+
section below or the one in [docs/DEVELOPMENT.md](docs/DEVELOPMENT.md).
64+
65+
## Finding and Claiming Good First Issues
66+
67+
We use the `good first issue` label to highlight tasks that are especially welcoming for
68+
new contributors. These issues are scoped to be approachable — they typically require
69+
little domain knowledge and have clear acceptance criteria.
70+
71+
### How to find them
72+
73+
1. **Browse the issues board** — visit
74+
[github.com/Epondia/starked-education/issues](https://github.com/Epondia/starked-education/issues)
75+
and filter by the `good first issue` label.
76+
2. **Look at the labels area** on each issue — the label tells you which part of the
77+
stack the work touches (`area: frontend`, `area: backend`, `area: contracts`,
78+
`documentation`, `area: devops`). Pick one that matches your skills or interests.
79+
3. **Read the priority**`priority: low` or `priority: medium` issues are usually less
80+
urgent and a better fit for learning the codebase.
81+
4. **Check the assignee** — if nobody is assigned, the issue is available.
82+
83+
### How to claim an issue
84+
85+
1. Comment on the issue with something like:
86+
> I'd like to work on this! Can I be assigned?
87+
2. A maintainer (or the GrantFox bot) will assign you. The bot typically responds within
88+
a few seconds.
89+
3. Once assigned, the bot will remind you to open a PR referencing the issue (e.g.,
90+
`Closes #<number>`).
91+
92+
### Tips for your first contribution
93+
94+
- Start with **documentation** issues if you are new to the stack — they help you learn
95+
the project while making an immediate impact.
96+
- If an issue looks too large, ask in the comments whether a smaller slice is available.
97+
- Don't be afraid to ask questions! Maintainers are happy to clarify requirements or
98+
point you to relevant files.
2599

26100
## Code of Conduct
27101

@@ -219,6 +293,76 @@ all three packages on every pull request. Please make sure these pass locally fi
219293
6. Respond to review feedback by pushing additional commits (avoid force-pushing during
220294
active review so reviewers can see incremental changes).
221295

296+
## Troubleshooting Common Setup Issues
297+
298+
Below are some of the most frequent problems new contributors encounter and how to
299+
resolve them. For a more complete list, see the Troubleshooting section in
300+
[docs/DEVELOPMENT.md](docs/DEVELOPMENT.md).
301+
302+
### `wasm32-unknown-unknown` target missing
303+
304+
```bash
305+
rustup target add wasm32-unknown-unknown
306+
```
307+
308+
### Backend cannot connect to the database or Redis
309+
310+
- Confirm PostgreSQL and Redis are running (`pg_isready`, `redis-cli ping`).
311+
- Double-check `DATABASE_URL` and `REDIS_URL` in `backend/.env`.
312+
- If using Docker, make sure the containers are up (`docker ps`).
313+
314+
### Frontend build runs out of memory
315+
316+
Increase the Node.js heap size:
317+
318+
```bash
319+
NODE_OPTIONS="--max-old-space-size=4096" pnpm run build
320+
```
321+
322+
This is the same setting CI uses.
323+
324+
### Type errors after pulling new changes
325+
326+
Reinstall dependencies in the affected workspace:
327+
328+
```bash
329+
# In the affected package directory
330+
pnpm install
331+
```
332+
333+
### `pnpm install:all` fails
334+
335+
- Make sure you are using **pnpm** (not npm or yarn). Install it with `npm i -g pnpm`.
336+
- Ensure `cargo` is installed and on your `PATH` (run `cargo --version` to verify).
337+
- Try running the steps individually:
338+
```bash
339+
pnpm install # install JS dependencies
340+
cd contracts && cargo build # build Rust contracts
341+
```
342+
343+
### Stellar CLI not found
344+
345+
Install it via Cargo:
346+
347+
```bash
348+
cargo install --locked stellar-cli
349+
```
350+
351+
### Port conflicts (3000, 5000, or 5432 already in use)
352+
353+
- Find and kill the process using the port:
354+
```bash
355+
lsof -ti:3000 | xargs kill -9 # for frontend (Next.js default)
356+
lsof -ti:5000 | xargs kill -9 # for backend (Express default)
357+
```
358+
- Alternatively, set custom ports in your `.env` files.
359+
360+
### Tests fail with "Cannot find module" errors
361+
362+
- Make sure you have run `pnpm install` in the package whose tests are failing.
363+
- For the backend, ensure `ts-jest` is configured correctly in `jest.config.js`.
364+
- For the frontend, make sure Jest has access to the correct `tsconfig`.
365+
222366
## Review Process
223367

224368
- At least one maintainer review is required before merging.
@@ -244,4 +388,33 @@ information to include.
244388

245389
---
246390

391+
## Additional Resources
392+
393+
These companion documents provide deeper context on specific topics:
394+
395+
| Document | What it covers |
396+
|---|---|
397+
| [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) | System design, component interactions, data flow diagrams, and the request lifecycle |
398+
| [docs/ARCHITECTURE_DECISIONS.md](docs/ARCHITECTURE_DECISIONS.md) | Key architecture decision records (ADRs) explaining why we chose specific technologies and patterns |
399+
| [docs/DEVELOPMENT.md](docs/DEVELOPMENT.md) | Detailed local development environment setup for all three packages |
400+
| [docs/TESTING.md](docs/TESTING.md) | Testing conventions, tools, and coverage expectations for each package |
401+
| [README.md](README.md) | Project overview, feature list, technology stack, and quick-start instructions |
402+
| [.github/PULL_REQUEST_TEMPLATE.md](.github/PULL_REQUEST_TEMPLATE.md) | The PR checklist you must complete before submitting |
403+
404+
### Architecture Diagrams
405+
406+
A system-level architecture diagram showing how the three packages and external services
407+
connect is available in [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md). That document also
408+
walks through a typical request lifecycle (e.g., issuing a credential) to illustrate how
409+
each component participates.
410+
411+
### Video Walkthrough
412+
413+
A video walkthrough of first-time setup is planned. In the meantime, follow the
414+
step-by-step instructions in the [First-Time Contributor Checklist](#first-time-contributor-checklist)
415+
above and refer to [docs/DEVELOPMENT.md](docs/DEVELOPMENT.md) for detailed per-package
416+
setup commands.
417+
418+
---
419+
247420
Thank you for helping build decentralized education on Stellar! ⭐

0 commit comments

Comments
 (0)