Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/CristianParadaLopez/cv-builder/llms.txt

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

Skillara AI uses Prisma ORM with PostgreSQL for server-side data persistence. The database is optional — Firebase Firestore handles user CV storage client-side without any backend involvement. The PostgreSQL schema provides a foundation for server-side CV management, including user accounts, stored CV HTML, and anonymous session caching, and becomes relevant when you want durable server-side records or plan to build features like public CV sharing.

Schema overview

The Prisma schema at backend/prisma/schema.prisma defines three models.

User

Stores registered user accounts. Supports both local password-based auth and Google sign-in via Firebase.
FieldTypeNotes
idIntAuto-incremented primary key
nameStringDisplay name
emailStringUnique — used as the primary identifier for local auth
passwordString?Optional bcrypt hash — only present for local (non-Google) accounts
googleIdString?Unique — Firebase UID for Google sign-in accounts
photoURLString?Profile photo URL
emailVerifiedBooleanDefaults to false
createdAtDateTimeSet automatically on creation
updatedAtDateTimeUpdated automatically on every change
cvsCV[]One-to-many relation to the CV model

CV

Stores the generated HTML for each CV, along with the original form data and metadata.
FieldTypeNotes
idIntAuto-incremented primary key
userIdIntForeign key referencing User.id
titleStringUser-defined label, e.g. "CV for CompuTrabajo"
htmlStringFull HTML of the designed CV (stored as Text)
htmlATSString?Optional ATS-optimised plain HTML variant (stored as Text)
styleStringTemplate name: moderno, clasico, minimalista, or creativo
modeStringGeneration mode: "designed" (default) or "ats"
formDataJsonComplete form data JSON used to generate the CV
promptString?Last edit instruction submitted by the user
isPublicBooleanWhether the CV is publicly accessible — defaults to false
viewCountIntPublic view counter — defaults to 0
createdAtDateTimeSet automatically on creation
updatedAtDateTimeUpdated automatically on every change

FormCache

Caches in-progress form data for anonymous (unauthenticated) browser sessions, identified by a client-generated session ID.
FieldTypeNotes
idStringUUID primary key, generated automatically
sessionIdStringUnique browser session identifier
formDataJsonCached form data for the session
htmlString?Optional last-generated HTML for the session (stored as Text)
createdAtDateTimeSet automatically on creation
updatedAtDateTimeUpdated automatically on every change

Running migrations

Make sure DATABASE_URL is set in backend/.env, then apply all pending migrations with:
cd backend
npx prisma migrate deploy
This command is safe to run in production — it only applies migrations that haven’t been applied yet and never modifies already-applied ones.

Viewing and editing data

Prisma Studio provides a browser-based GUI for reading and editing records in your database:
cd backend
npx prisma studio
Studio opens at http://localhost:5555 and shows tables for all three models.

Migration history

The repository contains three migrations that must all be applied in order.
1

20260404011911_agregar_tablas — Initial tables

Creates the initial User and CV tables. At this stage, User has only id, name, email, and createdAt. The CV table has id, userId, html, prompt, createdAt, and updatedAt. A unique index is added on User.email and a foreign key constraint links CV.userId to User.id.
2

20260519043841_add_cv_profiles — CV profile fields

Expands the CV table with formData, htmlATS, isPublic, mode, style, title, and viewCount. Adds emailVerified, googleId, password, photoURL, and updatedAt to the User table, and creates a unique index on User.googleId. Also creates and immediately drops a transitional CVProfile table that was superseded in the same migration.
3

20260526020718_cambio_para_que_funcione_cache — FormCache table

Adds the FormCache table with id (UUID), sessionId (unique), formData, html, createdAt, and updatedAt. This enables caching form state for anonymous sessions without requiring a user account.
The database is not required to run Skillara AI in its default configuration. The React frontend uses Firebase Firestore for user CV persistence, and the backend can generate and return CV HTML without storing anything. Set up PostgreSQL only if you need server-side CV management, durable anonymous session caching, or plan to build public CV sharing features.

Build docs developers (and LLMs) love