Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/joaomonteir0/printheritage/llms.txt

Use this file to discover all available pages before exploring further.

PrintHeritage ships as a fully containerised stack, so the fastest path from zero to a running instance is Docker Compose. In this guide you will clone the repository, spin up the three-service stack, and make your first authenticated API request — all in under five minutes. No local Python or Node.js installation is required.
The default super-admin account (super@print.com / password123) is seeded automatically on first startup. Change these credentials immediately before exposing any instance to a network. See Deployment for how to override environment variables.

Prerequisites

Before you begin, make sure the following tools are installed and available on your PATH:
ToolMinimum versionCheck
Docker24.xdocker --version
Docker Composev2.x (plugin)docker compose version
Git2.xgit --version

Steps

1

Clone the repository

Clone PrintHeritage from GitHub and move into the project root:
git clone https://github.com/joaomonteir0/printheritage.git
cd printheritage
2

Start the stack

A single command builds the images and starts all three services — the PostgreSQL database, the auth API, and the React front-end:
docker compose up --build
Docker Compose respects the depends_on chain, so the database starts first, followed by auth-service, and finally front-end. Wait until you see output similar to:
auth-service-api  | INFO:     Application startup complete.
auth-service-api  | INFO:     Uvicorn running on http://0.0.0.0:8000
The auth API is now reachable at http://localhost:8001 and the front-end at http://localhost:3000.
3

Log in and retrieve a token

The /login endpoint follows the OAuth2 password flow and expects application/x-www-form-urlencoded form data with username and password fields. Use the seeded super-admin account for your first call:
curl -s -X POST http://localhost:8001/login \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "username=super@print.com&password=password123"
A successful response returns a JSON object containing your bearer token:
{
  "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
  "token_type": "bearer"
}
Tokens are signed with HS256 and expire after 60 minutes.
Save the token to a shell variable so you can reuse it across subsequent calls:
TOKEN=$(curl -s -X POST http://localhost:8001/login \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "username=super@print.com&password=password123" \
  | python3 -c "import sys,json; print(json.load(sys.stdin)['access_token'])")
4

Fetch your profile with GET /me

Pass the token as a Bearer header to the /me endpoint to confirm authentication is working and inspect the authenticated user’s profile:
curl -s http://localhost:8001/me \
  -H "Authorization: Bearer $TOKEN"
The response contains the full user record for the currently authenticated account:
{
  "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "email": "super@print.com",
  "full_name": "SUPER ADMIN",
  "global_role": "SUPER_ADMIN",
  "profile_pic_url": null,
  "birth_date": null
}
5

Open the front-end

Navigate to http://localhost:3000 in your browser. The React application is pre-configured to talk to the auth service at http://localhost:8001 and will redirect you to the login page. Sign in with the same super-admin credentials.

What’s next?

Deployment Guide

Learn how the Docker Compose stack is structured, configure environment variables, and prepare PrintHeritage for production.

API Reference

Explore the full PrintHeritage REST API — projects, users, invitations, audit logs, and more.

Build docs developers (and LLMs) love