This guide walks you from zero to a running Billar Pro Backend instance on your local machine. You will need Java 21, Maven (or use the includedDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/ierinconc/billar-pro-backend/llms.txt
Use this file to discover all available pages before exploring further.
mvnw wrapper), and Docker with Docker Compose installed. The whole process takes under five minutes.
Start PostgreSQL with Docker
The repository ships a Verify the container is healthy:You should see
docker-compose.yml that starts a PostgreSQL 16 container named billarpro-postgres. It maps the container’s port 5432 to host port 5433 and creates the billardb database automatically.billarpro-postgres with a status of Up. The database is now reachable at localhost:5433.Configure the application
Copy the provided example configuration to create your local Open Alternatively, you can copy
application.yml:src/main/resources/application.yml and set the datasource password to match the one in docker-compose.yml:The example file uses port
5432 in the JDBC URL, but the Docker Compose setup maps the container to host port 5433. Make sure to use jdbc:postgresql://localhost:5433/billardb in your local application.yml..env.example to .env and supply credentials as environment variables for a Docker-based deployment:Build and run
Use the Maven wrapper to compile and start the server:On Windows, use:Watch the startup logs. The The API is ready when you see a log line confirming Tomcat started on port 8080.
DataSeeder will automatically create 6 tables and the admin user the first time the application connects to an empty database:Using the JWT Token
Pass the token in theAuthorization header to access any protected endpoint. For example, retrieve the list of all billiard tables:
<your-token-here> with the full token string returned by the login call. A successful response returns a JSON array of Mesa objects, each showing the table number, state, and price per hour.
JWT tokens issued by Billar Pro Backend expire after 10 hours. After expiry, repeat the
POST /api/auth/login call to obtain a fresh token. There is no refresh-token mechanism; re-authentication is required.