Skip to content

Entrega 1 - documentación - EAT#237

Open
edu-aguilar wants to merge 1 commit into
LIDR-academy:mainfrom
edu-aguilar:feature-entrega1-EAT
Open

Entrega 1 - documentación - EAT#237
edu-aguilar wants to merge 1 commit into
LIDR-academy:mainfrom
edu-aguilar:feature-entrega1-EAT

Conversation

@edu-aguilar

@edu-aguilar edu-aguilar commented Jul 5, 2026

Copy link
Copy Markdown

Summary by CodeRabbit

  • Documentation
    • Expanded the product overview with clearer feature descriptions and user journey details.
    • Added more complete guidance for project documentation, including planning, roadmap, epics, and user stories.
    • Improved the architecture and data model sections with diagrams and structured explanations.
    • Replaced placeholder content with a fuller project README, including setup prerequisites and implementation details.

@coderabbitai

coderabbitai Bot commented Jul 5, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

This PR replaces placeholder content in prompts.md and readme.md with complete documentation: refined AI prompt instructions for generating product documentation and architecture/data-model diagrams, and a fully fleshed-out project README covering objectives, architecture, data model, and user stories.

Changes

Product documentation content

Layer / File(s) Summary
Prompt instructions for documentation generation
prompts.md
Introductory prompt wording is refined, and full Prompt 1/2 instructions are added for researching product context and generating structured markdown documentation, plus a prompt for creating architecture and data model Mermaid diagrams.
Project overview and product description
readme.md
Project metadata, objective narrative, feature list, user journey, and installation prerequisites are filled in with concrete content.
System architecture documentation
readme.md
Architecture section is expanded with layered architecture narrative, Mermaid C4 diagrams, tech stack table, folder structure, deployment flow, and security checklist.
Data model documentation
readme.md
Data model section adds a Mermaid ER diagram and detailed entity attribute/constraint/business-rule documentation with recommended indexes.
User stories with acceptance criteria
readme.md
Three full user stories are added covering registration/language selection, real-time chat, and video/audio calls, each with detailed acceptance criteria, plus minor trailing section adjustments.

Estimated code review effort: 2 (Simple) | ~15 minutes

Poem

A rabbit hopped through empty space,
Filled each blank with prose and grace,
Diagrams bloomed where none were seen,
Stories told what chat could mean,
Docs complete—hop, hop, hooray! 🐇

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Title check ✅ Passed El título está relacionado con el cambio principal: una entrega de documentación en README y prompts.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@edu-aguilar edu-aguilar changed the title feat: filled readme and prompts files Entrega 1 - documentación - EAT Jul 5, 2026

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 5

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@prompts.md`:
- Around line 75-76: The request is ambiguous about where to place the two
Mermaid diagrams in prompts.md. Update the markdown by explicitly asking the
clarifying question about the destination for each diagram and state the
intended sections by name, so the architecture diagram can be placed in 2.1 and
the data model diagram in 3. Use the existing context from
product-description.md and MVP scope, but do not proceed with diagram generation
until the placement is confirmed.

In `@readme.md`:
- Line 293: The ER diagram label `USER_LANGES` is inconsistent with the later
`user_languages` table name and appears to be a typo. Update the diagram entry
in the README to `USER_LANGUAGES` so the entity name matches the rest of the
schema section and uses the same `USER_LANGUAGES` symbol consistently.
- Line 156: The sentence in the Sacrificios section contains a corrupted
mixed-language fragment, so clean up the affected text in readme.md and rewrite
that sentence entirely in consistent Spanish. Update the wording around the
dependency on external providers so the message reads naturally and no stray
characters like 相应的功能 remain.
- Around line 222-241: The fenced repository tree block in the README is missing
a language label, causing the markdown lint warning; update the fence to use an
appropriate label such as text so the block is explicitly annotated. Locate the
unlabeled fenced block in the project structure section and keep the content
unchanged while adding the language tag to the opening fence.
- Around line 409-419: Update the schema documentation in the model section to
explicitly encode the missing invariants instead of leaving them only in prose.
In the entries for user_languages, connections, msg_corrections, and reports,
add the required uniqueness/constraint details using the relevant model names so
the rules are documented as enforced behavior: exactly one native language per
user, unordered-pair uniqueness for connections, one correction per message, and
one report per reporter/reported/reason combination. Keep the wording aligned
with the existing table so the README and the stated business rules match.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 66b26491-75d6-423e-9377-c58c08f3044a

📥 Commits

Reviewing files that changed from the base of the PR and between bcde5c4 and 7968c7e.

📒 Files selected for processing (2)
  • prompts.md
  • readme.md

Comment thread prompts.md
Comment on lines +75 to +76
Con todo el contexto del proyecto definido en el fichero product-description.md y el alcance que conoces del MVP, quiero que diseñes, en formato mermaid, el diagrama de arquitectura y el diagrama de modelo de datos. Actualiza el fichero de markdown con el que hemos trabajado para incluir ambos ficheros. Pero antes de hacer nada, quiero que me plantees todas las dudas que tengas para que puedas generar ambos diagramas perfectos.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '\n== files ==\n'
git ls-files | sed -n '1,200p'

printf '\n== locate prompts.md ==\n'
fd -a '^prompts\.md$' . || true

printf '\n== search for section headings ==\n'
rg -n --hidden --glob '!**/.git/**' '2\.1|3\.|Arquitectura|modelo de datos|diagrama|mermaid|README' . || true

Repository: LIDR-academy/AI4Devs-finalproject

Length of output: 2638


🏁 Script executed:

#!/bin/bash
set -euo pipefail

# Inspect prompts.md around the referenced lines and any README structure.
PROMPT_FILE="$(fd -a '^prompts\.md$' . | head -n 1)"
echo "PROMPT_FILE=$PROMPT_FILE"
if [ -n "${PROMPT_FILE:-}" ]; then
  echo "== prompts.md line count =="
  wc -l "$PROMPT_FILE"
  echo "== prompts.md lines 65-85 =="
  sed -n '65,85p' "$PROMPT_FILE" | cat -n
fi

echo "== markdown files with likely section headings =="
rg -n --hidden --glob '!**/.git/**' '^(#{1,6})\s+.*(Arquitectura|modelo de datos|Data model|Architecture|2\.1|3\b)' . || true

Repository: LIDR-academy/AI4Devs-finalproject

Length of output: 2047


🏁 Script executed:

#!/bin/bash
set -euo pipefail

# Read only the smallest relevant slices of candidate markdown files.
for f in $(git ls-files '*.md' | head -n 20); do
  if rg -n -m 1 'Arquitectura|modelo de datos|2\.1|3\b' "$f" >/dev/null 2>&1; then
    echo "== $f =="
    wc -l "$f"
    rg -n 'Arquitectura|modelo de datos|2\.1|3\b' "$f"
  fi
done

Repository: LIDR-academy/AI4Devs-finalproject

Length of output: 3848


Clarify where each diagram should go. “Ambos ficheros” is ambiguous; name the target section for each diagram so the architecture goes in 2.1 and the data model goes in 3.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@prompts.md` around lines 75 - 76, The request is ambiguous about where to
place the two Mermaid diagrams in prompts.md. Update the markdown by explicitly
asking the clarifying question about the destination for each diagram and state
the intended sections by name, so the architecture diagram can be placed in 2.1
and the data model diagram in 3. Use the existing context from
product-description.md and MVP scope, but do not proceed with diagram generation
until the placement is confirmed.

