Skip to main content
Version: v0.5.1-alpha

Contributing to Ambrosia POS

Thank you for your interest in contributing to Ambrosia POS! We love community collaboration. Whether you're fixing a bug, adding a feature, improving documentation, or helping with community support, your help is welcome to build the future of Bitcoin payments.

Table of Contents​

Code of Conduct​

This project adheres to our Code of Conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior to contact@ambrosiapay.com.

Getting Started​

Prerequisites​

Before you start, ensure you have the necessary dependencies installed. Please refer to our Project Dependencies Guide for detailed instructions on installing:

  • Java 21 (JDK)
  • Node.js
  • Docker
  • Gradle

First-time Contributors​

If you're new to open source, check out:

How to Contribute​

Types of Contributions​

We welcome several types of contributions:

  • πŸ” Review our code on GitHub

  • πŸ› Report bugs or suggest improvements

  • πŸ’‘ Contribute ideas for new features

  • πŸ§ͺ Test the beta and report issues

  • πŸ“ Documentation: Improve our Docs, README, or code comments

  • 🍴 Fork the repository and send your Pull Requests (PRs)

Before You Start​

  1. Search existing issues to avoid duplicates.
  2. Discuss major changes by opening an issue first.

Development Setup​

A clean, structured guide to run Ambrosia‑POS locally with native tools.

Requirements:​

  • SDKMAN (official: https://sdkman.io/)
    curl -s "https://get.sdkman.io" | bash
    source "$HOME/.sdkman/bin/sdkman-init.sh"
  • Java 21 (Temurin):
    sdk list java
    sdk install java 21-tem
    java -version
  • Gradle:
    sdk install gradle
    gradle -v
  • Node.js >= 18 and npm.
  • phoenixd (Lightning):
    curl -fsSL https://raw.githubusercontent.com/olympus-btc/ambrosia-dev/master/scripts/install.sh | bash -s -- --yes

Quick check​

java -version && gradle -v | head -n1 && node -v && npm -v

Setup Steps​

  1. Fork the repository on GitHub.

  2. Clone your fork locally:

    git clone https://github.com/YOUR-USERNAME/ambrosia.git
    cd ambrosia
  3. Step 1 Β· Start phoenixd After installation, ensure the service is running and ~/.phoenix is initialized as per the Mastering phoenixd guide.

  4. Step 2 Β· Server / Backend (Kotlin/Ktor):

    cd server
    ./gradlew run # API on :9154
    • Tests: ./gradlew test
  5. Step 3 Β· Client / Frontend (Next.js):

    cd client
    npm install
    npm run dev # web on :3000
    • Lint: npm run lint
    • Tests: npm test
  6. Step 4 Β· Electron Setup (Desktop):

    cd electron
    npm install
    npm run dev

    (See the Electron README for more details)

Local endpoints​

Troubleshooting​

Tips
  • Use the ./gradlew wrapper to avoid PATH issues.
  • If a port is busy, change 3000/9154 or stop the conflicting process.
  • phoenixd: ensure it’s running and ~/.phoenix contains expected config.

Coding Standards​

Style Guide​

  • Client: Follows standard React/Next.js practices. Use npm run lint to check for style issues.
  • Server: Follows standard Kotlin conventions.
  • Commits: Write meaningful commit messages.

Commit Message Format​

We encourage using Conventional Commits:

type(scope): description

Examples:

  • feat(auth): add login support
  • fix(server): resolve null pointer exception
  • docs(readme): update installation steps

Testing​

Client (Frontend)​

Inside client/:

npm test

Server (Backend)​

Inside server/:

./gradlew test

E2E Tests​

The project includes end-to-end (E2E) tests for the server API written in Python. For detailed instructions, see the E2E Tests README.

Pull Request Process​

How to submit a Pull Request?​

  1. Create a branch for your change (git checkout -b feature/amazing-feature).
  2. Make your modifications and commit them.
  3. Run tests to ensure no regressions.
  4. Push to your fork and submit a Pull Request to the main repository.

Checklist​

  • Code follows style guidelines
  • Tests pass locally
  • Documentation is updated if needed

Issue Reporting​

  • Bug Reports: Include clear steps to reproduce, expected vs actual behavior, and environment details.
  • Feature Requests: Describe the proposed feature, use case, and motivation.

Development Resources​

Project Structure​

  • client/ - Frontend application (Next.js/React).
  • server/ - Backend application (Kotlin/Ktor).
  • electron/ - Desktop wrapper (Electron).
  • doc/ - Project documentation.
  • scripts/ - Utility and installation scripts.

Useful Commands​

Server:

./gradlew run # Run server
./gradlew jar # Build JAR

Client:

npm run dev # Start development server
npm run build # Build for production
npm start # Start production server

Community​

Stay connected!

Follow us on our social media and join the community of developers and entrepreneurs who are building the future of Bitcoin payments.