brainstate

ever-co/ever-gauzy · source

Snapshot 0 · 2026-11-04T12:47:25Z · TypeScript · AGPL-3.0

Content fingerprint127358c5e38b4bd42aad00879a91ff4b08a3a3f6d00c026a77e54462f087a7f1

GitHub description at capture

Ever® Gauzy™ - Open Business Management Platform (ERP/CRM/HRM/ATS/PM) - https://gauzy.co

README at capture

# Ever Gauzy Platform

<a href="https://trendshift.io/repositories/1775" target="_blank"><img src="https://trendshift.io/api/badge/repositories/1775" alt="ever-co%2Fever-gauzy | Trendshift" style="width: 250px; height: 55px;" width="250" height="55"/></a> <a href="https://trendshift.io/repositories/1775?utm_source=trendshift-badge&amp;utm_medium=badge&amp;utm_campaign=badge-trendshift-1775" target="_blank" rel="noopener noreferrer"><img src="https://trendshift.io/api/badge/trendshift/repositories/1775/daily?language=TypeScript" alt="ever-co%2Fever-gauzy | Trendshift" width="250" height="55"/></a>

[uri_gauzy]: https://gauzy.co
[uri_license]: https://www.gnu.org/licenses/agpl-3.0.html
[uri_license_image]: https://img.shields.io/badge/License-AGPL%20v3-blue.svg

