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.
| Column | Type | Constraints | Description |
|---|
nombreCategoria | varchar(255) | NOT NULL, PRIMARY KEY | Unique name of the category (e.g., Música, Ballet) |
categoria_padre | varchar(255) | DEFAULT NULL, FK → Categoria(nombreCategoria) | Parent category name; NULL for root-level categories |
Self-referential FK: FK8xo9rnc65i56y4cfnwv1f8mhb — categoria_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.
| Column | Type | Constraints | Description |
|---|
nickname | varchar(255) | NOT NULL, PRIMARY KEY | Unique username and identifier |
apellido | varchar(255) | DEFAULT NULL | User’s surname |
email | varchar(255) | DEFAULT NULL | Contact email address |
fecha | date | DEFAULT NULL | Date of birth |
nombre | varchar(255) | DEFAULT NULL | User’s first name |
pass | varchar(255) | DEFAULT NULL | Password (stored as plain text in seed data — for development only) |
rutaImg | varchar(255) | DEFAULT NULL | Relative 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.
| Column | Type | Constraints | Description |
|---|
nickname | varchar(255) | NOT NULL, PRIMARY KEY, FK → Usuario(nickname) | References the base user record |
FK: FKjabyv7ba97wiikavtf703ocgq — nickname 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.
| Column | Type | Constraints | Description |
|---|
nickname | varchar(255) | NOT NULL, PRIMARY KEY, FK → Usuario(nickname) | References the base user record |
biografia | text | DEFAULT NULL | Biographical description of the proposer |
direccion | varchar(255) | DEFAULT NULL | Physical address of the proposer |
webSite | varchar(255) | DEFAULT NULL | Personal or institutional website URL |
FK: FKos51n9fuqdt411ixkynltfsl9 — nickname 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.
| Column | Type | Constraints | Description |
|---|
Titulo | varchar(255) | NOT NULL, PRIMARY KEY | Unique title of the proposal |
Descripcion | varchar(2000) | DEFAULT NULL | Full description of the cultural event |
Fecha | date | DEFAULT NULL | Scheduled date of the event |
FechaPublicacion | date | DEFAULT NULL | Date when the proposal was published on the platform |
Imagen | varchar(255) | DEFAULT NULL | Relative path to the proposal’s cover image (e.g., IMG/PIL/pil.jpg) |
Lugar | varchar(255) | DEFAULT NULL | Venue or location of the event |
MontoTotal | int | NOT NULL | Total funding target amount (in local currency units) |
Precio | int | NOT NULL | Ticket price per person |
fechaExpiracion | date | DEFAULT NULL | Deadline for the proposal to reach its funding goal |
categoria | varchar(255) | DEFAULT NULL, FK → Categoria(nombreCategoria) | Category the proposal belongs to |
proponente | varchar(255) | DEFAULT NULL, FK → Proponente(nickname) | Nickname of the proposer who submitted it |
FKs:
FKg6f534dgmcx7u9nqg8mictlf2 — categoria references Categoria(nombreCategoria)
FKay70jsl117hssucrwuh5d7m5p — proponente 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.
| Column | Type | Constraints | Description |
|---|
id | bigint | NOT NULL, PRIMARY KEY, AUTO_INCREMENT | Surrogate primary key |
creado | date | DEFAULT NULL | Date the collaboration was created |
monto | int | NOT NULL | Amount contributed (in local currency units) |
tipoRetorno | enum('EntradaGratis','PorcentajeGanancia') | DEFAULT NULL | Type of return expected by the collaborator |
colaborador | varchar(255) | DEFAULT NULL, FK → Colaborador(nickname) | Nickname of the contributing collaborator |
propuesta | varchar(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:
FKov8v8761nv4mcxlmagc527wqg — colaborador references Colaborador(nickname)
FKitw9o5tpfse6fnhx97a97fvxs — propuesta 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.
| Column | Type | Constraints | Description |
|---|
id | bigint | NOT NULL, PRIMARY KEY, AUTO_INCREMENT | Surrogate primary key |
estado | enum('INGRESADA','PUBLICADA','EN_FINANCIACION','FINANCIADA','NO_FINANCIADA','CANCELADA') | DEFAULT NULL | The proposal state recorded at this point in time |
fechaReg | date | DEFAULT NULL | Date when the state change was registered |
propuesta | varchar(255) | DEFAULT NULL, FK → Propuesta(Titulo) | Title of the associated proposal |
Proposal lifecycle states: INGRESADA → PUBLICADA → EN_FINANCIACION → FINANCIADA or NO_FINANCIADA; a proposal may also be CANCELADA at any point.
FK: FK42pax8m8wc7lqsdonxd9ycivp — propuesta references Propuesta(Titulo).
comentarios
Stores user comments attached to proposals. The composite primary key (propuesta, usuario) enforces one comment per user per proposal.
| Column | Type | Constraints | Description |
|---|
propuesta | varchar(255) | NOT NULL, part of composite PRIMARY KEY | Title of the proposal being commented on |
usuario | varchar(255) | NOT NULL, part of composite PRIMARY KEY | Nickname of the commenting user |
comentario | varchar(255) | DEFAULT NULL | The comment text |
FK: FKq1xivx0jbh78hpy5n250pnaar — propuesta 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.
| Column | Type | Constraints | Description |
|---|
usuario | varchar(255) | NOT NULL, part of composite PRIMARY KEY, FK → Usuario(nickname) | Nickname of the user who saved the favourite |
propuesta | varchar(255) | NOT NULL, part of composite PRIMARY KEY, FK → Propuesta(Titulo) | Title of the favourited proposal |
FKs:
FKr6v18uyfvr601jr6kbhlxidjs — usuario references Usuario(nickname)
FKsfr0rvc3vu0ufertwqeneyjye — propuesta 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).
| Column | Type | Constraints | Description |
|---|
propuesta | varchar(255) | FK → Propuesta(Titulo) | Title of the proposal offering this return |
retorno | enum('EntradaGratis','PorcentajeGanancia') | DEFAULT NULL | The return type on offer |
FK: FKd0t31ruve27c7vv93qe92eu9m — propuesta 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).
| Column | Type | Constraints | Description |
|---|
seguidor | varchar(255) | NOT NULL, part of composite PRIMARY KEY, FK → Usuario(nickname) | Nickname of the user who is following |
seguido | varchar(255) | NOT NULL, part of composite PRIMARY KEY, FK → Usuario(nickname) | Nickname of the user being followed |
FKs:
FKtb7deeuuq7adsei575teefwwi — seguidor references Usuario(nickname)
FK6ogkgb2fpok50e5aelhvdx3ve — seguido references Usuario(nickname)
Relationships
The diagram below summarises all foreign key relationships across the 11 tables:
Categoria → Categoria (self-reference): categoria_padre enables a parent–child category hierarchy.
Colaborador → Usuario: A collaborator is always a registered user; shares the same nickname PK.
Proponente → Usuario: A proposer is always a registered user; shares the same nickname PK.
Propuesta → Proponente: Every proposal is authored by exactly one proposer.
Propuesta → Categoria: Every proposal belongs to one category.
Colaboracion → Colaborador: Each funding transaction is made by one collaborator.
Colaboracion → Propuesta: Each funding transaction targets one proposal.
Registro_Estado → Propuesta: Each state-change log entry is linked to one proposal.
comentarios → Propuesta: Each comment is attached to one proposal.
propuesta_favorita → Usuario: Favourites are owned by a user.
propuesta_favorita → Propuesta: Favourites reference a specific proposal.
retorno → Propuesta: Return types are offered by a specific proposal.
usuario_seguidos → Usuario (×2): Both the follower (seguidor) and the followed (seguido) are registered users.