DomS-Hash-alt/fluent

Chatting app for people with language barriers.

0

stars

241

commits

Vue

primary language

Apr 21, 2026

updated

README

Fluent

A multilingual chat app powered with translate-gemma LLM. Messages are translated on the fly using Google's translategemma hosted on hugging face zeroGPU space.

Prerequisites

  • Docker and Docker Compose
  • A Hugging Face account (free tier works)
  • openssl available on your shell (Git Bash or WSL on Windows)

1. Set up the translation model on Hugging Face

The app calls out to a Gradio Space for translation, so the Space needs to exist before the stack comes up — otherwise translate requests will just error.

  1. Create a new Space at https://huggingface.co/new-space.

    • SDK: Gradio
    • Hardware: any GPU tier (ZeroGPU is fine, the model is gated behind @spaces.GPU)
  2. Copy everything from model/ in this repo into your Space:

    • app.py
    • requirements.txt
    • README.md (the frontmatter pins the Gradio/Python versions)
  3. Commit and push the files to the space repository.

  4. Wait for the Space to build. Grab the URL — it'll look like https://<username>-<space-name>.hf.space.

  5. Create a read token at https://huggingface.co/settings/tokens, you'll need it for HF_TOKEN.

2. Configure environment variables

Copy the example file:

cp .env.example .env

Generate a 32-byte key for message encryption and paste the output into MESSAGE_ENCRYPTION_KEY:

openssl rand -base64 32

If you don't have openssl on Windows, PowerShell works too:

$bytes = [byte[]]::new(32)
[System.Security.Cryptography.RandomNumberGenerator]::Create().GetBytes($bytes)
[Convert]::ToBase64String($bytes)

Then fill in HF_TOKEN and HF_SPACE_URL from step 1, and set NUXT_SESSION_PASSWORD to a long random string.

3. Run it

After cloning, on Windows or macOS:

docker compose up -d

Once all services are up, access the database through adminer: http://localhost:8080

and copy paste all /sql files in the order given.

setup.sh

setup.sh is a provisioning script written for a fresh DigitalOcean Ubuntu droplet. It installs Docker, generates the encryption key, opens a text editor so you can fill in the rest of .env, brings up the stack, and loads the schema.

Make it executable and run it:

chmod +x setup.sh
bash setup.sh

It's specific to that deployment and isn't needed for local development — docker compose up -d is enough there.

After the project is handed in, the script will be reworked to be more portable. For now, treat it as deployment-specific.

Contributors

DomS-Hash-alt

241 commits

DomS-Hash-alt/fluent

Chatting app for people with language barriers.

0

stars

241

commits

Vue

primary language

Apr 21, 2026

updated

README

Fluent

A multilingual chat app powered with translate-gemma LLM. Messages are translated on the fly using Google's translategemma hosted on hugging face zeroGPU space.

Prerequisites

  • Docker and Docker Compose
  • A Hugging Face account (free tier works)
  • openssl available on your shell (Git Bash or WSL on Windows)

1. Set up the translation model on Hugging Face

The app calls out to a Gradio Space for translation, so the Space needs to exist before the stack comes up — otherwise translate requests will just error.

  1. Create a new Space at https://huggingface.co/new-space.

    • SDK: Gradio
    • Hardware: any GPU tier (ZeroGPU is fine, the model is gated behind @spaces.GPU)
  2. Copy everything from model/ in this repo into your Space:

    • app.py
    • requirements.txt
    • README.md (the frontmatter pins the Gradio/Python versions)
  3. Commit and push the files to the space repository.

  4. Wait for the Space to build. Grab the URL — it'll look like https://<username>-<space-name>.hf.space.

  5. Create a read token at https://huggingface.co/settings/tokens, you'll need it for HF_TOKEN.

2. Configure environment variables

Copy the example file:

cp .env.example .env

Generate a 32-byte key for message encryption and paste the output into MESSAGE_ENCRYPTION_KEY:

openssl rand -base64 32

If you don't have openssl on Windows, PowerShell works too:

$bytes = [byte[]]::new(32)
[System.Security.Cryptography.RandomNumberGenerator]::Create().GetBytes($bytes)
[Convert]::ToBase64String($bytes)

Then fill in HF_TOKEN and HF_SPACE_URL from step 1, and set NUXT_SESSION_PASSWORD to a long random string.

3. Run it

After cloning, on Windows or macOS:

docker compose up -d

Once all services are up, access the database through adminer: http://localhost:8080

and copy paste all /sql files in the order given.

setup.sh

setup.sh is a provisioning script written for a fresh DigitalOcean Ubuntu droplet. It installs Docker, generates the encryption key, opens a text editor so you can fill in the rest of .env, brings up the stack, and loads the schema.

Make it executable and run it:

chmod +x setup.sh
bash setup.sh

It's specific to that deployment and isn't needed for local development — docker compose up -d is enough there.

After the project is handed in, the script will be reworked to be more portable. For now, treat it as deployment-specific.

Contributors

DomS-Hash-alt

241 commits

Languages

Vue

71.4%

TypeScript

24.6%

Python

2.3%