Actual-Chat / actual-chat

GNU Affero General Public License v3.0
38 stars 7 forks source link

Actual Chat

unit tests

slow tests

Web site: actual.chat

Join Team Chats

Prerequisites

Install:

Run:

dotnet tool restore
dotnet workload install wasm-tools maui aspire

Recommended IDEs:

Building Server + Web App

First, get Google Cloud credentials (key.json file) to make sure you can use Google Transcribe APIs. Copy the provided file to ~/.gcp/key.json and ensure GOOGLE_APPLICATION_CREDENTIALS env. variable stores its path.

To build & run the project:

# Start Docker containers for NGINX, PostgreSQL, Redis etc.
./docker-start.cmd

# Install dependencies and run watch (dotnet watch + webpack watch)
./run-build.cmd restore-tools npm-install watch

If you're getting RpcException with "Request had invalid authentication credentials." message, make sure your time & time zone settings are correct.

Other useful commands:

# What else build project can do?
./run-build.cmd --help

# List all available targets (you can combine them)
./run-build.cmd --list-targets

# Run with observability services (opentelemetry collector + jaeger) locally:
docker-compose -f docker-compose.observability.yml -f docker-compose.yml up

# Use either env. var or the matching option in your appsettings.local.json
$env:HostSettings__OpenTelemetryEndpoint="localhost"
./run-build.cmd watch

You can add your own targets (as C# code) to ./build/Program.cs, which is actually a Bullseye build project written in C#.

It's also useful to have an alias to run build system (to run commands like bs watch).

There are some shortcuts in *.cmd files, you can use them too.

Possible issues:

Accessing Web App

NGINX (which runs in Docker) is configured to serve the app + its assets from https://local.actual.chat, which means you need to setup a few extra things to access it.

Setting up https://local.actual.chat

Run:

./add-hosts.cmd

Alternatively, you hosts and trust certificate manually:

Building Mobile and Desktop Apps

The instructions below imply you're on Windows.

Windows app

Possible issues:

Android app

TODO: write this section.

Conventions

We use:

Releases

We use Nerdbank.GitVersioning.

To publish a new release, run these commands from repo root:

dotnet nbgv prepare-release
# Push newly created version XX:
git push --set-upstream origin release/v0.XX

Note that release deployment won't happen unless approved by one of our core team members.

We use the alpha suffix in the master branch, beta,rc-* in release branches. When a release branch drops the version suffix it becomes a production release.