Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/17Franco/CulturarteWeb/llms.txt

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

CulturarteWeb uses MySQL 8 with a database named Culturarte. Persistence is managed through JPA/EclipseLink (Jakarta EE), configured in META-INF/persistence.xml under the persistence unit my_persistence_unit. The schema is defined in copia.sql, which is automatically loaded when the Docker MySQL container is created for the first time via docker-entrypoint-initdb.d.
All tables use utf8mb4 as the default character set. String primary keys (e.g., Titulo, nombreCategoria, nickname) are declared in the utf8mb3_bin collation where case-sensitive binary comparison is required.

Tables

Categoria

Stores the hierarchical taxonomy of cultural event categories. Each category may optionally reference a parent category in the same table, forming a self-referential tree structure.
ColumnTypeConstraintsDescription
nombreCategoriavarchar(255)NOT NULL, PRIMARY KEYUnique name of the category (e.g., Música, Ballet)
categoria_padrevarchar(255)DEFAULT NULL, FK → Categoria(nombreCategoria)Parent category name; NULL for root-level categories
Self-referential FK: FK8xo9rnc65i56y4cfnwv1f8mhbcategoria_padre references Categoria(nombreCategoria), enabling multi-level category hierarchies.

Usuario

The base user entity for all platform participants. Both Colaborador and Proponente tables extend this one through a shared primary key (nickname), implementing a table-per-class inheritance strategy.
ColumnTypeConstraintsDescription
nicknamevarchar(255)NOT NULL, PRIMARY KEYUnique username and identifier
apellidovarchar(255)DEFAULT NULLUser’s surname
emailvarchar(255)DEFAULT NULLContact email address
fechadateDEFAULT NULLDate of birth
nombrevarchar(255)DEFAULT NULLUser’s first name
passvarchar(255)DEFAULT NULLPassword (stored as plain text in seed data — for development only)
rutaImgvarchar(255)DEFAULT NULLRelative path to the user’s profile image (e.g., IMG/novick/images.jpeg)
The seed data stores passwords as plain text (123). This is intended only for local development. Production deployments must use a proper hashing strategy.

Colaborador

Represents a user who acts as a funder/collaborator on cultural proposals. This table extends Usuario via a shared nickname primary key.
ColumnTypeConstraintsDescription
nicknamevarchar(255)NOT NULL, PRIMARY KEY, FK → Usuario(nickname)References the base user record
FK: FKjabyv7ba97wiikavtf703ocgqnickname references Usuario(nickname).

Proponente

Represents a user who acts as a cultural event proposer. This table extends Usuario via a shared nickname primary key and adds profile fields specific to proposers.
ColumnTypeConstraintsDescription
nicknamevarchar(255)NOT NULL, PRIMARY KEY, FK → Usuario(nickname)References the base user record
biografiatextDEFAULT NULLBiographical description of the proposer
direccionvarchar(255)DEFAULT NULLPhysical address of the proposer
webSitevarchar(255)DEFAULT NULLPersonal or institutional website URL
FK: FKos51n9fuqdt411ixkynltfsl9nickname references Usuario(nickname).

Propuesta

The central entity of the application — a cultural event proposal submitted by a Proponente seeking crowdfunding. The proposal title serves as its primary key.
ColumnTypeConstraintsDescription
Titulovarchar(255)NOT NULL, PRIMARY KEYUnique title of the proposal
Descripcionvarchar(2000)DEFAULT NULLFull description of the cultural event
FechadateDEFAULT NULLScheduled date of the event
FechaPublicaciondateDEFAULT NULLDate when the proposal was published on the platform
Imagenvarchar(255)DEFAULT NULLRelative path to the proposal’s cover image (e.g., IMG/PIL/pil.jpg)
Lugarvarchar(255)DEFAULT NULLVenue or location of the event
MontoTotalintNOT NULLTotal funding target amount (in local currency units)
PreciointNOT NULLTicket price per person
fechaExpiraciondateDEFAULT NULLDeadline for the proposal to reach its funding goal
categoriavarchar(255)DEFAULT NULL, FK → Categoria(nombreCategoria)Category the proposal belongs to
proponentevarchar(255)DEFAULT NULL, FK → Proponente(nickname)Nickname of the proposer who submitted it
FKs:
  • FKg6f534dgmcx7u9nqg8mictlf2categoria references Categoria(nombreCategoria)
  • FKay70jsl117hssucrwuh5d7m5pproponente references Proponente(nickname)

Colaboracion

Records a single funding transaction between a collaborator and a proposal. Each row represents one pledged contribution, including the amount and the type of return expected by the collaborator.
ColumnTypeConstraintsDescription
idbigintNOT NULL, PRIMARY KEY, AUTO_INCREMENTSurrogate primary key
creadodateDEFAULT NULLDate the collaboration was created
montointNOT NULLAmount contributed (in local currency units)
tipoRetornoenum('EntradaGratis','PorcentajeGanancia')DEFAULT NULLType of return expected by the collaborator
colaboradorvarchar(255)DEFAULT NULL, FK → Colaborador(nickname)Nickname of the contributing collaborator
propuestavarchar(255)DEFAULT NULL, FK → Propuesta(Titulo)Title of the funded proposal
The tipoRetorno column uses a MySQL ENUM with two possible values:
  • EntradaGratis — the collaborator receives free admission to the event.
  • PorcentajeGanancia — the collaborator receives a percentage of the event’s profits.
