Thank you for your interest in contributing to Promptly! This document provides guidelines and instructions for contributing.
- Code of Conduct
- Getting Started
- Development Setup
- Making Changes
- Coding Standards
- Pull Request Process
- Reporting Issues
This project adheres to the Contributor Covenant Code of Conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior to support@spectrayan.com.
- Fork the repository on GitHub
- Clone your fork locally
- Create a branch for your change
- Make your changes with appropriate tests
- Submit a pull request
| Tool | Version |
|---|---|
| Java | 21+ (JDK) |
| Node.js | 22+ |
| pnpm | 10+ |
| Maven | 3.9+ |
| Docker | Latest |
# Clone your fork
git clone https://github.com/<your-username>/promptly.git
cd promptly
# Install frontend dependencies
pnpm install
# Start MongoDB (Atlas Local with vector search)
docker compose up -d
# Seed the database
docker exec -i promptly-mongodb mongosh promptly < seed-data/mongodb/init.js
# Generate API code from OpenAPI spec
pnpm run build:openapi
# Start the platform
pnpm run start:all# Backend only (Spring Boot on :8080)
pnpm run start:backend
# Frontend only (Angular on :4200)
pnpm run start:frontend# Backend unit tests
cd apps/backend/core && mvn test
# Frontend unit tests
cd apps/frontend/web/promptly && npx ng test --watch=falseUse descriptive branch names with a type prefix:
feat/add-notification-preferences
fix/sse-reconnect-race-condition
refactor/config-properties-hierarchy
docs/contributing-guide
Follow Conventional Commits:
feat(backend): add notification count endpoint
fix(frontend): gate SSE connection behind auth state
refactor(config): consolidate @Value into PromptlyProperties
docs: add contributing guide
chore: update gitignore
Format: <type>(<scope>): <description>
| Type | Purpose |
|---|---|
feat |
New feature |
fix |
Bug fix |
refactor |
Code restructuring (no behavior change) |
docs |
Documentation only |
test |
Adding or updating tests |
chore |
Build, CI, tooling changes |
perf |
Performance improvement |
- Java 21 — use records, sealed classes, pattern matching where appropriate
- Spring Modulith — respect module boundaries; modules communicate via events only
- Hexagonal architecture — domain core must be framework-free POJOs
- Reactive — use
Mono/Fluxthroughout; no blocking calls - Configuration — use
PromptlyPropertieshierarchy, never@Value - API-first — changes to REST endpoints start in the OpenAPI spec, then regenerate
- Testing — new features require unit tests; use
@WebFluxTestfor controllers
- Angular 18+ — standalone components, signals, new control flow
- NgRx — all state management via store, effects, and facades
- Material 3 — use Angular Material components with the design system
- TypeScript strict mode — no
anytypes, proper null checks - Generated SDK — use
@promptly/clientfor API calls, never rawHttpClient
If your change modifies a REST API:
- Update the OpenAPI spec in
libs/shared/openapi-spec/src/main/resources/openapi/ - Run
pnpm run build:openapito regenerate server interfaces and client SDKs - Implement the generated interface in your controller
- Update any affected SDK consumers
- Ensure your branch is up to date with
main - All tests pass — CI will verify this automatically
- Fill out the PR template — describe what changed and why
- Link related issues — use
Closes #123orFixes #456 - One approval required — a maintainer will review your PR
- Squash merge — PRs are squash-merged to keep history clean
- Code follows the project's coding standards
- Tests added/updated for the change
- Documentation updated if needed
- OpenAPI spec updated if API changed
- No hardcoded secrets or credentials
- Commit messages follow Conventional Commits
Use the Bug Report template and include:
- Steps to reproduce
- Expected vs actual behavior
- Environment details (OS, Java version, browser)
- Relevant logs or screenshots
Use the Feature Request template and describe:
- The problem you're trying to solve
- Your proposed solution
- Any alternatives you've considered
We celebrate every contributor! All individuals and organizations contributing to Promptly are recognized in our ACKNOWLEDGMENTS.md.
- General questions: Open a Discussion
- Bug reports: Open an Issue
- Security vulnerabilities: See SECURITY.md
- Email: developer@spectrayan.com
Thank you for contributing to Promptly! 🚀