60 lines
2.4 KiB
Markdown
60 lines
2.4 KiB
Markdown
# Aura CRM Platform
|
|
|
|
A self-hosted CRM for repair shops / service centers — order tracking (Kanban),
|
|
clients, cartridge refill batches, inventory, payroll, loyalty, cash register,
|
|
client notifications (Telegram/MAX/VK/SMS), PDF documents (invoice/act/receipt),
|
|
and more.
|
|
|
|
Two services, one platform:
|
|
|
|
- **`core/`** — authentication, staff, roles, module registry. No CRM logic
|
|
of its own; it exists so multiple business apps (`production/` is the first
|
|
one) can share one login and one staff/roles system.
|
|
- **`production/`** — the CRM itself (Go+Fiber backend, React+Vite frontend).
|
|
Has no login of its own — it verifies JWTs `core` issues.
|
|
|
|
## Install
|
|
|
|
Requires Docker and the `docker compose` v2 plugin.
|
|
|
|
```bash
|
|
git clone <this-repo-url> aura-crm
|
|
cd aura-crm
|
|
./install.sh
|
|
```
|
|
|
|
The script will:
|
|
|
|
1. Ask for your admin account (name/email/password) and business name.
|
|
2. Generate every secret involved (JWT signing key, database passwords,
|
|
MinIO keys, the module token `core` and `production` use to authenticate
|
|
to each other) — you never type or invent a secret by hand.
|
|
3. Start `core`, wait for it to come up, and let it bootstrap your admin
|
|
account automatically.
|
|
4. Register `production` as a module against `core`'s API, capturing the
|
|
token that lets the two services talk to each other.
|
|
5. Start `production` with everything already wired in.
|
|
|
|
Re-running `./install.sh` after a successful install is safe — it detects
|
|
existing `.env` files and skips straight to `docker compose up` for both
|
|
services (useful after a reboot, or to pick up a rebuild).
|
|
|
|
When it's done, the CRM is at `http://localhost:18092`, logged in as the
|
|
account you just created. See the script's own "Going public" note at the
|
|
end for what to change if you want a real domain in front of it.
|
|
|
|
## What's optional
|
|
|
|
Everything in `production/.env.example` beyond the required
|
|
Postgres/MinIO/JWT/core-registration block is an optional integration —
|
|
AI-assisted intake (Gemini), Telegram/MAX/VK/SMS client notifications, IMEI
|
|
lookup, self-hosted Telegram Bot API, wholesale supplier scraping, and
|
|
`deploy-agent`'s self-update button. Each one fails soft (disabled, not
|
|
crash) when its env vars are unset — turn on only what you need, whenever
|
|
you need it, from the app's own Settings page after install (most of these
|
|
are editable there without touching `.env` again).
|
|
|
|
## License
|
|
|
|
MIT — see `LICENSE` in each service directory.
|