FKs:
  • FKov8v8761nv4mcxlmagc527wqgcolaborador references Colaborador(nickname)
  • FKitw9o5tpfse6fnhx97a97fvxspropuesta references Propuesta(Titulo)

Registro_Estado

An audit log that tracks every state transition of a proposal. Each row records one state change event, enabling a full history of a proposal’s lifecycle.
ColumnTypeConstraintsDescription
idbigintNOT NULL, PRIMARY KEY, AUTO_INCREMENTSurrogate primary key
estadoenum('INGRESADA','PUBLICADA','EN_FINANCIACION','FINANCIADA','NO_FINANCIADA','CANCELADA')DEFAULT NULLThe proposal state recorded at this point in time
fechaRegdateDEFAULT NULLDate when the state change was registered
propuestavarchar(255)DEFAULT NULL, FK → Propuesta(Titulo)Title of the associated proposal
Proposal lifecycle states: INGRESADAPUBLICADAEN_FINANCIACIONFINANCIADA or NO_FINANCIADA; a proposal may also be CANCELADA at any point. FK: FK42pax8m8wc7lqsdonxd9ycivppropuesta references Propuesta(Titulo).

comentarios

Stores user comments attached to proposals. The composite primary key (propuesta, usuario) enforces one comment per user per proposal.
ColumnTypeConstraintsDescription
propuestavarchar(255)NOT NULL, part of composite PRIMARY KEYTitle of the proposal being commented on
usuariovarchar(255)NOT NULL, part of composite PRIMARY KEYNickname of the commenting user
comentariovarchar(255)DEFAULT NULLThe comment text
FK: FKq1xivx0jbh78hpy5n250pnaarpropuesta references Propuesta(Titulo).
The seed file ships with an empty comentarios table — no sample comments are included.

propuesta_favorita

A junction table recording which proposals each user has marked as a favourite. The composite primary key prevents duplicate entries.
ColumnTypeConstraintsDescription
usuariovarchar(255)NOT NULL, part of composite PRIMARY KEY, FK → Usuario(nickname)Nickname of the user who saved the favourite
propuestavarchar(255)NOT NULL, part of composite PRIMARY KEY, FK → Propuesta(Titulo)Title of the favourited proposal
FKs:
  • FKr6v18uyfvr601jr6kbhlxidjsusuario references Usuario(nickname)
  • FKsfr0rvc3vu0ufertwqeneyjyepropuesta references Propuesta(Titulo)
The seed file ships with an empty propuesta_favorita table — no sample favourites are included.

retorno

Lists the available return types offered by each proposal to potential collaborators. A single proposal can offer multiple return types simultaneously (e.g., both EntradaGratis and PorcentajeGanancia).
ColumnTypeConstraintsDescription
propuestavarchar(255)FK → Propuesta(Titulo)Title of the proposal offering this return
retornoenum('EntradaGratis','PorcentajeGanancia')DEFAULT NULLThe return type on offer
FK: FKd0t31ruve27c7vv93qe92eu9mpropuesta references Propuesta(Titulo).
This table has no dedicated primary key column. The combination of propuesta + retorno acts as a natural composite key in practice.

usuario_seguidos

A junction table implementing the social follow graph. Each row records that one user (seguidor) follows another user (seguido).
ColumnTypeConstraintsDescription
seguidorvarchar(255)NOT NULL, part of composite PRIMARY KEY, FK → Usuario(nickname)Nickname of the user who is following
seguidovarchar(255)NOT NULL, part of composite PRIMARY KEY, FK → Usuario(nickname)Nickname of the user being followed
FKs:
  • FKtb7deeuuq7adsei575teefwwiseguidor references Usuario(nickname)
  • FK6ogkgb2fpok50e5aelhvdx3veseguido references Usuario(nickname)

Relationships

The diagram below summarises all foreign key relationships across the 11 tables:
  • CategoriaCategoria (self-reference): categoria_padre enables a parent–child category hierarchy.
  • ColaboradorUsuario: A collaborator is always a registered user; shares the same nickname PK.
  • ProponenteUsuario: A proposer is always a registered user; shares the same nickname PK.
  • PropuestaProponente: Every proposal is authored by exactly one proposer.
  • PropuestaCategoria: Every proposal belongs to one category.
  • ColaboracionColaborador: Each funding transaction is made by one collaborator.
  • ColaboracionPropuesta: Each funding transaction targets one proposal.
  • Registro_EstadoPropuesta: Each state-change log entry is linked to one proposal.
  • comentariosPropuesta: Each comment is attached to one proposal.
  • propuesta_favoritaUsuario: Favourites are owned by a user.
  • propuesta_favoritaPropuesta: Favourites reference a specific proposal.
  • retornoPropuesta: Return types are offered by a specific proposal.
  • usuario_seguidosUsuario (×2): Both the follower (seguidor) and the followed (seguido) are registered users.

Build docs developers (and LLMs) love