![visitors](https://visitor-badge.laobi.icu/badge?page_id=ever-co.gauzy-platform)
[![License: AGPL v3][uri_license_image]][uri_license]
[![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/ever-co/ever-gauzy)
[![Gitpod Ready-to-Code](https://img.shields.io/badge/Gitpod-Ready--to--Code-blue?logo=gitpod)](https://gitpod.io/#https://github.com/ever-co/ever-gauzy)
[![Open in GitHub Codespaces](https://img.shields.io/badge/GitHub%20Codespaces-Open-blue?logo=github)](https://codespaces.new/ever-co/ever-gauzy)
[![Open in Dev Containers](https://img.shields.io/static/v1?label=Dev%20Containers&message=Open&color=blue&logo=visualstudiocode)](https://vscode.dev/redirect?url=vscode://ms-vscode-remote.remote-containers/cloneInVolume?url=https://github.com/ever-co/ever-gauzy)

## 💡 What's New
- 🔥🔥🔥 we just released [Ever Works](https://github.com/ever-works/ever-works) - An open agentic runtime that autonomously researches, ships, and maintains entire businesses, 24/7. Please grab it now from <https://github.com/ever-works/ever-works> and make it ⭐⭐⭐ on GitHub!
- if you like Gauzy, you should also like [Ever Teams](https://github.com/ever-co/ever-teams) - Open Work & Productivity Platform. Please check <https://github.com/ever-co/ever-teams> and make it ⭐ on GitHub! It's built with a React (NextJs) / ReactNative (Expo) stack and connects to headless [Ever Gauzy Platform APIs](https://api.gauzy.co/docs).

## 🌟 What is it

[Ever® Gauzy™][uri_gauzy] - **Open Business Management Platform** for Collaborative, On-Demand and Sharing Economies.

-   **Enterprise Resource Planning** (ERP)
-   **Customer Relationship Management** (CRM)
-   **Human Resource Management** (HRM)
-   **Applicant Tracking System** (ATS)
-   **Work and Project Management** (PM)
-   **Employee Time-Tracking, Activity & Productivity Tracking**

Ever® Gauzy™ Platform is a part of our larger Open Platform for **Collaborative, On-Demand and Sharing Economies** - [Ever® Platform™](https://ever.co).

<img width="1905" height="988" alt="image" src="https://github.com/user-attachments/assets/6197a87a-8ae9-4380-91c3-3f85f8406542" />

## ✨ Features

Main features:

-   Human Resources Management (HRM) with Time Management / Tracking and Employees Performance Monitoring
-   Customer Relationship Management (CRM)
-   Enterprise Resource Planning (ERP)
-   Projects / Tasks Management
-   Sales Management
-   Financial and Cost Management (including _Accounting_, _Invoicing_, etc)
-   Inventory, Supply Chain Management, and Production Management

A more detailed list of the features available in the platform:

-   [Headless APIs](https://api.gauzy.co/docs)
-   Dashboard (provides an overview of different metrics, such as company income/expenses, employee bonuses, etc.)
-   Time Management / Time Tracking / Activity Tracking / Timesheets
-   Employees Management (register of company employees/contractors, rates of employees, etc.)
-   Employee Onboarding
-   Applicant Tracking System (ATS) / Candidates Interviews
-   Contacts Management (Clients / Customers / Leads / etc.)
-   Schedules / Appointments / Events
-   Project Management / Tasks
-   Goals / KPI / Objectives / Key Results
-   Sales Pipelines
-   Proposals
-   Accounting / Invoicing / Estimates
-   Billing
-   Payments
-   Income / Expenses Management
-   Time Off Management / Holidays / Approvals
-   Inventory
-   Equipment / Sharing
-   Multiple Organizations Management
-   Organization Departments and Teams
-   Organization Clients and Vendors
-   Help Center / Knowledge Base
-   Tags / Labels
-   Reports / Insights / Analytics
-   Organization and Employee Public Pages
-   Integrations (Upwork, HubStaff, etc.)
-   Email History / Email Templates
-   Data Import / Export
-   Roles / Permissions
-   Multi-currency
-   Multi-lingual
-   Dark / Light / Corporate / Material and other Themes

Read more [about Gauzy](https://github.com/ever-co/ever-gauzy/wiki/About-Gauzy) and [how to use it](https://github.com/ever-co/ever-gauzy/wiki/How-to-use-Gauzy) at your company, on-demand business, freelance business, agency, studio or in-house teams.

## 🌼 Screenshots

<details>
<summary>Show / Hide Screenshots</summary>

### Web UI

![overview](https://docs.gauzy.co/overview.png)

### Desktop Timer UI (Standard)

![timer](https://docs.gauzy.co/desktop/desktop-timer-small.png)

### Desktop Timer UI (Expanded)

![timer](https://docs.gauzy.co/desktop/desktop-timer-expanded.png)

</details>

## 🔗 Links

-   **<https://gauzy.co>** - check more information about the platform at the official website.
-   **<https://app.gauzy.co>** - SaaS (Important: it's currently in Alpha version/testing mode, please use it cautiously).
-   **<https://demo.gauzy.co>** - Online Demo (see more info below).
-   **<https://gauzy.co/downloads>** - Download Platform & Apps (see also more info below about available downloads).
-   **<https://docs.gauzy.co>** - Platform Documentation (WIP). See also our [Wiki](https://github.com/ever-co/ever-gauzy/wiki).
-   **<https://ever.co>** - get more information about our company products.

## 💻 Demo, Downloads, Testing and Production

### Demo

Ever Gauzy Platform Demo at <https://demo.gauzy.co>.

Notes:

-   Default super-admin user login is `admin@ever.co` and the password is `admin`. These are DEMO / local-development credentials only: a production install must set `DEMO_SUPER_ADMIN_PASSWORD`, `DEMO_ADMIN_PASSWORD` and `DEMO_EMPLOYEE_PASSWORD` before its first boot, and the API refuses to seed without them.
-   Content of demo DB resets on each deployment to the demo environment (usually daily)
-   Demo environment deployed using CI/CD from the `develop` branch

### Downloads

You can download Gauzy Platform, Gauzy Server, or Desktop Apps (Windows/Mac/Linux) from the official [Downloads](https://web.gauzy.co/downloads) page.

In addition, all releases and pre-releases downloads are also available from the following pages:

-   [Platform Releases](https://github.com/ever-co/ever-gauzy/releases)
-   [Apps](https://github.com/ever-co/ever-gauzy/wiki/Gauzy-Desktop-Apps)

### Production (SaaS)

Ever® Gauzy™ Platform SaaS is available at <https://app.gauzy.co>.

Note: it's currently in Alpha version/testing mode, please use it cautiously!

### Staging

-   Gauzy Platform Staging builds (using CI/CD, from the `stage` branch) are available at <https://stage.gauzy.co>
-   We are using the Staging environment to test releases before they are deployed to the production environment
-   Our pre-releases of desktop/server apps are built from this environment and can be configured manually (in settings) to connect to Stage API: <https://apistage.gauzy.co>

### Server & Desktop Apps

We have Gauzy Server and two Desktop Apps (for Windows/Mac/Linux):

-   Ever® Gauzy™ Server - includes Gauzy API, SQLite DB (or connects to external PostgreSQL) and serves Guazy frontend. It allows to quickly run Gauzy Server for multiple clients (browser-based or Desktop-based). It's a recommended option if you want to setup the Ever Gauzy Platform in small to medium organizations.

-   Ever® Gauzy™ Desktop App - includes Gauzy frontend (UI), Gauzy API, SQLite DB, etc., all-in-one! It allows to quickly run the whole Gauzy solution locally, both UI and Timer (for time tracking, optionally of course). In addition, it allows you to connect to the external database (e.g. PostgreSQL) or external API (if you have Gauzy Server with API / DB installed on a different computer or if you want to connect to our live API). It's a recommended option if you want to try Gauzy quickly / for personal use or if you want to connect to Gauzy Server in the "client-server" configuration (and use Desktop App instead of web browser).

-   Ever® Gauzy™ Desktop Timer App - allows running Time and Activity Tracking for employees/contractors with screenshots and activity monitoring. It is recommended to setup by organization employees as long as they are not interested in other Gauzy Platform features (e.g. accounting) and only need to track work time.

More information about our Server & Desktop Apps:

-   Download for your OS from the official [Downloads](https://web.gauzy.co/downloads) page or see the section "Download" above for other links to our releases pages.
-   Setup Gauzy Server with default choices in Setup Wizard and run it.
-   You can also setup Gauzy Desktop App (can run independently or connect to Gauzy Server) or Gauzy Desktop Timer App (should be connected to Gauzy Server)
-   Gauzy Server and Gauzy Desktop App create three accounts on their first start: `admin@ever.co` (Super Admin), `local.admin@ever.co` (Admin) and `employee@ever.co` (Employee). Each gets a random password generated for that installation, which the app shows once, right after that first start: save them then (you can change them later on your profile page). Sign in as `admin@ever.co` to check Admin functionality. Note: such an Admin user is not an employee, so you will not be able to track time.
-   Sign in as `employee@ever.co` to check Employee-related functionality in Gauzy UI or to run Desktop Timer from an "Employee" perspective (such a user is an Employee and can track time).
-   An installation set up before these random passwords keeps its existing ones (`admin` and `12345678`) and shows a warning at every start until you change them.
-   Gauzy Desktop App's integrated server accepts connections from the same computer only. To serve other computers (for example the Desktop Timer apps of your team), use Gauzy Server: it accepts connections from the network unless you turn off "Allow other computers on the network to connect" in its settings.
-   If you install Gauzy Server, it is possible to connect to it using a browser (by default on <http://localhost:4200>) or using Gauzy Desktop Apps (make sure to configure Desktop apps to connect to Gauzy API on <http://127.0.0.1:3000/api> because it's where Gauzy Server API runs by default).
-   You can read more information about our Desktop Apps on the [Desktop Apps Wiki Page](https://github.com/ever-co/ever-gauzy/wiki/Gauzy-Desktop-Apps) and our Server at the [Server Wiki Page](https://github.com/ever-co/ever-gauzy/wiki/Gauzy-Server).

## 🧱 Technology Stack and Requirements

-   [TypeScript](https://www.typescriptlang.org)
-   [NodeJs](https://nodejs.org) / [NestJs](https://github.com/nestjs/nest)
-   [Nx](https://nx.dev) / [Lerna](https://github.com/lerna/lerna)
-   [Angular](https://angular.io) / [RxJS](http://reactivex.io/rxjs) / [Ngx-admin](https://github.com/akveo/ngx-admin)
-   [TypeORM](https://github.com/typeorm/typeorm) / [MikroORM](https://github.com/mikro-orm/mikro-orm) / [Knex](https://github.com/knex/knex)

For Production, we recommend:

-   [PostgreSQL](https://www.postgresql.org) or [MySQL](https://dev.mysql.com)
-   [Kubernetes](https://kubernetes.io), [Docker](https://www.docker.com)

Note: thanks to TypeORM / MikroORM, Gauzy will support lots of DBs: SQLite (default, for demos), PostgreSQL (development/production), MySql (development/production), MariaDb, CockroachDb, MS SQL, Oracle, MongoDb, and others (with minimal changes).

#### See also README.md and CREDITS.md files in relevant folders for lists of libraries and software included in the Platform, information about licenses, and other details

## 📄 Documentation

Please refer to our official [Platform Documentation](https://docs.gauzy.co) and our [Wiki](https://github.com/ever-co/ever-gauzy/wiki) (WIP).

## 🚀 Quick Start

### Super Quick Start

<https://app.gauzy.co>.

Note: it's currently in Alpha version/testing mode, please use it cautiously!

### Run with Docker Compose

-   Clone repo.
-   Make sure you have the latest Docker Compose [installed locally](https://docs.docker.com/compose/install). Important: you need a minimum [v2.20](https://docs.docker.com/compose/release-notes/#2200).

#### Demo

-   Run `docker-compose -f docker-compose.demo.yml up`, if you want to run the platform in basic configuration (e.g. for Demo / explore functionality / quick run) using our prebuilt Docker images. Check `.env.demo.compose` file for different settings (optionally), e.g. DB type. _(Note: Docker Compose will use latest images pre-build automatically from head of `master` branch using GitHub CI/CD.)_
-   Open <http://localhost:4200> in your browser.
-   Login with email `admin@ever.co` and password: `admin` for Super Admin user.
-   Login with email `employee@ever.co` and password: `12345678` for Employee user.
-   Enjoy!

Note: those credentials exist only because this stack runs with `DEMO=true`. They are NOT available in a production deployment — see below.

#### Production

-   Edit `.env.compose`: you **must** set `JWT_SECRET`, `JWT_REFRESH_TOKEN_SECRET`, `JWT_VERIFICATION_TOKEN_SECRET` and `EXPRESS_SESSION_SECRET` to strong, unique values (e.g. `openssl rand -hex 64`). The API refuses to start on the shipped blank/default secrets — shared defaults let anyone forge authentication tokens and sessions. Adjust any other settings (e.g. DB type) there too.
-   You **must** also set `DEMO_SUPER_ADMIN_PASSWORD`, `DEMO_ADMIN_PASSWORD` and `DEMO_EMPLOYEE_PASSWORD` (and optionally the matching `*_EMAIL` variables). The first boot against an empty database seeds a Super Admin, an Admin and an Employee from those variables, and their shipped defaults are documented right here in this README — so the API refuses to seed while they are unset or left at the defaults.
-   Set `TRUST_PROXY` to the number of proxy hops in front of the API (`1` behind a single nginx/ingress) or to your trusted proxy CIDRs, so the login rate limiter counts against the real client address. Set `THROTTLE_TRUST_CF_CONNECTING_IP=true` only if every request reaches the API through Cloudflare. If Ever Teams runs against this API, set `EVER_TEAMS_CLIENT_IP_SECRET` to the same strong value (at least 32 characters) on both, so the per-address limits on sign-in, invites and password reset count each browser instead of the Ever Teams server; signed-in requests are limited per user.
-   Set `REDIS_ENABLED=true` (with `REDIS_URL`, or `REDIS_HOST`/`REDIS_PORT`) when you run more than one API replica: rate-limit buckets are otherwise per-process, so the effective limit is multiplied by the replica count.
-   Failed sign-ins are also counted per account: once `AUTH_MAX_FAILED_ATTEMPTS` (default 10) consecutive failures for one account have come from at least two different client addresses, that account answers HTTP 429 (with `Retry-After`) for `AUTH_LOCKOUT_SECONDS` (default 900). Failures from a single address never block an account. Because anyone who knows an email address can submit wrong passwords for it, an attacker with several addresses can still block that account for a while; set `AUTH_MAX_FAILED_ATTEMPTS=0` to switch the per-account control off and rely on the per-address rate limit alone.
-   Run `docker-compose up -d`, if you want to run the platform in minimal production configuration using our prebuilt Docker images. _(Note: Docker Compose will use latest images pre-build automatically from head of `master` branch using GitHub CI/CD.)_

Note: we recommend using Kubernetes for production workloads instead of Docker Compose!

#### Self-hosting with Caddy (automatic HTTPS)

[`docker-compose.caddy.yml`](docker-compose.caddy.yml) runs Gauzy (prebuilt API and web app images, PostgreSQL) behind [Caddy](https://caddyserver.com), which obtains and renews HTTPS certificates by itself:

-   `cp .env.caddy.sample .env.caddy` and fill in every empty value in `.env.caddy`: the database password and the four secrets above (e.g. from `openssl rand -hex 64`), and the three `DEMO_*_PASSWORD` values (e.g. from `openssl rand -hex 24`: the sign-in form takes at most 50 characters). Docker Compose refuses to start while one is missing. `.env.caddy` is git-ignored.
-   Set `GAUZY_DOMAIN` to your domain (its DNS must point at the server, with ports 80 and 443 open) to get a Let's Encrypt / ZeroSSL certificate, or keep `localhost` to try it locally with Caddy's own certificate authority (your browser warns until you trust it).
-   Run `docker compose -f docker-compose.caddy.yml --env-file .env.caddy up -d` and open `https://<GAUZY_DOMAIN>`.

Caddy is the only container published on the host. It serves everything from one origin: `/api`, `/graphql` (including subscriptions), `/public` (uploaded files) and `/swg` (Swagger UI, with the OpenAPI document at `/swg-json` and `/swg-yaml`) go to the API, the rest to the web app, and `TRUST_PROXY=1` is set for you because the API is reachable only through Caddy. The stack also runs Redis and the worker, which fires the scheduled jobs (outbox dispatch, webhook retries, sweeps): without them outbound webhooks, the search index and GraphQL subscriptions receive no events. Other settings are read from `.env.compose`. Uploaded files are kept in a volume. The routing lives in [`.deploy/caddy/Caddyfile`](.deploy/caddy/Caddyfile).

#### Build

-   Edit `.env.compose` (if needed) to use your custom settings, e.g. DB type.
-   Run `docker-compose -f docker-compose.build.yml up -d`, if you want to build everything (code and Docker images) locally. _(Note: this is extremely long process because it builds whole platform locally. Other options above are much faster!)_
-   :coffee: time... It might take some time for our API to seed fake data in the DB during the first Docker Compose run, even if you used prebuilt Docker images.

Notes:

-   while demo `docker-compose.demo.yml` runs a minimum amount of containers (API, Web UI, and DB), other Docker Compose files run multiple infrastructure dependencies (see full list below).
-   `docker-compose.yml` and `docker-compose.build.yml` also run a `worker` container next to the API. With Redis enabled the API only enqueues scheduled jobs, so the worker is what fires them, including the per-minute event outbox dispatch that delivers webhooks.
-   you can also run ONLY infra dependencies (without our API / Web containers) with `docker-compose -f docker-compose.infra.yml up -d` command. We already doing it using `include` in our main docker compose files.
-   API and Web UI settings live in the service `env_file` (`.env.compose`, or `.env.demo.compose` for the demo): edit that file to change them. Their lines read `KEY=${KEY:-default}`, and Docker Compose resolves `${...}` in an env file from the shell and `--env-file` first, so a shell variable or `--env-file .env.something` on the docker-compose `up` command still overrides a single setting (ports and host names in the compose files themselves are read from there too). `DEMO` and the variables without a `${...}` default are read from the env file only.

Together with Gauzy, the Docker Compose commands described above for Production (`docker-compose.yml`) and Build (`docker-compose.build.yml`) will run the following infrastructure components:

-   [PostgreSQL](https://www.postgresql.org) - Primary Database.
-   [Pgweb](https://github.com/sosedoff/pgweb) - Cross-platform client for PostgreSQL DBs, available on <http://localhost:8081>.
-   [OpenSearch](https://github.com/opensearch-project) - Search Engine.
-   [OpenSearch Dashboards](https://github.com/opensearch-project) - Search Engine Dashboards, available on <http://localhost:5601>. Default username: `admin` and password: `Gauzy_password_123`
-   [Dejavu](https://github.com/appbaseio/dejavu) - Web UI for OpenSearch, available on <http://localhost:1358>.
-   [MinIO](https://github.com/minio/minio) - Multi-Cloud ☁️ Object Storage (AWS S3 compatible).
-   [Jitsu](https://github.com/jitsucom/jitsu) - Jitsu is an open-source Segment alternative (data ingestion engine).
-   [Redis](https://github.com/redis/redis) - In-memory data store/caching (also used by Jitsu)
-   [Cube](https://github.com/cube-js/cube) - "Semantic Layer" used for Reports, Dashboards, Analytics, and other BI-related features, with UI available on <http://localhost:4000>.
-   [Zipkin](https://github.com/openzipkin/zipkin) - distributed tracing system.

### Quick Start to manually build & run

#### Required

-   Install [NodeJs](https://nodejs.org/en/download) version 26.x or later (the `engines` field in `package.json` requires `>=26`; the exact version used by the repo is pinned in [`.nvmrc`](https://github.com/ever-co/ever-gauzy/blob/develop/.nvmrc), so `nvm use` picks it up).
-   Install [Yarn](https://github.com/yarnpkg/yarn) v1.22.x (if you don't have it) with `npm i -g yarn`.
-   Install NPM packages and Bootstrap solution using the command `yarn bootstrap`.
-   If you will need to make code changes (and push to Git repo), please run `yarn prepare:husky`.
-   Adjust settings in the [`.env.local`](https://github.com/ever-co/ever-gauzy/blob/develop/.env.local) which is used in local runs.
-   Alternatively, you can copy [`.env.sample`](https://github.com/ever-co/ever-gauzy/blob/develop/.env.sample) to `.env` and change default settings there, e.g. database type, name, user, password, etc.
-   Run both API and UI with a single command: `yarn start`.
-   Open Gauzy UI on <http://localhost:4200> in your browser (API runs on <http://localhost:3000/api>).
-   Login with email `admin@ever.co` and password: `admin` for Super Admin user.
-   Login with email `employee@ever.co` and password: `12345678` for Employee user.
-   Enjoy!

Notes:

-   during the first API start, DB will be automatically seeded with a minimum set of initial data if no users are found.
-   you can run seed any moment manually (e.g. if you changed entities schemas) with the `yarn seed` command to re-initialize DB (warning: unsafe for production!). The same default-credential check applies: with `NODE_ENV=production` and `DEMO != true` the seed refuses to run unless `DEMO_SUPER_ADMIN_PASSWORD` / `DEMO_ADMIN_PASSWORD` / `DEMO_EMPLOYEE_PASSWORD` are set to non-default values.
-   it is possible to run generation of extremely large amounts of fake data for demo purposes/testing with `yarn seed:all` (warning: takes ~10 min to complete)
-   local runs log one line per API request (method, path, status, duration and request id; headers, bodies and sensitive parameter values are never logged): `LOG_HTTP_REQUESTS=true` in `.env.local`. Set it to `false` to silence it; it is off by default everywhere else. It covers the REST routes under `/api`; GraphQL operations on `/graphql` are not logged.

#### Dev Container / GitHub Codespaces

The repository ships a [Dev Container](https://containers.dev) definition in [`.devcontainer/devcontainer.json`](.devcontainer/devcontainer.json): Node 26 and Yarn 1.22, Docker (inside the container) and the GitHub CLI, with ports 3000 (API) and 4200 (web UI) forwarded.

-   Open the repository in [GitHub Codespaces](https://codespaces.new/ever-co/ever-gauzy) (pick a machine with at least 4 cores and 16 GB of memory), or in VS Code with the [Dev Containers](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers) extension ("Dev Containers: Clone Repository in Container Volume" is the fastest on Windows and macOS).
-   `yarn bootstrap` runs once when the container is created. Then run `yarn start` as described above (SQLite by default).
-   In a codespace, terminals set `API_BASE_URL` to the forwarded API URL `https://<codespace>-3000.app.github.dev`, and `CLIENT_BASE_URL` and `ALLOWED_ORIGINS` to the forwarded web UI URL `https://<codespace>-4200.app.github.dev` ([`.devcontainer/codespaces-env.sh`](.devcontainer/codespaces-env.sh)). Values you set yourself win: in the shell, then in `.env.local`, then in `.env`. The API keeps whichever value is used over the localhost URLs of the tracked `.env.local` (the script lists them in `ENV_LOCAL_NO_OVERRIDE`). The web UI calls the API from your browser, which cannot reach a private forwarded port, so set port 3000 to **Public** in the Ports view (anyone with its URL can then reach that development API and its default seeded accounts: switch it back when you are done). In VS Code desktop you can instead keep the forwarded localhost ports: `export API_BASE_URL=http://localhost:3000 CLIENT_BASE_URL=http://localhost:4200 ALLOWED_ORIGINS=http://localhost:4200` before `yarn start`.
-   To use PostgreSQL, Redis, MinIO and the other services instead, run `docker compose -f docker-compose.infra.yml up -d` inside the container and point `.env` / `.env.local` at them.

#### Debugging the API in VS Code

[`.vscode/launch.json`](.vscode/launch.json) has three configurations:

-   **Debug Server** attaches to `yarn start:api` or `yarn start:worker` (both listen for a debugger on port 9229, so debug one at a time) and re-attaches after every rebuild. For breakpoints in startup code (bootstrap, module initialization, migrations, seeds), start with `yarn start:api:debug` or `yarn start:worker:debug` instead: the process waits for the debugger before it runs any code, and continues once **Debug Server** has set the breakpoints.
-   **Launch Program** builds and starts the API in watch mode under the debugger, without a separate terminal or port, so startup breakpoints bind on every start.
-   **Debug Nest Framework** runs the API last built (`dist/apps/api/main.js`) under the debugger, without building it again.

Breakpoints bind in `apps/api/src` and in the workspace packages (`packages/*/src`): the API and worker builds rewrite the source maps of the packages they copy into `dist/apps/<app>/node_modules/@gauzy`, so that they still lead to the sources. With VS Code connected to WSL (Remote - WSL) this works as is; Windows VS Code attaching to an API that runs inside WSL also needs `localRoot` and `remoteRoot` (the repository path on Windows and in WSL) in **Debug Server**.

#### Optional / Recommended for Production

-   Optionally (recommended for production) install and run [PostgreSQL](https://www.postgresql.org) version 14 or later (16.x recommended for production). Note: other DB can be configured manually in TypeORM / MikroORM / Knex. The default DB is set to SQLite (recommended for testing/demo purposes only). Set `DB_CREATE_IF_NOT_EXISTS=true` to let the API create the `DB_NAME` database on a PostgreSQL / MySQL server that does not have it yet (off by default; the DB user needs the `CREATEDB` / `CREATE` privilege, and on PostgreSQL `DB_CREATE_MAINTENANCE_DB`, default `postgres`, names the database it connects to for that).
-   Optionally (recommended for production) install and run [Redis](https://github.com/redis/redis). Notes: the platform will work without Redis using an in-memory caching strategy instead of a distributed one (recommended for testing/demo purposes only). Please note however that Redis is required for Jitsu.
-   Optionally (recommended for production) install and run [OpenSearch](https://github.com/opensearch-project). Note: the platform will work without OpenSearch using DB build-in search capabilities (recommended for testing/demo purposes only).
-   Optionally install and run [MinIO](https://github.com/minio/minio) or [LocalStack](https://github.com/localstack/localstack). Note: the platform will work without MinIO / LocalStack or other S3-compatible storage using local filesystem-based storage (recommended for testing/demo purposes only). For production, we recommend using Wasabi or AWS S3 storage or another S3-compatible cloud storage.
-   Optionally (recommended for production) install and run [Jitsu](https://github.com/jitsucom/jitsu). Note: the platform will work without Jitsu, however, data ingestion will be disabled for additional analyses / real-time pipelines.
-   Optionally (recommended for production) install and run [Cube](https://github.com/cube-js/cube). Note: the platform will work without Cube, however some advanced (dynamic) reporting and data processing capabilities will be disabled.

### 🏭 Production

#### General information

-   See [Setup Gauzy for Client Server](https://github.com/ever-co/ever-gauzy/wiki/Setup-Gauzy-for-Client-Server) for more information about production setup on your servers.

#### Kubernetes

-   We recommend deploying to Kubernetes (k8s), either manually (see below) or with our [Terraform Modules](https://github.com/ever-co/ever-gauzy-terraform) or [Ever Helm Charts](https://github.com/ever-co/ever-charts).

-   For more simple deployment scenarios with k8s, please see [Kubernetes configurations](https://github.com/ever-co/ever-gauzy/tree/develop/.deploy/k8s), which we are using to deploy Gauzy into [DigitalOcean k8s cluster](https://www.digitalocean.com/products/kubernetes).

#### DigitalOcean App Platform

[![Deploy to DO](https://www.deploytodo.com/do-btn-blue.svg)](https://cloud.digitalocean.com/apps/new?repo=https://github.com/ever-co/ever-gauzy/tree/develop)

-   The button above creates an App Platform app from [`.do/deploy.template.yaml`](.do/deploy.template.yaml): the prebuilt API, web app and worker images, an internal Redis and a development PostgreSQL database, served from one URL (`/api`, `/graphql`, `/public`, `/swg`, `/swg-json` and `/swg-yaml` go to the API, everything else to the web app). The worker and Redis deliver events (outbound webhooks, the search index, GraphQL subscriptions). Before you click "Create", fill in the secrets it asks for: `JWT_SECRET`, `JWT_REFRESH_TOKEN_SECRET`, `JWT_VERIFICATION_TOKEN_SECRET` and `EXPRESS_SESSION_SECRET` (e.g. from `openssl rand -hex 64`), and the three `DEMO_*_PASSWORD` values (e.g. from `openssl rand -hex 24`: the sign-in form takes at most 50 characters). The API refuses to start or to seed its first accounts without them (see "Production" above). The first start migrates and seeds the database, which takes a few minutes. Uploaded files live in the API container, which loses them on every redeploy, until you configure object storage (`FILE_PROVIDER`, e.g. DigitalOcean Spaces), and the development database is meant for trying Gauzy out: switch to a managed production database for real use.
-   For the most simple deployment scenarios (e.g. for yourself or your small organization), check our [DigitalOcean App Platform configurations](https://github.com/ever-co/ever-gauzy/tree/develop/.do) and corresponding [GitHub Action](https://github.com/ever-co/ever-gauzy/blob/develop/.github/workflows/deploy-do-app-platform-stage.yml).

#### Virtual Instances / Droplets (via SSH)

-   Another variant to deploy Gauzy is to use DigitalOcean Droplets or any other virtual instance (with Ubuntu OS) and deploy using SCP/SSH, for example, following [GitHub Action](https://github.com/ever-co/ever-gauzy/blob/develop/.github/workflows/deploy-do-droplet-demo.yml)

#### Pulumi

-   In addition, check [Gauzy Pulumi](https://github.com/ever-co/ever-gauzy-pulumi) project (WIP), it makes complex Clouds deployments possible with a single command (`pulumi up`). Note: it currently supports AWS EKS (Kubernetes) for development and production with Application Load Balancers and AWS RDS Serverless PostgreSQL DB deployments. We also implemented deployments to ECS EC2 and Fargate Clusters in the same Pulumi project.

### 🚗 Other self-hosting options

#### Deploy on Hostinger

[![Deploy on Hostinger](https://assets.hostinger.com/vps/deploy.svg)](https://www.hostg.xyz/aff_c?offer_id=815&aff_id=244060&url_id=6822)

#### Deploy on RepoCloud

Deploy Ever Gauzy instantly with one click on [RepoCloud](https://repocloud.io/details/Ever%20Gauzy/).

#### Deploy on Easypanel

[Easypanel](https://easypanel.io) is a self-hosted Docker deployment platform, and Ever Gauzy has a one-click deployment template there:

[![Deploy on Easypanel][easypanel-btn]][easypanel-deploy]

[easypanel-btn]: https://easypanel.io/img/deploy-on-easypanel-40.svg
[easypanel-deploy]: https://easypanel.io/templates/ever-gauzy

#### Deploy on ZopDay

[ZopDay](https://zop.dev/zopday) runs a Docker image on its managed ZopCloud or in your own AWS or GCP account. Gauzy runs as two containers, so deploy them in this order:

1.  **API** — [![Deploy the Gauzy API on ZopDay][zopday-btn]][zopday-api]

    Before starting it, create a PostgreSQL database in ZopDay and point the service at it with `DB_TYPE=postgres` plus `DB_HOST` / `DB_PORT` / `DB_NAME` / `DB_USER` / `DB_PASS` — left unset, the image falls back to a SQLite file inside the container, which is lost whenever the container is replaced. Set `JWT_SECRET`, `JWT_REFRESH_TOKEN_SECRET`, `JWT_VERIFICATION_TOKEN_SECRET` and `EXPRESS_SESSION_SECRET` as described under "Production" above — in production the API refuses to start while those are unset or left at their defaults. Set the `DEMO_*_PASSWORD` values too: they are checked when an empty database is first seeded, so a fresh instance will not get past that seed while they are left at the published defaults.

2.  **Web app** — [![Deploy the Gauzy web app on ZopDay][zopday-btn]][zopday-webapp]

    Set `API_BASE_URL` to the public URL the API service got, otherwise the browser is sent to `http://localhost:3000` instead of the API.

[zopday-btn]: https://zop.dev/deploytozopday-inkhard.svg
[zopday-api]: https://zop.dev/zopday/app/deploy?image=ghcr.io/ever-co/gauzy-api:latest&port=3000&name=gauzy-api
[zopday-webapp]: https://zop.dev/zopday/app/deploy?image=ghcr.io/ever-co/gauzy-webapp:latest&port=4200&name=gauzy-webapp

## 💌 Contact Us

<a href="https://cal.com/ever"><img src="https://cal.com/book-with-cal-dark.svg" alt="Book a call with Ever" /></a>

-   [Book a call with us](https://cal.com/ever) on Cal.com
-   [Ever.co Website Contact Us page](https://ever.co/contacts)
-   [Slack Community](https://join.slack.com/t/gauzy/shared_invite/enQtNzc5MTA5MDUwODg2LTI0MGEwYTlmNWFlNzQzMzBlOWExNTk0NzAyY2IwYWYwMzZjMTliYjMwNDI3NTJmYmM4MDQ4NDliMDNiNDY1NWU)
-   [Discord Chat](https://discord.gg/hKQfn4j)
-   [![Gitter](https://badges.gitter.im/JoinChat.svg)](https://gitter.im/ever-co/ever-gauzy?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
-   [![Get help on Codementor](https://cdn.codementor.io/badges/get_help_github.svg)](https://www.codementor.io/evereq?utm_source=github&utm_medium=button&utm_term=evereq&utm_campaign=github)
-   For business inquiries: <mailto:gauzy@ever.co>
-   Please report security vulnerabilities privately, with [GitHub private vulnerability reporting](https://github.com/ever-co/ever-gauzy/security/advisories/new) or to <mailto:security@ever.co> (see our [Security Policy](SECURITY.md))
-   [Gauzy Platform @ Twitter](https://twitter.com/gauzyplatform)
-   [Gauzy Platform @ Facebook](https://www.facebook.com/gauzyplatform)

## 🔐 Security

Ever® Gauzy™ follows good security practices, but 100% security cannot be guaranteed in any software!
Ever® Gauzy™ is provided AS IS without any warranty. Use at your own risk!
See more details in the [LICENSES.md](LICENSES.md).

In a production setup, all client-side to server-side (backend, APIs) communications should be encrypted using HTTPS/WSS/SSL (REST APIs, GraphQL endpoint, Socket.io WebSockets, etc.).

If you discover any issue regarding security, please disclose the information responsibly and privately, not by creating a public GitHub issue: report it with [GitHub private vulnerability reporting](https://github.com/ever-co/ever-gauzy/security/advisories/new) or by sending an email to <mailto:security@ever.co>. See our [Security Policy](SECURITY.md) for what to include and what happens next.

## 🛡️ License

We support the open-source community. If you're building awesome non-profit/open-source projects, we're happy to help and will provide (subject to [acceptance criteria](https://github.com/ever-co/ever-gauzy/wiki/Free-license-and-hosting-for-Non-profit-and-Open-Source-projects)) Ever Gauzy Enterprise edition license and free hosting option! Feel free to contact us at <mailto:ever@ever.co> to make a request. More details are explained in our [Wiki](https://github.com/ever-co/ever-gauzy/wiki/Free-license-and-hosting-for-Non-profit-and-Open-Source-projects).

This software is available under the following licenses:

-   [Ever® Gauzy™ Platform Community Edition](https://github.com/ever-co/ever-gauzy/blob/develop/LICENSES.md#ever-gauzy-platform-community-edition-license)
-   [Ever® Gauzy™ Platform Small Business](https://github.com/ever-co/ever-gauzy/blob/develop/LICENSES.md#ever-gauzy-platform-small-business-license)
-   [Ever® Gauzy™ Platform Enterprise](https://github.com/ever-co/ever-gauzy/blob/develop/LICENSES.md#ever-gauzy-platform-enterprise-license)

#### The default Ever® Gauzy™ Platform license, without a valid Ever® Gauzy™ Platform Enterprise or Ever® Gauzy™ Platform Small Business License agreement, is the Ever® Gauzy™ Platform Community Edition License

#### Please see [LICENSES.md](LICENSES.md) for more information on licenses. You can also [compare our offering](https://ever.co/compare-gauzy/#compare)

[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fever-co%2Fgauzy.svg?type=large)](https://app.fossa.io/projects/git%2Bgithub.com%2Fever-co%2Fgauzy?ref=badge_large)

## ™️ Trademarks

**Ever**® is a registered trademark of [Ever Co. LTD](https://ever.co).
**Ever® Demand™**, **Ever® Gauzy™**, **Ever® Teams™**, **Ever® Rec™**, **Ever® Recu™**, **Ever® Cloc™**, **Ever® Works™** and **Ever® OpenSaaS™** are all trademarks of [Ever Co. LTD](https://ever.co).

The trademarks may only be used with the written permission of Ever Co. LTD. and may not be used to promote or otherwise market competitive products or services.

All other brand and product names are trademarks, registered trademarks, or service marks of their respective holders.

## 🍺 Contribute

-   Please give us :star: on Github, it **helps**!
-   You are more than welcome to submit feature requests in the [separate repo](https://github.com/ever-co/feature-requests/issues)
-   Pull requests are always welcome! Please base pull requests against the _develop_ branch and follow the [contributing guide](.github/CONTRIBUTING.md).

## 💪 Thanks to our Contributors

See our contributors list in [CONTRIBUTORS.md](https://github.com/ever-co/ever-gauzy/blob/develop/.github/CONTRIBUTORS.md).
You can also view a full list of our [contributors tracked by Github](https://github.com/ever-co/ever-gauzy/graphs/contributors).

<img src="https://contributors-img.web.app/image?repo=ever-co/ever-gauzy" />

## 📊 Activity

![Alt](https://repobeats.axiom.co/api/embed/7c6f6c3bf56fd91647549cf4ae70af49ed5ee106.svg 'Repobeats analytics image')

## ⭐ Star History

[![Star History Chart](https://stats-github.ever.co/svg?repos=ever-co/ever-gauzy&type=Date)](https://stats-github.ever.co/#ever-co/ever-gauzy&Date)

## 💪 Powered By

<p>
  <a href="https://www.digitalocean.com/?utm_medium=opensource&utm_source=ever-co">
    <img src="https://opensource.nyc3.cdn.digitaloceanspaces.com/attribution/assets/PoweredByDO/DO_Powered_by_Badge_blue.svg" width="201px">
  </a>
</p>

## ❤️ Featured On

<a href="https://openalternative.co/ever-gauzy?utm_source=openalternative&utm_medium=badge&utm_campaign=embed&utm_content=tool-ever-gauzy" target="_blank"><img src="https://openalternative.co/ever-gauzy/badge.svg?theme=dark&width=200&height=50" width="200" height="50" alt="Ever Gauzy badge" loading="lazy" /></a>

## ©️ Copyright

#### Copyright © 2019-present, Ever Co. LTD. All rights reserved

[![Circle CI](https://circleci.com/gh/ever-co/ever-gauzy.svg?style=svg)](https://circleci.com/gh/ever-co/ever-gauzy)
[![codecov](https://codecov.io/gh/ever-co/ever-gauzy/branch/master/graph/badge.svg)](https://codecov.io/gh/ever-co/ever-gauzy)
[![Codacy Badge](https://app.codacy.com/project/badge/Grade/8c46f9eb9df64aa9859dea4d572059ac)](https://www.codacy.com/gh/ever-co/ever-gauzy/dashboard?utm_source=github.com&utm_medium=referral&utm_content=ever-co/ever-gauzy&utm_campaign=Badge_Grade)
[![DeepScan grade](https://deepscan.io/api/teams/3293/projects/16703/branches/363423/badge/grade.svg)](https://deepscan.io/dashboard#view=project&tid=3293&pid=16703&bid=363423)
[![Known Vulnerabilities](https://snyk.io/test/github/ever-co/ever-gauzy/badge.svg)](https://snyk.io/test/github/ever-co/ever-gauzy)
[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fever-co%2Fever-gauzy.svg?type=shield)](https://app.fossa.io/projects/git%2Bgithub.com%2Fever-co%2Fgauzy?ref=badge_shield)
[![Crowdin](https://badges.crowdin.net/e/1d2b3405d65a56ec116d0984fd579cc9/localized.svg)](https://ever.crowdin.com/gauzy)
![CodeRabbit Pull Request Reviews](https://img.shields.io/coderabbit/prs/github/ever-co/ever-gauzy?utm_source=oss&utm_medium=github&utm_campaign=ever-co%2Fever-gauzy&labelColor=171717&color=FF570A&link=https%3A%2F%2Fcoderabbit.ai&label=CodeRabbit+Reviews)

## 🔥 P.S

-   If you are interested in running an on-demand (delivery) or digital marketplace business, check open-source [Ever Demand Platform](https://github.com/ever-co/ever-demand)
-   [We are Hiring: remote TypeScript / NestJS / Angular developers](https://github.com/ever-co/jobs#available-positions)