Some checks are pending
Bidi Control Character Guard / bidi-control-guard (push) Waiting to run
Circular Dependency Check / Check for new circular dependencies (push) Waiting to run
Citus Migration Smoke / Combined migrations on single-node Citus (push) Waiting to run
E2E Fresh Install Tests / fresh-install-e2e (push) Waiting to run
ext-v2 guardrails / Run ext-v2 guard and ESLint (push) Waiting to run
Integration Tests / Check for relevant changes (push) Waiting to run
Integration Tests / ${{ (github.event_name == 'schedule' || github.event.inputs.suite == 'full') && 'Full integration suite' || 'Tier-1 integration subset' }} (push) Blocked by required conditions
Mobile checks / Mobile lint + typecheck (push) Waiting to run
Mobile checks / Mobile unit tests (push) Waiting to run
Mobile checks / Mobile dependency audit (report) (push) Waiting to run
Mobile checks / Mobile reproducibility checks (push) Waiting to run
Secrets guard (env backups) / Ensure no tracked env backup files (push) Waiting to run
Temporal Readiness / fast-readiness (push) Waiting to run
Temporal Readiness / docker-parity (push) Waiting to run
TypeScript Type Check / Nx affected typecheck (push) Waiting to run
Unit Tests / Skipped-test budget (push) Waiting to run
Unit Tests / Nx affected unit tests (push) Waiting to run
Unit Tests / Server unit coverage (informational) (push) Waiting to run
Validate Tenant Management Schema / Check for relevant changes (push) Waiting to run
Validate Tenant Management Schema / Validate Tenant Management Schema (push) Blocked by required conditions
EE Workflows Build Guard / ee-workflows-build-guard (push) Waiting to run
Excluded: .git, node_modules, secrets/, compose.env, assemblyscript tgz Source: /opt/alga-psa on psa.joliet.tech
95 lines
3.2 KiB
Markdown
95 lines
3.2 KiB
Markdown
# Contributing to Alga PSA
|
|
|
|
Thank you for your interest in contributing to Alga PSA! We appreciate contributions of all kinds, whether it's fixing bugs, improving documentation, suggesting new features, or helping other users.
|
|
|
|
## Ways to Contribute
|
|
|
|
- **Report bugs**: Open an issue describing the problem and steps to reproduce it
|
|
- **Suggest features**: Share ideas for new functionality via GitHub issues
|
|
- **Submit code**: Fix bugs or implement new features via pull requests
|
|
- **Improve documentation**: Help make our docs clearer and more comprehensive
|
|
- **Help others**: Answer questions in discussions and issues
|
|
|
|
## Getting Started
|
|
|
|
1. **Fork the repository** and clone it locally
|
|
2. **Set up your development environment** following the [Setup Guide](getting-started/setup_guide.md)
|
|
3. **Create a branch** for your changes:
|
|
```bash
|
|
git checkout -b feature/your-feature-name
|
|
# or
|
|
git checkout -b fix/issue-description
|
|
```
|
|
|
|
## Development Guidelines
|
|
|
|
- Follow existing code patterns and conventions in the codebase
|
|
- See [Configuration Standards](getting-started/configuration_standards.md) for config conventions
|
|
- Write tests for new functionality and ensure existing tests pass:
|
|
```bash
|
|
npm run test
|
|
```
|
|
|
|
## NX Modules (Monorepo)
|
|
|
|
Alga PSA uses NX + npm workspaces. Shared infrastructure lives in **horizontal** packages (e.g. `@alga-psa/core`, `@alga-psa/db`, `@alga-psa/types`), while business domains live in **vertical** packages (e.g. `@alga-psa/clients`, `@alga-psa/billing`).
|
|
|
|
### Create a New Module
|
|
|
|
Use the generator (recommended):
|
|
|
|
```bash
|
|
NX_DAEMON=false npx nx g @alga-psa/generators:alga-module --name <module-name> --type vertical --directory packages
|
|
```
|
|
|
|
This creates `packages/<module-name>/` with `src/`, `package.json`, `tsconfig.json`, and `project.json`.
|
|
|
|
### Dependency Rules
|
|
|
|
- Vertical modules may import **horizontal** modules (`@alga-psa/*` infra packages).
|
|
- Vertical modules should **not** import other vertical modules directly.
|
|
- Next.js routes remain under `server/src/app/` but should be **thin shims** that import from feature packages.
|
|
- Keep exports intentional: prefer a module `src/index.ts` barrel and avoid deep imports unless explicitly supported.
|
|
|
|
## Submitting Changes
|
|
|
|
### Pull Request Process
|
|
|
|
1. **Update your branch** with the latest changes from `main`
|
|
2. **Test your changes** thoroughly
|
|
3. **Write a clear PR description** explaining:
|
|
- What the change does
|
|
- Why it's needed
|
|
- Any breaking changes or considerations
|
|
4. **Link related issues** using keywords like "Fixes #123"
|
|
|
|
### Commit Messages
|
|
|
|
Write clear, concise commit messages that explain what changed and why:
|
|
|
|
```
|
|
feat: add automatic time tracking for ticket views
|
|
|
|
fix: resolve billing calculation error for quarterly cycles
|
|
|
|
docs: update setup guide with new environment variables
|
|
```
|
|
|
|
## Reporting Issues
|
|
|
|
When reporting bugs, please include:
|
|
|
|
- A clear, descriptive title
|
|
- Steps to reproduce the issue
|
|
- Expected vs actual behavior
|
|
- Your environment (OS, browser, Node version)
|
|
- Relevant logs or screenshots
|
|
|
|
## Questions?
|
|
|
|
If you have questions about contributing, feel free to open a discussion on GitHub. We're here to help you get started.
|
|
|
|
---
|
|
|
|
Thank you for helping make Alga PSA better!
|