Skip to content

Table of Contents

Contributing & Working Conventions

This file serves two audiences: the author's daily workflow conventions and how outside contributors can help.

For outside contributors 🙌

This is a personal learning journal, but corrections and suggestions are very welcome — they make it a better resource for everyone.

  • Found a factual error in a note or cheatsheet? Open an issue with the type: docs label, or send a PR.
  • Have a better idiom or a clearer explanation? PRs welcome — keep the teaching tone.
  • Questions / "how did you...?" Use Discussions, not issues.
  • Please be kind and constructive. By contributing you agree your contributions are MIT-licensed.

Daily workflow (author)

  1. ./scripts/new-day.sh — scaffolds journal/month-NN/day-NNN.md from the template.
  2. Follow ROADMAP.md for the day. Write code in the matching folder.
  3. Fill the day note completely (especially Mistakes, Active Recall, Reflection).
  4. Update LEARNING_LOG.md (one line) and PROGRESS.md.
  5. Commit (see below). End each week/month with the review template + tag.

Git conventions

Branching

  • main — always green (CI passes). Daily notes can commit straight to main.
  • Feature branches for projects: project/<name>, exercise/<topic>, docs/<thing>.
  • Open a PR into main for anything non-trivial so CI runs and you practice reviews.

Commit messages — Conventional Commits

<type>(<scope>): <short summary>
Type Use for
feat new code/example/feature
fix bug fix
docs notes, journal, README, cheatsheets
test adding/altering tests
refactor restructuring without behavior change
chore tooling, deps, scaffolding
perf performance work
style formatting/lint only

Scopes: examples, exercises, projectNN, journal, interview, cheatsheets, ci, repo.

Examples:

feat(examples): demonstrate slice append aliasing
docs(journal): day 012 — strings, runes, and bytes
test(project01): table-driven tests for todo store
chore(ci): add golangci-lint workflow

Tags & releases

  • Tag the end of each month: git tag -a v0.N.0 -m "Month N complete: <theme>".
  • Write release notes from the CHANGELOG monthly block. Capstone = v1.0.0.

Contribution graph & commit attribution

For the daily commits to register on the GitHub contribution graph, the commit author email must be linked to the GitHub account and the commit must land on the default branch (main). Both are already set up here.

  • Author identity is set per-repo (so it can't drift):
git config user.name  "nabin747"
git config user.email "nabinshrestha747@gmail.com"   # verified on the GitHub account

If you'd rather not expose a real email in public history, use the account's no-reply address instead — it still links to your profile:

git config user.email "81608352+nabin747@users.noreply.github.com"

Verify attribution after pushing: on GitHub the commit should show your avatar/username, or via API gh api repos/nabin747/go-from-zero/commits --jq '.[0].author.login' should print nabin747 (not null).

  • Private repo visibility. This repo is private, so the green squares are hidden from other people by default (you always see your own). To show them publicly — anonymized; viewers see the activity, not the repo — enable Settings → Profile → "Include private contributions on my profile" (https://github.com/settings/profile). There's no API for this toggle.

  • One real commit per study day. The graph fills in honestly from the daily workflow — don't backdate commits (GIT_AUTHOR_DATE/GIT_COMMITTER_DATE) to manufacture a streak. A real, steady history is the portfolio signal; a faked one is a liability if anyone looks closely.

Code standards

  • gofmt/goimports clean; go vet ./... and golangci-lint run pass.
  • Idiomatic per Effective Go and the Google Go Style Guide.
  • Tests for non-trivial code; race-clean (go test -race).
  • Each project folder has its own README.md and (where applicable) go.mod.

Markdown standards

See docs/STANDARDS.md. In short: one H1 per file, ToC for long docs, relative links, fenced code blocks with language, mermaid for diagrams, every directory has a README.md index.


README