@@ -5,11 +5,17 @@ learning and credential verification platform built on the Stellar blockchain, a
55grows through community contributions of every size — from typo fixes to new smart
66contracts.
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
2192936 . 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+
247420Thank you for helping build decentralized education on Stellar! ⭐
0 commit comments