- Project Overview
- Prerequisites
- Getting Started
- Project Structure
- Maintenance
- Database Backups
- Security
- Deployment
- How to change the app host
- Local Development
- Production Deployment
A modern fullstack platform for sign language management and search.
- Frontend: Quasar (Vue.js)
- Backend: NestJS (Node.js)
- Database: PostgreSQL
- Search Engine: Typesense
- Proxy/SSL: NGINX
- Orchestration: Docker & Docker Compose
Quick links:
- Application structure — how the repo and services are organized
- Product & user guide — what the app does and what each role does
- Phase 2 feature ideas — possible future enhancements
- Backend Documentation
- Frontend Documentation
SignBank is a platform for managing, searching, and administering sign language glossaries, with advanced search and multimedia support. The system is designed for secure production deployment using HTTPS and a decoupled architecture.
- Docker
- Docker Compose
- Node.js (only if you want to run services outside Docker)
git clone https://github.com/youruser/SignBank.git
cd SignBankCopy the example file and edit as needed:
cp schema.env .env-
Set your domain in
.envand configure it in the NGINX config files (nginx/default.confor in production). -
In order to create the DB for the first time, it is also needed to have an .env file in ./backend folder
DATABASE_URL=postgresql://postgres:postgres@localhost:5432/signbankdocker-compose -f docker-compose-local.yaml up --build- For production, use
docker-compose-production.yamland ensure you have valid SSL certificates innginx/certs/.
SignBank/
├── backend/ # NestJS API
├── frontend/ # Quasar (Vue.js) client
├── nginx/ # NGINX configuration and SSL
├── typesense/ # Typesense config (if needed)
├── docker-compose-local.yaml
├── docker-compose-production.yaml
└── README.md
- Rebuild containers:
docker-compose down --remove-orphans docker-compose build
- Clean Docker cache:
docker system prune -a
The project includes an automatic PostgreSQL backup service using the
kartoza/pg-backup image.
- Service:
db-backup - Schedule: Daily backups at 23:00 (configurable via
CRON_SCHEDULE) - Retention: Old backups older than 30 days are automatically removed (
REMOVE_BEFORE=30) - Storage: Backups are written to the
./backups/folder on the host machine
- Never hardcode the Typesense API key.
- Use HTTPS in production (configure NGINX and SSL certificates).
- Control access via backend authentication.
- Change databse user, passowrd and name. (We got two hack attemps, probably due the "bank" in the page title)
- Use Docker volumes for persistent DB and Typesense data.
- Open required ports: 443 (HTTPS).
- Use valid SSL certificates (e.g., Let’s Encrypt) in
nginx/certs/.
In the .env file, change the BASEURL to the domain you want to use for your app. In the nginx.conf file, change the server_name directive to match the domain you want to use.
Set the following environment variables in your .env file:
BASEURL: The base URL of your application (e.g.,https://signbank.example.com)- Other variables as specified in schema.env file
The Nginx configuration is located in the nginx/ directory. To update the configuration:
- Edit the
nginx/nginx.conffile, for test, local or production - Update the
server_namedirective to match your domain - Restart the Nginx container:
docker-compose restart nginxTo start the project locally:
docker-compose -f docker-compose-local.yaml build
docker-compose -f docker-compose-local.yaml upTo deploy the project in production mode:
docker-compose -f docker-compose-production.yaml build
docker-compose -f docker-compose-production.yaml up -d-d is for running docker compose in detached mode, so you can still use the terminal.
The first time we run the application, we will need to create the database, so, while the docker compose is running we will go to /backend folder.
There we need a .env file with the following, or change it with the database url with the custom values you set in the .env file:
DATABASE_URL=postgresql://postgres:postgres@localhost:5432/signbank
First run the database container:
docker-compose -f docker-compose-local.yaml up -d postgresThen, in the backend folder we will run:
npx prisma db push
To create the databse.
Then we can run the entire project:
docker-compose -f docker-compose-production.yaml up