Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 40 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
name: Bug report
description: Report a reproducible problem with the site.
title: "bug: "
labels: [bug]
body:
- type: markdown
attributes:
value: Before submitting, check whether this problem has already been reported.
- type: textarea
id: summary
attributes:
label: What happened?
description: Describe the problem in a few sentences.
validations:
required: true
- type: textarea
id: reproduce
attributes:
label: Steps to reproduce
placeholder: "1. Open ...\n2. Select ...\n3. See the error"
validations:
required: true
- type: textarea
id: expected
attributes:
label: What did you expect to happen?
validations:
required: true
- type: input
id: environment
attributes:
label: Browser and device
placeholder: Chrome on Android, Firefox on Windows, etc.
- type: checkboxes
id: privacy
attributes:
label: Before submitting
options:
- label: I removed passwords, tokens and personal information from this report.
required: true
1 change: 1 addition & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
blank_issues_enabled: false
24 changes: 24 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
name: Feature request
description: Suggest an improvement for students or contributors.
title: "feature: "
labels: [enhancement]
body:
- type: textarea
id: problem
attributes:
label: What problem should this solve?
description: Explain who is affected and what they need to do.
validations:
required: true
- type: textarea
id: proposal
attributes:
label: What would you like to happen?
description: Describe a possible solution. Screenshots or examples are welcome.
validations:
required: true
- type: textarea
id: alternatives
attributes:
label: Other options or context
description: Add any alternatives, constraints or related issues.
14 changes: 14 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
version: 2
updates:
- package-ecosystem: npm
directory: /
schedule:
interval: weekly
day: monday
open-pull-requests-limit: 5
- package-ecosystem: github-actions
directory: /
schedule:
interval: weekly
day: monday
open-pull-requests-limit: 5
15 changes: 15 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
## Summary

<!-- What changed and why? -->

## Checks

- [ ] `npm run lint`
- [ ] `npm run typecheck`
- [ ] `npm test`
- [ ] `npm run build`
- [ ] Browser checks, when the change affects routes or interactions

## Review notes

<!-- Add screenshots for visual changes. Mention content sources and licences when relevant. -->
44 changes: 44 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
name: CI

on:
pull_request:
push:
branches: [main]
workflow_dispatch:

permissions:
contents: read

concurrency:
group: ci-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true

jobs:
verify:
name: Lint, typecheck, tests and build
runs-on: ubuntu-24.04
timeout-minutes: 15
steps:
- name: Check out repository
uses: actions/checkout@v5

- name: Set up Node.js
uses: actions/setup-node@v5
with:
node-version: 24
cache: npm

- name: Install dependencies
run: npm ci

- name: Lint
run: npm run lint

- name: Typecheck
run: npm run typecheck

- name: Unit tests
run: npm test

- name: Production build
run: npm run build
50 changes: 50 additions & 0 deletions CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
# Contributor Covenant Code of Conduct

## Our pledge

We are committed to making participation in this project a respectful experience for everyone,
regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics,
gender identity and expression, level of experience, education, socio-economic status,
nationality, personal appearance, race, religion, or sexual identity and orientation.

We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive,
and healthy community.

## Our standards

Examples of behavior that contributes to a positive environment include:

- Showing empathy and kindness toward other people.
- Giving and accepting constructive feedback respectfully.
- Taking responsibility, apologizing to those affected, and learning from mistakes.
- Focusing on what is best for the community.

Examples of unacceptable behavior include:

- Sexualized language or imagery, and unwelcome sexual attention.
- Trolling, insulting or derogatory comments, and personal or political attacks.
- Public or private harassment, including deliberate intimidation or stalking.
- Publishing another person's private information without permission.
- Other conduct that would reasonably be considered inappropriate in a professional setting.

## Enforcement responsibilities

Project maintainers are responsible for clarifying and enforcing these standards and may remove,
edit or reject comments, commits, code, issue reports and other contributions that do not align
with this Code. Maintainers may temporarily or permanently restrict participation for behavior
they consider inappropriate, threatening, offensive or harmful.

## Scope

This Code applies within project spaces and when someone is officially representing the project
in public spaces.

## Reporting

Report unacceptable behavior to **procoderji@gmail.com**. Reports will be reviewed and handled
confidentially. Maintainers will communicate the response to the reporter when appropriate.

## Attribution

This Code of Conduct is adapted from the [Contributor Covenant](https://www.contributor-covenant.org),
version 2.1, available at <https://www.contributor-covenant.org/version/2/1/code_of_conduct.html>.
65 changes: 65 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
# Contributing

Thanks for helping improve ProCoderJii Learning Hub. This guide explains how to set up the
project, check a change and open a pull request.

## Before you start

- Check existing issues and pull requests to avoid duplicate work.
- For a large change, open an issue first so the scope can be discussed.
- Follow the [Code of Conduct](CODE_OF_CONDUCT.md).
- For a security vulnerability, use the private reporting instructions in [SECURITY.md](SECURITY.md),
not a public issue.

## Set up the project

Use Node.js 22.18 or newer and npm:

```bash
git clone https://github.com/Coding-Professional/procoderji.git
cd procoderji
npm ci
npm run dev
```

Copy `.env.example` to `.env.local` only if you want to test the optional latest-video section.
The documented values are public; do not add credentials or private tokens to the example file.

## Make a change

- Keep each pull request focused on one problem or feature.
- Use TypeScript and the existing component and utility patterns.
- Keep controls usable with a keyboard and on a phone. Give form fields labels and interactive
elements visible focus states.
- Add or update a unit test for new data validation or reusable logic.
- Keep study material original. See [docs/content-guide.md](docs/content-guide.md) before adding
notes, guides or job listings.
- Do not add secrets, private user data, generated build output or unlicensed assets.

## Check your change

Run the checks that match the files you changed:

```bash
npm run lint
npm run typecheck
npm test
npm run build
```

For route, link and metadata changes, also run `npm run launch-check`. For browser interaction
changes, run `npm run e2e` with Chrome installed. The E2E runner refuses to run if `src/data` or
`src/content` has uncommitted changes because it temporarily installs synthetic fixtures. For
content changes, run `npm test` and `npm run launch-check` instead.

## Open a pull request

1. Create a branch from `main` with a short, descriptive name.
2. Make focused commits with clear messages.
3. Open a pull request against `main` and fill in the provided template.
4. Explain the user-facing change and list the checks you ran. Include screenshots for visual
changes when useful.
5. Keep the pull request up to date and respond to review feedback.

The maintainer reviews contributions before merging. Opening a pull request does not guarantee
that a proposed feature will be accepted; project scope and maintenance cost are part of review.
Loading
Loading