Rachoon
đŠ Rachoon â A self-hostable way to handle invoices
#Rachoon â The Clever Way to Handle Invoices
Rachoon (from raÄun, meaning invoice in Bosnian) is a modern, self-hosted invoicing platform designed for freelancers, small businesses, and everyone who wants full control over their billing. It helps you create and track invoices effortlessly â with the charm of its mascot, the ever-curious raccoon.
#Features
â
Invoices & Offers â Create and manage invoices and quotations in seconds.
â
Client Management â Keep all your client info organized and searchable.
â
Payment Tracking â Log payment status, view balances, and track overdue invoices.
â
Custom Branding â Highly customizable templates using nunjucks.
â
Multi-Currency & Tax Support â Bill globally with flexible tax and currency settings.
â
PDF Export â Instantly download professional-looking PDFs.
â
Dashboard Insights â Get a snapshot of your revenue, pending payments, and client stats.
#Screenshots
#đŠ Why "Rachoon"?
The name comes from âraÄunâ, which means invoice in Bosnian â combined with the word raccoon, because invoicing should be smart and quick.
#Tech Stack
- Frontend: Nuxt.js
- Backend: adonisJS
- Database: PostgreSQL
- PDF Engine: Gotenberg
- Deployment: Docker-ready, runs anywhere.
#Installation
services: rachoon: image: ghcr.io/ad-on-is/rachoon container_name: rachoon environment: - APP_KEY=<some-app-key> # min 32 characters - used to encrypt and sign sensitive data - DB_CONNECTION=pg - GOTENBERG_URL=http://gotenberg:3000 - PG_HOST=postgres16 - PG_PORT=5432 - PG_USER=<root-user> - PG_PASSWORD=<root-password> - PG_DB_NAME=rachoon ports: - 8080:8080 gotenberg: image: gotenberg/gotenberg:8 postgres16: container_name: postgres16 image: postgres:16 environment: - POSTGRES_USER=<root-user> - POSTGRES_PASSWORD=<root-password> - POSTGRES_DB=postgres volumes: - ./rachoon-data:/var/lib/postgresql/data - ./docker/init-db.sh:/docker-entrypoint-initdb.d/init-db.sh
#First steps
- Visit: http://localhost:8080/signup
- Create your account
- Start invoicing
#Development
This project uses a monorepo structure managed by Turborepo.
#Build Configuration
The project is organized with the following build outputs:
- Frontend (Nuxt):
.output/directory - Backend (AdonisJS):
build/directory - Packages:
dist/directory
#Build Commands
# Install dependencies pnpm install # Build all packages pnpm build # Run in development mode pnpm dev
#Project Structure
rachoon/ âââ apps/ â âââ backend/ # AdonisJS API server â âââ frontend/ # Nuxt.js web application âââ packages/ â âââ common/ # Shared code â âââ typescript-config/ âââ turbo.json # Turborepo configuration
#Testing
rachoon uses a comprehensive testing setup:
backend tests (japa)
cd apps/backend pnpm test
test structure
- unit tests for models and services
- integration tests for api endpoints
- database seeding for test data
ci/cd pipeline
all pull requests and pushes trigger automated checks:
- code quality (linting, formatting)
- test execution with postgres test database
- build verification
- docker image creation (main branch only)
see CONTRIBUTING.md for detailed testing guidelines.
#Contributing
we welcome contributions! please read our contribution guidelines to get started.
quick start:
- fork the repository
- create a feature branch
- make your changes
- add tests for new features
- ensure all tests pass
- submit a pull request
#License
see LICENSE for details.