# Cala
Cala is a robust ledger system developed by Galoy, designed to handle complex financial transactions and accounting operations. It provides a flexible and scalable solution for managing financial records with strong consistency guarantees.
## Features
### Core Capabilities
- **Double-Entry Accounting**: Built-in support for double-entry bookkeeping principles ensuring accurate financial records
- **SQL-Compatible**: Engineered to work with SQL databases (PostgreSQL) for robust data persistence and querying
- **Strong Consistency**: Ensures accuracy and reliability of financial records
- **Real-time Processing**: Efficient transaction processing suitable for production financial systems
### API & Integration
- **GraphQL API**: Modern API interface with built-in playground for easy integration and testing
- **Extensible Architecture**: Modular design with support for custom extensions via the Node.js bindings
- **Transaction Templates**: Customizable transaction templates for common financial operations
- **Multi-Currency Support**: Handle transactions across different currencies
## Developing
### Dependencies
#### Nix package manager
- Recommended install method using https://github.com/DeterminateSystems/nix-installer
```
curl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/nix | sh -s -- install
```
#### direnv >= 2.30.0
- Recommended install method from https://direnv.net/docs/installation.html:
```
curl -sfL https://direnv.net/install.sh | bash
echo "eval \"\$(direnv hook bash)\"" >> ~/.bashrc
source ~/.bashrc
```
#### Docker
- Choose the install method for your system https://docs.docker.com/desktop/
### Testing
Run unit tests with:
```bash
make reset-deps next-watch
```
Run end-to-end tests with:
```bash
make e2e
```
### Running the Server
To run the server:
```bash
make run-server
```