Web site: voxt.ai
- Unsurprisingly, our team uses Voxt to communicate
- If you're a part of our team, please contact Alex Yakunin to get access.
Install:
- Git
- .NET 8
dotnet workload install wasm-tools maui aspire- Docker
- NodeJS 16+ and the latest
npm; npm-windows-update is the simplest way to updatenpmon Windows - Edge or Chrome
- Playwright
- Configure GCP service key
- Ensure your time & timezone settings are correct.
Run:
dotnet tool restore
dotnet workload install wasm-tools maui aspireRecommended IDEs:
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 + web watch)
./run-build.cmd restore-tools npm-install watchIf 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 watchYou 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:
- If you use Windows, project build could break with a message about some resource related to
AdamE.Firebase.iOS.Analyticspackage is not found. The issue is because of well-known default 260 characters limitation on the path length. Fortunately, there is a workaround to make it working.
NGINX (which runs in Docker) is configured to serve the app + its assets from https://local.voxt.ai, which means you need to setup a few extra things to access it.
Setting up https://local.voxt.ai
Run:
./add-hosts.cmdAlternatively, you hosts and trust certificate manually:
- Add this line with aliases to Hosts file.
127.0.0.1 local.voxt.ai media.local.voxt.ai cdn.local.voxt.ai - Import local.voxt.ai.crt to "Trusted Root Certification Authorities". You can do it with Microsoft Management Console or Chrome.
The instructions below imply you're on Windows.
- Install sign_app.cer to "Trusted Root Certification Authorities" (required only once).
- Enable Developer mode in windows settings. https://learn.microsoft.com/en-us/windows/apps/get-started/enable-your-device-for-development
- Build solution:
- using any IDE, or:
- run
msbuildfrom repo root, or, - run
dotnet buildfrom repo root.
- Run this command from repo root:
dotnet publish src/dotnet/App.Maui/App.Maui.csproj -f net9.0-windows10.0.22621.0 -c Debug --no-restore -p:GenerateAppxPackageOnBuild=true -p:AppxPackageSigningEnabled=true -p:PackageCertificateThumbprint=0BFF799D82CC03E61A65584D31D800924149453A
Possible issues:
"artefacts\obj\ClientApp\project.assets.json' doesn't have a target for 'net9.0-windows10.0.22621.0"error: try to build everything in IDE and rundotnet publishwith--no-restore.
TODO: write this section.
We use:
- Conventional commits
- Standard .NET naming & style guidelines. Exceptions:
- Place
{on the same line forif,for, and any other code inside method body - If you have to wrap a method body expression,
wrap it before
=>rather than after - A bunch of other things, see
#coding-styleDiscord channel
- Place
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.XXNote 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.