Comment thread readme.md
**Justificación de la arquitectura:**

- **Beneficios:** Separación clara de responsabilidades, escalabilidad independiente por capa, integración sencilla con servicios managed (Supabase, LiveKit, DeepL) que reducen infraestructura a gestionar.
- **Sacrificios:** Dependencia de múltiples proveedores externos. Si alguno cae,相应的功能queda afectada. Se mitiga con mensajes de error claros y la posibilidad de cambiar de proveedor en el futuro.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Fix the corrupted sentence.

The mixed-language fragment (相应的功能) looks like an encoding/copy-paste artifact and should be cleaned up before merging.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@readme.md` at line 156, The sentence in the Sacrificios section contains a
corrupted mixed-language fragment, so clean up the affected text in readme.md
and rewrite that sentence entirely in consistent Spanish. Update the wording
around the dependency on external providers so the message reads naturally and
no stray characters like 相应的功能 remain.

Comment thread readme.md
Comment on lines +222 to +241
```
lang4all/
├── prisma/
│ ├── migrations/ # Migraciones de Prisma (historial de cambios en BD)
│ ├── schema.prisma # Definición del modelo de datos
│ └── seed.ts # Script de seeding (idiomas e intereses precargados)
├── src/
│ ├── config/ # Configuración de servicios externos (DeepL, LiveKit, ImageKit, MailJet)
│ ├── middleware/ # Middleware de autenticación (JWT), validación, errores
│ ├── routes/ # Definición de endpoints REST (auth, users, connections, messages, etc.)
│ ├── controllers/ # Lógica de negocio de cada endpoint
│ ├── services/ # Integración con servicios externos (DeepL, LiveKit, ImageKit, MailJet)
│ └── index.ts # Punto de entrada del servidor Express
├── public/ # Assets estáticos del frontend
├── docker/
│ └── Dockerfile # Configuración de container para Railway
├── .env.example # Plantilla de variables de entorno
├── lang4all-product-documentation.md # Documentación completa del producto
└── README.md # Este fichero
```

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Label this fenced block.

The markdown fence is unlabeled, which triggers MD040 and makes the rendered block less predictable. Use text (or another appropriate language) here.

🧰 Tools
🪛 markdownlint-cli2 (0.22.1)

[warning] 222-222: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@readme.md` around lines 222 - 241, The fenced repository tree block in the
README is missing a language label, causing the markdown lint warning; update
the fence to use an appropriate label such as text so the block is explicitly
annotated. Locate the unlabeled fenced block in the project structure section
and keep the content unchanged while adding the language tag to the opening
fence.

Source: Linters/SAST tools

Comment thread readme.md

