Thank you for your interest in contributing to the OctoCAT Supply Chain Management Workshop! This project is a hands-on workshop environment for learning GitHub Copilot features.
Important: This is a workshop application designed to teach GitHub Copilot capabilities through hands-on labs. The primary objective is to provide a clean, realistic codebase for workshop participants to practice AI-assisted development. All contributions should keep this goal in mind.
We welcome contributions in several areas:
Contributions to the actual application code (frontend and API) should:
- Be realistic and representative of typical enterprise applications
- Support existing or new workshop lab scenarios
- Follow existing patterns and coding standards
- Include tests where appropriate
Workshop lab instructions live in the workshop/labs/ directory:
- lab-01-coding-agent — Coding Agent: Zero to PR
- lab-02-agent-mode — Agent Mode: Feature Build
- lab-03-code-review — Code Review: AI First-Pass Review
- (and more — see the README for the full list)
When contributing to workshop labs:
- Keep scenarios realistic and relevant to enterprise developers
- Ensure steps are clear and reproducible
- Update related documentation if you change application behavior
- Test your lab walkthrough end-to-end before submitting
Documentation improvements are always welcome:
- Architecture documentation in
docs/ - Setup and configuration instructions
- Troubleshooting guides
- Workshop best practices
-
Node.js 18 or higher
-
npm (comes with Node.js)
-
Git
-
(Optional) GitHub Personal Access Token (PAT) for MCP server demos
-
Clone the repository:
git clone <your-repo-url> cd <repo-name>
-
Install dependencies:
npm install
-
Build the projects:
npm run build
-
Initialize the database:
npm run db:seed
-
Start the development servers:
npm run dev
This starts both the API (port 3000) and frontend (port 5173).
-
Create a feature branch:
git checkout -b feature/your-feature-name
-
Make your changes following the guidelines below
-
Test your changes:
# Run all tests npm test # Run API tests only npm run test:api # Run frontend tests only npm run test:frontend # Lint frontend code npm run lint
-
Build to ensure no errors:
npm run build
-
Commit your changes with a clear, descriptive commit message:
git add . git commit -m "feat: Add shopping cart demo scenario"
-
Push to your fork and create a Pull Request:
git push origin feature/your-feature-name
- Use TypeScript for type safety (avoid
anyunless absolutely necessary) - Follow existing patterns in the codebase
- Use meaningful variable and function names
- Write tests for new features and bug fixes
- Run Prettier to format code:
npm run prettify
- Use functional components with hooks
- Follow existing component structure patterns
- Use Tailwind CSS for styling (avoid custom CSS when possible)
- Ensure responsive design (test at mobile, tablet, and desktop sizes)
- Follow accessibility best practices (semantic HTML, ARIA labels when needed)
- Follow RESTful conventions
- Use the repository pattern for data access
- Validate inputs and handle errors appropriately
- Update Swagger/OpenAPI documentation for new endpoints
- Use parameterized SQL queries (never build raw query strings with user input)
- Add migrations for schema changes in
api/database/migrations/ - Never modify existing migration files - always create a new sequential file
- Update seed data in
api/database/seed/if needed - Test migrations with:
npm run db:migrate --workspace=api
All code changes should include appropriate tests:
- Unit tests for business logic and utilities
- Integration tests for API endpoints
- Component tests for complex React components
- Ensure tests are deterministic and don't depend on external services
Run tests before submitting:
npm testUse conventional commit format:
feat:- New featuresfix:- Bug fixesdocs:- Documentation changestest:- Test additions or updatesrefactor:- Code refactoringchore:- Build process or auxiliary tool changes
Example:
feat: Add product filtering to catalog page
- Implement filter by category
- Add price range slider
- Update API endpoint to support filtering
- Create a branch in the repository
- Make your changes following the guidelines above
- Submit a pull request for review
If you're a workshop participant and want to share improvements:
- Fork the repository to your account
- Document your changes thoroughly in your pull request description
- Include testing evidence (screenshots, test output, etc.)
- Open an issue describing your proposed improvement
All contributions go through a review process:
- Automated checks - Linting, tests, and builds must pass
- Code review - At least one maintainer will review your changes
- Workshop validation - Changes that affect workshop labs will be tested
- Documentation review - Ensure docs are updated for behavioral changes
- General questions: Open a GitHub Discussion in this repository
- Bug reports: Open an Issue with details
- Feature proposals: Open an Issue describing the workshop scenario
- Main README - Project overview and setup
- Workshop Labs - Complete workshop labs
- Facilitator Guide - Workshop facilitation guide
- Architecture Documentation - System design details
- Custom Instructions - Copilot configuration for this repo
Your contributions help make this workshop better for everyone learning GitHub Copilot. We appreciate your time and effort!
Remember: This is a workshop application designed to teach GitHub Copilot features. Keep the learning experience and lab effectiveness as your primary consideration when contributing.