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
- Getting Started
- How to Contribute
- Development Setup
- Coding Standards
- Testing
- Pull Request Process
- Issue Reporting
- Development Resources
- Community
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β
- Search existing issues to avoid duplicates.
- 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" | bashsource "$HOME/.sdkman/bin/sdkman-init.sh"
- Java 21 (Temurin):
sdk list javasdk install java 21-temjava -version
- Gradle:
sdk install gradlegradle -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β
-
Fork the repository on GitHub.
-
Clone your fork locally:
git clone https://github.com/YOUR-USERNAME/ambrosia.gitcd ambrosia -
Step 1 Β· Start phoenixd After installation, ensure the service is running and
~/.phoenixis initialized as per the Mastering phoenixd guide. -
Step 2 Β· Server / Backend (Kotlin/Ktor):
cd server./gradlew run # API on :9154- Tests:
./gradlew test
- Tests:
-
Step 3 Β· Client / Frontend (Next.js):
cd clientnpm installnpm run dev # web on :3000- Lint:
npm run lint - Tests:
npm test
- Lint:
-
Step 4 Β· Electron Setup (Desktop):
cd electronnpm installnpm run dev(See the Electron README for more details)
Local endpointsβ
- API: http://127.0.0.1:9154
- Web: http://127.0.0.1:3000
Troubleshootingβ
- Use the
./gradlewwrapper to avoid PATH issues. - If a port is busy, change
3000/9154or stop the conflicting process. - phoenixd: ensure itβs running and
~/.phoenixcontains expected config.
Coding Standardsβ
Style Guideβ
- Client: Follows standard React/Next.js practices. Use
npm run lintto 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 supportfix(server): resolve null pointer exceptiondocs(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?β
- Create a branch for your change (
git checkout -b feature/amazing-feature). - Make your modifications and commit them.
- Run tests to ensure no regressions.
- 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.