```mermaid
erDiagram
USERS ||--o{ USER_LANGES : "tiene idiomas"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Rename USER_LANGES to USER_LANGUAGES.

The ER diagram entity name doesn’t match the user_languages table later in the section, so readers have to infer whether this is a typo or a separate model.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@readme.md` at line 293, The ER diagram label `USER_LANGES` is inconsistent
with the later `user_languages` table name and appears to be a typo. Update the
diagram entry in the README to `USER_LANGUAGES` so the entity name matches the
rest of the schema section and uses the same `USER_LANGUAGES` symbol
consistently.

Comment thread readme.md
Comment on lines +409 to +419
| **users** | `id` (uuid), `email` (string), `name` (string), `avatar_url` (string), `bio` (text), `proficiency_level` (enum), `is_active` (boolean), `created_at` (timestamp), `updated_at` (timestamp) | PK: `id` | `email` UNIQUE, `is_active` NOT NULL DEFAULT true | `id` sincronizado con Supabase Auth. Un usuario tiene 1 idioma nativo y N idiomas target. |
| **languages** | `id` (int), `code` (string), `name` (string), `native_name` (string), `is_active` (boolean) | PK: `id` | `code` UNIQUE, `is_active` NOT NULL DEFAULT true | Seed con ~30 idiomas comunes. El usuario solo selecciona de esta lista. |
| **user_languages** | `user_id` (uuid), `language_id` (int), `type` (enum: native/target) | PK: compuesto (`user_id`, `language_id`, `type`) | FK → users, FK → languages | Un usuario tiene exactamente 1 registro con `type=native` y N registros con `type=target`. |
| **interests** | `id` (int), `name` (string), `icon` (string), `is_active` (boolean) | PK: `id` | `name` UNIQUE, `is_active` NOT NULL DEFAULT true | Seed con ~15 intereses comunes. |
| **user_interests** | `user_id` (uuid), `interest_id` (int) | PK: compuesto (`user_id`, `interest_id`) | FK → users, FK → interests | Un usuario selecciona entre 1 y 5 intereses. |
| **connections** | `id` (uuid), `requester_id` (uuid), `receiver_id` (uuid), `status` (enum: pending/accepted/rejected), `request_message` (text), `created_at` (timestamp), `updated_at` (timestamp) | PK: `id` | FK → users (×2), UNIQUE (`requester_id`, `receiver_id`), `status` NOT NULL DEFAULT pending | `requester_id ≠ receiver_id`. No pueden existir 2 conexiones entre los mismos usuarios. |
| **messages** | `id` (uuid), `connection_id` (uuid), `sender_id` (uuid), `content` (text), `message_type` (enum: text/system), `created_at` (timestamp), `read_at` (timestamp) | PK: `id` | FK → connections, FK → users, `message_type` NOT NULL DEFAULT text | Solo se permite enviar mensajes si la conexión tiene `status=accepted`. |
| **msg_corrections** | `id` (uuid), `message_id` (uuid), `corrector_id` (uuid), `corrected_text` (text), `note` (text), `created_at` (timestamp), `updated_at` (timestamp) | PK: `id` | FK → messages, FK → users | Un mensaje puede tener una sola corrección (la más reciente sobreescribe). Solo el compañero puede corregir. |
| **translations** | `id` (uuid), `source_text_hash` (string), `source_text` (text), `source_language` (string), `target_language` (string), `translated_text` (text), `created_at` (timestamp), `expires_at` (timestamp) | PK: `id` | `source_text_hash` UNIQUE | Clave única = SHA-256(source_text + source_lang + target_lang). Expira a los 30 días. |
| **reports** | `id` (uuid), `reporter_id` (uuid), `reported_id` (uuid), `reason` (enum), `description` (text), `status` (enum: pending/reviewed/resolved), `created_at` (timestamp) | PK: `id` | FK → users (×2), `status` NOT NULL DEFAULT pending | Un usuario puede reportar a otro una sola vez por el mismo motivo. |
| **blocked_users** | `id` (uuid), `blocker_id` (uuid), `blocked_id` (uuid), `created_at` (timestamp) | PK: `id` | FK → users (×2), UNIQUE (`blocker_id`, `blocked_id`) | Un usuario bloqueado no puede enviar mensajes ni ver el perfil del bloqueador. |

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🗄️ Data Integrity & Integration | 🟠 Major | 🏗️ Heavy lift

Encode the stated invariants in the model.

Several business rules here are only described in prose, not enforced by the listed constraints: user_languages needs a way to guarantee exactly one native language per user, connections needs unordered-pair uniqueness, and msg_corrections / reports need the composite uniqueness implied by the rules. As written, the README promises stronger guarantees than the schema section documents.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@readme.md` around lines 409 - 419, Update the schema documentation in the
model section to explicitly encode the missing invariants instead of leaving
them only in prose. In the entries for user_languages, connections,
msg_corrections, and reports, add the required uniqueness/constraint details
using the relevant model names so the rules are documented as enforced behavior:
exactly one native language per user, unordered-pair uniqueness for connections,
one correction per message, and one report per reporter/reported/reason
combination. Keep the wording aligned with the existing table so the README and
the stated business rules match.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant