QualityDocD ships as a set of Docker Compose files that bring up seven containers — three databases and four application services — with a single command. This guide walks you from a fresh clone to a running stack with seeded test users, a working browser UI, and a verified API call. The entire process takes under five minutes on a machine with Docker Desktop already installed.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/juescoryisus/QualityDocD/llms.txt
Use this file to discover all available pages before exploring further.
Prerequisites
Before you begin, make sure you have the following installed and running:- Docker Desktop (Windows or macOS) or Docker Engine + Docker Compose v2 (Linux). All containers run on Docker’s bridge network, so no other local database installs are needed.
- PowerShell 7+ on Windows if you want to use the
setup.ps1convenience script. On Linux and macOS you can use the Docker CLI directly. - Git to clone the repository.
- At least 4 GB of free RAM for Docker — SQL Server 2022 Express requires a minimum of 2 GB on its own.
The setup script (
setup.ps1) is Windows-only. Linux and macOS users should follow the manual Docker CLI commands shown in each step below.Setup Steps
Clone the repository and create your environment file
Clone the QualityDocD repository and copy the example environment file to The default
.env. The .env file contains database passwords and secrets used by all compose files..env.example values are safe for local development. Before deploying to any shared environment, open .env and change the passwords and the SESSION_SECRET / API_JWT_SECRET values to strong, unique strings.Start all services
QualityDocD uses three compose files: The script also accepts targeted modes if you only need part of the stack:To wipe all data volumes and start fresh, add the
docker-compose.infra.yml (databases), docker-compose.apps.yml (.NET app, Node.js API, search service), and docker-compose.portal.yml (PHP portal). The setup.ps1 script runs all three in the correct order.-ResetData flag:Wait for health checks to pass
The databases take 20–60 seconds to initialize. The setup script polls each container’s health status and prints a checkmark when each database is ready. If you started the stack manually, you can check container health yourself:Wait until
All containers attach to the
qualitydoc_sqlserver, qualitydoc_postgres, and qualitydoc_mongodb all show a healthy status before proceeding. The application containers will restart automatically once the databases are ready.The three compose files and what they manage:| Compose File | Containers Started |
|---|---|
docker-compose.infra.yml | SQL Server 2022, PostgreSQL 16, MongoDB 7 |
docker-compose.apps.yml | .NET MVC app, Node.js API, Search Microservice |
docker-compose.portal.yml | PHP Portal |
qualitydoc_net bridge network, which is created by docker-compose.infra.yml and declared as external in the other two files.Open the .NET application and log in
Once the stack is running, open your browser and navigate to the .NET application:http://localhost:5001Log in with the seeded administrator account:
You will land on the document management dashboard. The .NET app seeds the following test users on first startup if the
| Username | Password |
|---|---|
admin | Admin123! |
Users table is empty:| Username | Password | Role | Department |
|---|---|---|---|
admin | Admin123! | Admin | TI |
gerente | Gerente123! | Manager | Calidad |
revisor1 | Revisor123! | Reviewer | Producción |
revisor2 | Revisor123! | Reviewer | Calidad |
editor | Editor123! | Editor | Operaciones |
These users are seeded into SQL Server by the .NET application at startup. They are separate from any users you create in the Node.js API, which stores its own user table in PostgreSQL.
Get a JWT from the Node.js API
The Node.js API uses JWT authentication. To call any protected endpoint, first obtain a token by posting to The login response includes a
POST /api/auth/login with a company slug, email, and password. You’ll need to create a company and user in the Node.js API first (it has its own user store in PostgreSQL, separate from the .NET app’s SQL Server users).Create a company, register a user, then log in:token field. Copy that value — you’ll use it as a Bearer token in subsequent requests.Service URLs at a Glance
| Service | URL | Description |
|---|---|---|
| .NET MVC App | http://localhost:5001 | Main document management UI |
| Node.js REST API | http://localhost:5000 | Programmatic API (JWT auth) |
| Search Microservice | http://localhost:3001 | Full-text search and indexing |
| PHP Portal | http://localhost:8080 | Read-only audit dashboard |
| SQL Server | localhost:1433 | Primary document database |
| PostgreSQL | localhost:5432 | Audit log and Node.js API data |
| MongoDB | localhost:27017 | Document metadata and full-text index |