- Project Overview
- Prerequisites
- Getting Started
- Project Structure
- Maintenance
- Security
- Deployment
- API Documentation
- Component Documentation
- 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:
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 SignBank
Copy the example file and edit as needed:
cp schema.env .env
-
Set your domain in
.env
and configure it in the NGINX config files (nginx/default.conf
or 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/signbank
docker-compose -f docker-compose-local.yaml up --build
- For production, use
docker-compose-production.yaml
and ensure you have valid SSL certificates innginx/certs/
.
- Frontend: https:///
- Backend API: https:///api
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 -v --remove-orphans docker-compose build
- Clean Docker cache:
docker system prune -a
- Never hardcode the Typesense API key.
- Use HTTPS in production (configure NGINX and SSL certificates).
- Control access via backend authentication.
- 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/
.
API documentation will be provided in the future.
Seebackend/README.md
for endpoints and authentication details.
Each main folder contains its own README.md
for technical details:
backend/README.md
: Endpoints, authentication, Typesense integration, etc.frontend/README.md
: Framework, structure, communication with backend, etc.nginx/README.md
: Reverse proxy, SSL, routing.typesense/README.md
: Collections, schema, data import.
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.conf
file, for test, local or production - Update the
server_name
directive to match your domain - Restart the Nginx container:
docker-compose restart nginx
To start the project locally:
docker-compose -f docker-compose-local.yaml build
docker-compose -f docker-compose-local.yaml up
To 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:
DATABASE_URL=postgresql://postgres:postgres@localhost:5432/signbank
Then, in the backend folder we will run:
npx prisma migrate dev
To create the databse.
Then to see if everything is working we can go to the url we set. Or we can go back to the project folder and run:
docker compose -f docker-compose-production.yaml down
docker-compose -f docker-compose-production.yaml up