Thank you for your interest in contributing! This guide will help you get started.
- Bun >= 1.0.0
- AWS CLI configured with SSO profiles (for testing)
- Git
git clone https://github.com/tux86/ssomatic.git
cd ssomatic
bun install
# Run CLI
bun run start
# Run web UI (dev mode)
bun run dev
# Lint
bun run lintssomatic/
├── src/
│ ├── aws/ # Shared AWS credential logic
│ ├── cli/ # Terminal UI (React/Ink) + entry point
│ └── web/
│ ├── server.ts # Bun HTTP server + RPC bridge
│ └── client/ # Web UI (React/Vite/Tailwind)
├── .github/ # Workflows and templates
└── package.json
We use Conventional Commits:
type(scope): description
Types: feat, fix, docs, style, refactor, perf, test, build, ci, chore, revert
Scopes: cli, web, aws, deps, ci
Commits are validated by commitlint via a Git hook.
Releases are fully automated via semantic-release. When commits land on main, the CI pipeline determines the version bump from commit types (feat → minor, fix → patch) and creates a GitHub release with the binary attached. No manual steps needed.
- Fork the repo and create a branch from
main - Make your changes with conventional commits
- Ensure
bun run lintpasses - Open a PR using the provided template
- TypeScript strict mode
- React functional components with hooks
- Business logic in
src/aws/sso.ts(UI-agnostic) - CLI components use Ink; web components use React/Tailwind
bun run build
# Output: dist/ssomatic + dist/web/Open an issue or start a discussion.