Conversation
- Added comprehensive project description, objectives, and features in README - Detailed installation instructions and environment setup for local development - Included architecture diagrams and system design explanations - Documented data model with ER diagrams and entity descriptions - Specified API interactions and user stories for clarity on functionality - Implemented security practices and testing strategies for robust application - Organized project structure with clear folder hierarchy and component descriptions
📝 WalkthroughWalkthroughThis PR introduces a comprehensive suite of Spanish-language prompt documents and planning guides for the Salmantour mobile gamification project, alongside substantive updates to Changes
Estimated code review effort🎯 4 (Complex) | ⏱️ ~55 minutes Poem
🚥 Pre-merge checks | ✅ 2 | ❌ 1❌ Failed checks (1 inconclusive)
✅ Passed checks (2 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing touches🧪 Generate unit tests (beta)
Tip Issue Planner is now in beta. Read the docs and try it out! Share your feedback on Discord. 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. Comment |
There was a problem hiding this comment.
Pull request overview
This pull request represents the final delivery documentation for Salmantour, a React Native mobile application for gamified exploration of points of interest in Salamanca, Spain. The PR adds comprehensive project documentation including a complete readme with technical specifications and a detailed record of AI-assisted development prompts.
Changes:
- Added complete project documentation to readme.md covering architecture, data model, API specification, user stories, tickets, and pull requests
- Added detailed AI development prompts documentation to prompts.md demonstrating AI assistant usage throughout all development phases
- Provided comprehensive technical specifications including installation instructions, security practices, testing approach, and infrastructure details
Reviewed changes
Copilot reviewed 13 out of 14 changed files in this pull request and generated 5 comments.
| File | Description |
|---|---|
| readme.md | Complete project documentation with 798 lines covering all aspects of the Salmantour application from architecture to deployment |
| prompts.md | Detailed documentation of AI-assisted development prompts showing the use of AI throughout the project lifecycle |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
|
||
| **Criterios de Aceptación:** | ||
|
|
||
| 1. El formulario solicita: correo electrónico (formato válido), contraseña (mín. 6 caracteres, 1 número), nombre de usuario (3-20 chars, alfanumérico), confirmación de contraseña |
There was a problem hiding this comment.
Inconsistent username length constraint: the database model specifies "3-50 chars" for username (line 391), but the user story acceptance criteria specifies "3-20 chars" (line 556). These constraints should match throughout the documentation.
| 1. El formulario solicita: correo electrónico (formato válido), contraseña (mín. 6 caracteres, 1 número), nombre de usuario (3-20 chars, alfanumérico), confirmación de contraseña | |
| 1. El formulario solicita: correo electrónico (formato válido), contraseña (mín. 6 caracteres, 1 número), nombre de usuario (3-50 chars, alfanumérico), confirmación de contraseña |
| **Prompt 2:** | ||
|
|
||
| **Prompt 1:** | ||
| > Crea el script SQL de seed data para la tabla `medals` con lugares reales de Salamanca. Necesito un mínimo de 40 puntos de interés distribuidos entre las 8 categorías (Monumentos, Gastronomía, Leyendas, Naturaleza, Deporte, Educación, Cultura, Religión). Cada registro debe incluir: nombre real del lugar, descripción informativa, dirección postal, y coordenadas GPS precisas (latitud con DECIMAL(10,8) y longitud con DECIMAL(11,8)). Las coordenadas deben ser exactas, ya que el algoritmo de Haversine las utilizará para calcular la distancia del usuario y activar el desbloqueo de medallas a menos de 10 metros. Genera el archivo `medals.sql` compatible con el esquema definido en `001_initial_schema.sql`. |
There was a problem hiding this comment.
The category names are inconsistent between documents. The prompt documentation (prompts.md line 89) lists categories as "Monumentos, Gastronomía, Leyendas, Naturaleza, Deporte, Educación, Cultura, Religión", while readme.md line 451 lists them as "Monumentos y Cultura, Bibliotecas, Gastronomía, Bares y Pubs, Discotecas, Deporte, Ocio Alternativo, Naturaleza". These are two completely different sets of categories. The documentation should use consistent category names throughout.
| > Crea el script SQL de seed data para la tabla `medals` con lugares reales de Salamanca. Necesito un mínimo de 40 puntos de interés distribuidos entre las 8 categorías (Monumentos, Gastronomía, Leyendas, Naturaleza, Deporte, Educación, Cultura, Religión). Cada registro debe incluir: nombre real del lugar, descripción informativa, dirección postal, y coordenadas GPS precisas (latitud con DECIMAL(10,8) y longitud con DECIMAL(11,8)). Las coordenadas deben ser exactas, ya que el algoritmo de Haversine las utilizará para calcular la distancia del usuario y activar el desbloqueo de medallas a menos de 10 metros. Genera el archivo `medals.sql` compatible con el esquema definido en `001_initial_schema.sql`. | |
| > Crea el script SQL de seed data para la tabla `medals` con lugares reales de Salamanca. Necesito un mínimo de 40 puntos de interés distribuidos entre las 8 categorías (Monumentos y Cultura, Bibliotecas, Gastronomía, Bares y Pubs, Discotecas, Deporte, Ocio Alternativo, Naturaleza). Cada registro debe incluir: nombre real del lugar, descripción informativa, dirección postal, y coordenadas GPS precisas (latitud con DECIMAL(10,8) y longitud con DECIMAL(11,8)). Las coordenadas deben ser exactas, ya que el algoritmo de Haversine las utilizará para calcular la distancia del usuario y activar el desbloqueo de medallas a menos de 10 metros. Genera el archivo `medals.sql` compatible con el esquema definido en `001_initial_schema.sql`. |
| #### 1. Clonar e instalar dependencias | ||
|
|
||
| ```bash | ||
| git clone https://github.com/tomypv/salmantour.git |
There was a problem hiding this comment.
Discrepancy between stated repository availability and installation instructions. Section 0.5 (line 34) explicitly states "No comparto el código al tratarse de un proyecto académico (TFG) privado" (I don't share the code as it's a private academic project), but the installation instructions (line 125) provide a git clone command with a public GitHub URL. If the repository is private, the installation instructions should clarify how authorized users can access it, or if it's public, section 0.5 should be updated accordingly.
| Salmantour implementa **156 tests unitarios** distribuidos en 7 suites, enfocados en lógica de negocio aislada de servicios externos: | ||
|
|
||
| | Suite | Tests | Qué valida | | ||
| |-------|-------|-----------| | ||
| | AuthValidator | ~50 | Validación de email, contraseña, username, formularios completos | | ||
| | authStore | ~25 | Estado de autenticación, setters, limpieza de sesión | | ||
| | medalsStore | ~20 | Cache de medallas, estados de carga, reinicio | | ||
| | locationStore | ~20 | Estado de ubicación, permisos, tracking | | ||
| | favoritesStore | ~20 | Estado de favoritos, toggle, limpieza | | ||
| | friendsStore | ~25 | Estado de amigos, solicitudes, limpieza | | ||
| | distanceCalculator | ~15 | Haversine, isWithinRadius, casos límite geográficos | |
There was a problem hiding this comment.
The total number of tests documented doesn't match the sum of individual test suite counts. The document states 156 tests total, but adding the approximate counts from each suite (50 + 25 + 20 + 20 + 20 + 25 + 15 = 175) gives a higher number. While the "~" symbols indicate these are approximations, the total should be consistent with the sum, or the individual counts should be adjusted to match the stated total.
|
|
||
| ### **0.2. Nombre del proyecto:** | ||
|
|
||
| Salmantour - Aplicación móvil ludificada para el descubrimiento de lugares de interés en entornos urbanos (Salamanca) |
There was a problem hiding this comment.
Inconsistent terminology: the project name uses "ludificada" (line 22) while the description uses "gamificada" (line 26). Both terms mean the same (gamified), but for consistency, the same Spanish term should be used throughout. "Gamificada" is more commonly used in Spanish technical contexts.
| Salmantour - Aplicación móvil ludificada para el descubrimiento de lugares de interés en entornos urbanos (Salamanca) | |
| Salmantour - Aplicación móvil gamificada para el descubrimiento de lugares de interés en entornos urbanos (Salamanca) |
There was a problem hiding this comment.
Actionable comments posted: 12
🧹 Nitpick comments (12)
Prompts proyecto final AI4DEVS/prompts_vista_progreso.md (2)
474-476: Avoid duplicate headings (MD024).There are repeated headings with identical text; consider renaming one to keep structure unique.
🧹 Suggested fix
-# Prompt 6: +# Prompt 6 (ajustes finales):🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@Prompts` proyecto final AI4DEVS/prompts_vista_progreso.md around lines 474 - 476, There are duplicate headings "Prompt 6:" causing MD024; locate the repeated heading lines with the exact text "Prompt 6:" in prompts_vista_progreso.md and rename one of them to a unique heading (e.g., "Prompt 6: Adjustments" or "Prompt 6a: ...") so headings are not identical, then update any nearby references or internal links to match the new heading text.
65-91: Add language identifiers to fenced blocks (MD040).Use
text,markdown, ortsdepending on the content.🧹 Suggested fix
-``` +```text frontend/ ├── app/ ...```diff -``` +```text UI (Screens) → Hooks → State (Zustand) → Services → Supabase Client / expo-location```diff -``` +```text Property 'error' does not exist on type 'MedalServiceResult<UserMedalWithDetails>'. ...```diff -``` +```ts router.push({ pathname: '/(tabs)/map', params: { medalId: medal.id, lat: medal.latitude, lng: medal.longitude, }, });```diff -``` +```text $ git status ...```diff -``` +```text ERROR Warning: Invariant Violation: zoomToRect is not implemented ...</details> Also applies to: 93-96, 233-236, 241-273, 296-306, 351-392, 481-493 <details> <summary>🤖 Prompt for AI Agents</summary>Verify each finding against the current code and only fix it if needed.
In
@Promptsproyecto final AI4DEVS/prompts_vista_progreso.md around lines 65 -
91, The Markdown file contains several fenced code blocks missing language
identifiers (MD040); update each triple-backtick block to include an appropriate
language tag (e.g., text, markdown, ts/tsx) so linters can parse them — for
example addtext for directory trees and logs,ts for the router.push(...)
snippet and any TypeScript examples, andtext ormarkdown for plain
messages like "UI (Screens) → Hooks…"; search for blocks containing the examples
referencing router.push, MedalServiceResult, zoomToRect,
and the directory tree/CLI output and add the matching language identifier to
each fenced block (also apply the same fix to the other ranges noted in the
review).</details> </blockquote></details> <details> <summary>Prompts proyecto final AI4DEVS/prompts_redaccion_memoria.md (2)</summary><blockquote> `20-26`: **Add blank lines around the table for MD058 compliance.** markdownlint reports the table needs surrounding blank lines to render consistently. <details> <summary>🧹 Suggested fix</summary> ```diff ### Stack Tecnológico + | Capa | Tecnologías | |------|-------------| | **Frontend** | React Native, Expo SDK 53, TypeScript, Expo Router, Zustand | | **Backend** | Supabase (Auth + PostgreSQL + Storage), Row Level Security | | **Servicios** | Google Maps API, expo-location, expo-camera | + ``` </details> <details> <summary>🤖 Prompt for AI Agents</summary> ``` Verify each finding against the current code and only fix it if needed. In `@Prompts` proyecto final AI4DEVS/prompts_redaccion_memoria.md around lines 20 - 26, The Markdown table under the "### Stack Tecnológico" heading violates MD058 because it lacks surrounding blank lines; fix it by adding a single blank line immediately before the table starts and a single blank line immediately after the table ends so the table is separated from surrounding content, then re-run markdownlint to confirm MD058 is resolved (refer to the "### Stack Tecnológico" heading and the Markdown table block). ``` </details> --- `162-168`: **Specify languages for fenced code blocks (MD040).** Add a language tag (e.g., `markdown` or `text`) to improve linting and syntax highlighting. <details> <summary>🧹 Suggested fix</summary> ```diff -``` +```markdown 1. [Título del apartado] - Breve descripción de qué incluirá (1-2 líneas) 1.1. [Subapartado si aplica] - Descripción breve ... ``` ``` ```diff -``` +```text La investigación sobre el ocio del alumnado universitario es pertinente porque proporciona insights... ``` ``` ```diff -``` +```markdown ### US-009: Visualización de información de lugar ... ``` ``` ```diff -``` +```markdown ### ADRs (Architecture Decision Records) ... ``` ``` </details> Also applies to: 258-260, 357-360, 483-486 <details> <summary>🤖 Prompt for AI Agents</summary>Verify each finding against the current code and only fix it if needed.
In
@Promptsproyecto final AI4DEVS/prompts_redaccion_memoria.md around lines 162
- 168, Los bloques de código con triple backticks carecen de etiqueta de
lenguaje (MD040); añade etiquetas apropiadas comomarkdownpara fragmentos
de documentación y encabezados (por ejemplo el bloque que comienza con "1.
[Título del apartado]", los bloques que contienen "### US-009: Visualización de
información de lugar" y "### ADRs (Architecture Decision Records)") ytext
para párrafos narrativos (por ejemplo el bloque que empieza "La investigación
sobre el ocio del alumnado universitario..."), y aplica la misma corrección a
los demás bloques similares en el archivo (las otras ocurrencias señaladas) para
mejorar el linting y resaltado de sintaxis.</details> </blockquote></details> <details> <summary>Prompts proyecto final AI4DEVS/prompts_casos_de_uso.md (2)</summary><blockquote> `21-27`: **Surround tables with blank lines (MD058).** This avoids markdownlint warnings and improves table rendering in some parsers. <details> <summary>🧹 Suggested fix</summary> ```diff ### Stack Tecnológico + | Capa | Tecnologías | |------|-------------| | **Frontend** | React Native, Expo SDK 53, TypeScript, Expo Router, Zustand | | **Backend** | Supabase (Auth + PostgreSQL + Storage), Row Level Security | | **Servicios** | Google Maps API, expo-location, expo-camera | + ``` </details> Also applies to: 53-61, 62-71, 72-79, 80-86 <details> <summary>🤖 Prompt for AI Agents</summary> ``` Verify each finding against the current code and only fix it if needed. In `@Prompts` proyecto final AI4DEVS/prompts_casos_de_uso.md around lines 21 - 27, The markdown tables (e.g., the one under the "### Stack Tecnológico" heading and the other tables referenced) need blank lines above and below them to satisfy MD058: locate each table block (rows beginning with '|' and the header separator '------') and insert a single empty line before the table and a single empty line after the table so the renderer/linter recognizes them as standalone blocks; update all instances noted in the comment (the table under "Stack Tecnológico" and the additional tables mentioned) accordingly. ``` </details> --- `179-184`: **Add language identifiers to fenced blocks (MD040).** Use `markdown` or `text` to satisfy linting and improve readability. <details> <summary>🧹 Suggested fix</summary> ```diff -``` +```markdown CU-XX: [Nombre del caso de uso] - Actor principal: [Usuario/Sistema] - Descripción breve: [1-2 líneas] ``` ``` ```diff -``` +```markdown ### 7.4 Casos de Uso del Sistema de Medallas y Desbloqueo ... ``` ``` ```diff -``` +```markdown ### 7.6 Casos de Uso del Sistema de Favoritos ... ``` ``` </details> Also applies to: 273-281, 300-320 <details> <summary>🤖 Prompt for AI Agents</summary>Verify each finding against the current code and only fix it if needed.
In
@Promptsproyecto final AI4DEVS/prompts_casos_de_uso.md around lines 179 -
184, The markdown fenced code blocks containing the use-case templates and
section examples (e.g., the block starting with "CU-XX: [Nombre del caso de
uso]" and the blocks under headings "### 7.4 Casos de Uso del Sistema de
Medallas y Desbloqueo" and "### 7.6 Casos de Uso del Sistema de Favoritos") are
missing language identifiers; update each triple-backtick fence to include a
language token like markdown or text (e.g., ```markdown) to satisfy MD040 and
improve readability across the blocks referenced (also apply same change to the
other affected blocks around lines 273-281 and 300-320).</details> </blockquote></details> <details> <summary>readme.md (2)</summary><blockquote> `162-166`: **Specify code fence languages (MD040).** Add `bash`, `text`, `yaml`, or `typescript` as appropriate. <details> <summary>🧹 Suggested fix</summary> ```diff -```bash +```bash cd frontend npm test ``` ``` ```diff -``` +```text salmantour/ ├── frontend/ ... ``` ``` ```diff -```mermaid +```mermaid flowchart LR ... ``` ``` ```diff -```yaml +```yaml Operation: unlockMedal ... ``` ``` </details> Also applies to: 258-290, 357-370, 483-498 <details> <summary>🤖 Prompt for AI Agents</summary>Verify each finding against the current code and only fix it if needed.
In
@readme.mdaround lines 162 - 166, The README has fenced code blocks without
language tags (e.g., the shell snippet containing "cd frontend\nnpm test", the
directory tree block that should be plain text, the mermaid flowchart block, and
the YAML operation example), which triggers MD040; update each triple-backtick
fence to include the appropriate language identifier (e.g.,bash for shell commands,text for the directory tree,mermaid for flowcharts, andyaml
for YAML examples) so syntax highlighting and linting are satisfied across the
affected snippets.</details> --- `114-121`: **Add blank lines around the prerequisites table (MD058).** This ensures consistent markdown rendering across parsers. <details> <summary>🧹 Suggested fix</summary> ```diff #### Prerrequisitos + | Herramienta | Versión | Descarga | |-------------|---------|----------| | Node.js | v18.0.0+ | [nodejs.org](https://nodejs.org/) | | Git | Cualquiera | [git-scm.com](https://git-scm.com/) | | Expo Go | SDK 53 | [Android](https://play.google.com/store/apps/details?id=host.exp.exponent) / [iOS](https://apps.apple.com/app/expo-go/id982107779) | + ``` </details> <details> <summary>🤖 Prompt for AI Agents</summary> ``` Verify each finding against the current code and only fix it if needed. In `@readme.md` around lines 114 - 121, Add blank lines before and after the "#### Prerrequisitos" header and the following markdown table so the table is separated from surrounding content; locate the "Prerrequisitos" heading and the table block (the pipe-delimited rows under it) and insert an empty line above the heading and another empty line after the table to satisfy MD058 and ensure consistent rendering. ``` </details> </blockquote></details> <details> <summary>Prompts proyecto final AI4DEVS/prompts_revision_tests.md (1)</summary><blockquote> `212-212`: **Unlabeled fenced code blocks at lines 212, 238, and 353.** The linter output and build log blocks would render with better clarity (and enable copy-paste formatting) if labeled ` ```text ` or ` ```shell `. Also applies to: 238-238, 353-353 <details> <summary>🤖 Prompt for AI Agents</summary>Verify each finding against the current code and only fix it if needed.
In
@Promptsproyecto final AI4DEVS/prompts_revision_tests.md at line 212, There
are unlabeled fenced code blocks using only triple backticks ("") in the markdown; update each of those fences to include an explicit language tag (for example change "" to "text" or "shell" as appropriate) so the
linter/build renders and enables proper formatting/copy-paste for the blocks
that currently render as raw output; search for the literal "```" occurrences
around the three reported blocks and replace them with the chosen labeled
fences.</details> </blockquote></details> <details> <summary>Prompts proyecto final AI4DEVS/prompts_redaccion_anexos.md (1)</summary><blockquote> `21-21`: **Two markdownlint warnings worth addressing.** - **Line 21** (MD058): the technology stack table is not surrounded by blank lines, which some renderers require to display it as a proper table. - **Line 119** (MD040): the index template code fence is unlabeled; adding ` ```text ` would clarify intent. Also applies to: 119-119 <details> <summary>🤖 Prompt for AI Agents</summary>Verify each finding against the current code and only fix it if needed.
In
@Promptsproyecto final AI4DEVS/prompts_redaccion_anexos.md at line 21, Add a
blank line before and after the Markdown table that begins with the header "|
Capa | Tecnologías |" so the table is properly separated (fixes MD058), and
update the unlabeled code fence at the index template (the fence around the
content at the region referenced near the "index template" at line 119) to use a
labeled fence like ```text to clarify intent (fixes MD040).</details> </blockquote></details> <details> <summary>Prompts proyecto final AI4DEVS/prompts_favoritos_gallery.md (1)</summary><blockquote> `23-23`: **Multiple unlabeled code fences and tables not surrounded by blank lines.** - **MD040** — fences at lines 30, 78, 130, 151, and 357 lack a language specifier. ` ```text `, ` ```sql `, or ` ```shell ` as appropriate would enable highlighting. - **MD058** — Markdown tables at lines 23, 176, 183, 192, 200, and 241 are missing the required blank lines before/after them, which can cause some renderers to treat them as plain text. Also applies to: 176-176, 183-183, 192-192, 200-200, 241-241, 30-30, 78-78, 130-130, 151-151, 357-357 <details> <summary>🤖 Prompt for AI Agents</summary>Verify each finding against the current code and only fix it if needed.
In
@Promptsproyecto final AI4DEVS/prompts_favoritos_gallery.md at line 23, The
markdown has unlabeled code fences and tables without surrounding blank lines:
add appropriate language identifiers (e.g.,text,sql,shell) to every code fence represented by baremarkers and ensure each Markdown table (for
example the table starting with the header row "| Capa | Tecnologías |" and the
other tables present) is preceded and followed by a blank line; update the
fences and table spacing throughout the file so they conform to MD040 (label
fences) and MD058 (blank lines around tables).</details> </blockquote></details> <details> <summary>Prompts proyecto final AI4DEVS/prompts_autenticacion.md (1)</summary><blockquote> `65-65`: **Unlabeled fenced code blocks reduce readability in rendered Markdown.** Several code fences (at lines 65, 72, 192, 232, 241, 296, 351, 481, and others) are opened with plain ` ``` ` without a language specifier. Adding `text`, `log`, `json`, or `typescript` as appropriate would enable syntax highlighting in GitHub and other Markdown renderers. Also applies to: 72-72, 192-192, 232-232 <details> <summary>🤖 Prompt for AI Agents</summary>Verify each finding against the current code and only fix it if needed.
In
@Promptsproyecto final AI4DEVS/prompts_autenticacion.md at line 65, Several
fenced code blocks in the prompts_autenticacion.md file are missing language
specifiers (they use plain), which hurts readability; update each unlabeled fence to include an appropriate language tag (e.g.,typescript,json,text, orlog) so renderers apply syntax highlighting, and ensure examples and snippets throughout the document use the most specific tag that matches the snippet content; search for all occurrences of "" without a language and
replace them accordingly.</details> </blockquote></details> </blockquote></details> <details> <summary>🤖 Prompt for all review comments with AI agents</summary>Verify each finding against the current code and only fix it if needed.
Inline comments:
In@Promptsproyecto final AI4DEVS/contexto_prototipo.md:
- Line 23: Add an empty blank line immediately before and after each Markdown
table in contexto_prototipo.md so they are surrounded by blank lines;
specifically update the table that follows the line "¿Prefieres trabajar con
Supabase en la nube o localmente con Docker?" and the other table occurrences
noted (near the other listed locations) to have a blank line above and a blank
line below to satisfy MD058.- Line 30: Update all fenced code blocks in the document to include a language
identifier (e.g.,json,yaml, ```bash) to satisfy MD040; specifically
locate the fenced blocks that contain the line "¿Quieres incluir recuperación de
contraseña en Sprint 1 o posponerlo?" and the other blocks referenced in the
comment and add the appropriate language tag for each block so syntax
highlighting/linting is enabled.In
@Promptsproyecto final AI4DEVS/Índice de prompts.txt:
- Line 2: The first list item "Prompt planning de Salmantour (Definido los
primeros pasos para definir la estructura base del proyecto" has an unmatched
opening parenthesis; close it by adding a trailing ")" so the line becomes
"Prompt planning de Salmantour (Definido los primeros pasos para definir la
estructura base del proyecto)". Make this change to the item text to remove the
dangling fragment.In
@Promptsproyecto final AI4DEVS/prompts_autenticacion.md:
- Around line 225-255: La documentación contiene PII y credenciales reales (ej.:
email "tpv888@gmail.com", UUIDs "137a2ce9-82b7-4438-b05a-3116ace9e554", JWT
beginning "eyJhbGci...", refresh_token "mcaqultemlfk", IP "77.243.87.230" y
bloques "auth.users" JSON) — reemplaza todas esas ocurrencias por placeholders
neutrales (por ejemplo user@example.com, , , ) en
este archivo y en cualquier otro fichero del commit; luego purga la historia git
con una herramienta como git filter-repo o BFG y force-pushea la rama;
finalmente, si la sesión/refresh_token no fue revocada, revoca "mcaqultemlfk" (y
cualquier otra sesión expuesta) desde el panel de Supabase para asegurarte de
que las credenciales ya no sean válidas.- Line 117: Resumen: Corregir el typo de ruta "fronted/docs" a "frontend/docs"
en el archivo Prompts proyecto final AI4DEVS/prompts_autenticacion.md. Busca la
cadena "fronted/docs" dentro de ese archivo y reemplázala por "frontend/docs"
para que apunte al directorio correcto; conserva el resto del texto tal cual y
verifica otras ocurrencias en el mismo archivo para consistencia (también revisa
referencias a README.md, DEVELOPMENTS.md, ARCHITECTURE.md y USER_STORIES.md
mencionadas en el mismo párrafo).In
@Promptsproyecto final AI4DEVS/prompts_favoritos_gallery.md:
- Line 301: Fix the typo in the prompt text where "whishlist" is misspelled;
replace the string "whishlist" with the correct spelling "wishlist" in the
prompt sentence that starts with "El botón favorito debe mostrarse..." so all
occurrences of "whishlist" are updated to "wishlist" in Prompts proyecto final
AI4DEVS prompts (locate the exact phrase "whishlist" in the markdown and correct
it).In
@Promptsproyecto final AI4DEVS/prompts_mapa_medallas.md:
- Line 245: There are duplicate "## Tu objetivo" headings causing markdownlint
MD024; locate every heading instance titled "## Tu objetivo" in
prompts_mapa_medallas.md and disambiguate them by renaming or adding a concise
suffix (e.g., "## Tu objetivo — Parte 1" or "## Tu objetivo (Resumen)") so each
heading is unique while preserving meaning; update any internal references if
present to match the new heading text.- Around line 30-32: The fenced code blocks in prompts_mapa_medallas.md (for
example the block containing "UI (Screens) → Hooks (useMedals, useLocation) →
State (Zustand Store) → Services (medalService, locationService) → Supabase
Client / expo-location)") are missing language identifiers and trigger MD040;
update each fenced block by adding an appropriate language tag (e.g., txt, bash,
sql, json) after the opening ``` so all blocks at the noted ranges (30-32,
107-113, 118-126, 146-150, 156-180) include a language specifier.In
@Promptsproyecto final AI4DEVS/prompts_redaccion_anexos.md:
- Line 152: Fix the typo in the section heading text by changing "Indidaciones
del Anexo IV Plan de seguridad" to "Indicaciones del Anexo IV Plan de seguridad"
so the heading uses the correct word; update the heading string in the markdown
where the heading "Indidaciones del Anexo IV Plan de seguridad" appears.In
@Promptsproyecto final AI4DEVS/prompts_revision_tests.md:
- Line 307: Fix the spelling mistake in the prompt text: replace "profunidad"
with "profundidad" in the sentence that begins "Revisa en profunidad el archivo
ARCHITECTURE.md" within Prompts proyecto final
AI4DEVS/prompts_revision_tests.md; search for any other occurrences of
"profunidad" in the file and correct them to "profundidad" to keep the wording
consistent.In
@Promptsproyecto final AI4DEVS/prompts_vista_friends.md:
- Around line 24-28: Add a blank line before and after each Markdown table to
satisfy MD058; specifically, ensure the table that begins with the header "|
Capa | Tecnologías |" (and the other tables containing the rows shown later in
the file) has an empty line immediately above its first header row and an empty
line immediately after its last row so the tables render consistently across
parsers.- Around line 31-33: Several fenced code blocks in the Markdown are missing
language identifiers (e.g., the block containing "UI (Screens/Tabs) → Hooks →
State (Zustand Stores) → Services → Supabase Client" and other blocks called out
in the review). For each triple-backtick block, add the appropriate language tag
(for examplets,sql,txt, orlog) immediately after the opening ``` so
markdown linters (MD040) pass; pick the language that best matches the snippet
content (TypeScript for React/hooks/store code, SQL for queries, txt/log for
plain text). Search the file for all remaining unlabeled fenced blocks
(including the other blocks noted in the review) and update their opening fences
to include the correct language tag.
Nitpick comments:
In@Promptsproyecto final AI4DEVS/prompts_autenticacion.md:
- Line 65: Several fenced code blocks in the prompts_autenticacion.md file are
missing language specifiers (they use plain), which hurts readability; update each unlabeled fence to include an appropriate language tag (e.g.,typescript,json,text, orlog) so renderers apply syntax highlighting, and ensure examples and snippets throughout the document use the most specific tag that matches the snippet content; search for all occurrences of "" without a language and replace them accordingly.In
@Promptsproyecto final AI4DEVS/prompts_casos_de_uso.md:
- Around line 21-27: The markdown tables (e.g., the one under the "### Stack
Tecnológico" heading and the other tables referenced) need blank lines above and
below them to satisfy MD058: locate each table block (rows beginning with '|'
and the header separator '------') and insert a single empty line before the
table and a single empty line after the table so the renderer/linter recognizes
them as standalone blocks; update all instances noted in the comment (the table
under "Stack Tecnológico" and the additional tables mentioned) accordingly.- Around line 179-184: The markdown fenced code blocks containing the use-case
templates and section examples (e.g., the block starting with "CU-XX: [Nombre
del caso de uso]" and the blocks under headings "### 7.4 Casos de Uso del
Sistema de Medallas y Desbloqueo" and "### 7.6 Casos de Uso del Sistema de
Favoritos") are missing language identifiers; update each triple-backtick fence
to include a language token like markdown or text (e.g., ```markdown) to satisfy
MD040 and improve readability across the blocks referenced (also apply same
change to the other affected blocks around lines 273-281 and 300-320).In
@Promptsproyecto final AI4DEVS/prompts_favoritos_gallery.md:
- Line 23: The markdown has unlabeled code fences and tables without surrounding
blank lines: add appropriate language identifiers (e.g.,text,sql,
shell) to every code fence represented by baremarkers and ensure each
Markdown table (for example the table starting with the header row "| Capa |
Tecnologías |" and the other tables present) is preceded and followed by a blank
line; update the fences and table spacing throughout the file so they conform to
MD040 (label fences) and MD058 (blank lines around tables).In
@Promptsproyecto final AI4DEVS/prompts_redaccion_anexos.md:
- Line 21: Add a blank line before and after the Markdown table that begins with
the header "| Capa | Tecnologías |" so the table is properly separated (fixes
MD058), and update the unlabeled code fence at the index template (the fence
around the content at the region referenced near the "index template" at line
- to use a labeled fence like ```text to clarify intent (fixes MD040).
In
@Promptsproyecto final AI4DEVS/prompts_redaccion_memoria.md:
- Around line 20-26: The Markdown table under the "### Stack Tecnológico"
heading violates MD058 because it lacks surrounding blank lines; fix it by
adding a single blank line immediately before the table starts and a single
blank line immediately after the table ends so the table is separated from
surrounding content, then re-run markdownlint to confirm MD058 is resolved
(refer to the "### Stack Tecnológico" heading and the Markdown table block).- Around line 162-168: Los bloques de código con triple backticks carecen de
etiqueta de lenguaje (MD040); añade etiquetas apropiadas comomarkdown
para fragmentos de documentación y encabezados (por ejemplo el bloque que
comienza con "1. [Título del apartado]", los bloques que contienen "### US-009:
Visualización de información de lugar" y "### ADRs (Architecture Decision
Records)") ytextpara párrafos narrativos (por ejemplo el bloque que
empieza "La investigación sobre el ocio del alumnado universitario..."), y
aplica la misma corrección a los demás bloques similares en el archivo (las
otras ocurrencias señaladas) para mejorar el linting y resaltado de sintaxis.In
@Promptsproyecto final AI4DEVS/prompts_revision_tests.md:
- Line 212: There are unlabeled fenced code blocks using only triple backticks
("") in the markdown; update each of those fences to include an explicit language tag (for example change "" to "text" or "shell" as
appropriate) so the linter/build renders and enables proper
formatting/copy-paste for the blocks that currently render as raw output; search
for the literal "```" occurrences around the three reported blocks and replace
them with the chosen labeled fences.In
@Promptsproyecto final AI4DEVS/prompts_vista_progreso.md:
- Around line 474-476: There are duplicate headings "Prompt 6:" causing MD024;
locate the repeated heading lines with the exact text "Prompt 6:" in
prompts_vista_progreso.md and rename one of them to a unique heading (e.g.,
"Prompt 6: Adjustments" or "Prompt 6a: ...") so headings are not identical, then
update any nearby references or internal links to match the new heading text.- Around line 65-91: The Markdown file contains several fenced code blocks
missing language identifiers (MD040); update each triple-backtick block to
include an appropriate language tag (e.g., text, markdown, ts/tsx) so linters
can parse them — for example addtext for directory trees and logs,ts for
the router.push(...) snippet and any TypeScript examples, and ```text orcontaining the examples referencing router.push, MedalServiceResult<UserMedalWithDetails>, zoomToRect, and the directory tree/CLI output and add the matching language identifier to each fenced block (also apply the same fix to the other ranges noted in the review). In `@readme.md`: - Around line 162-166: The README has fenced code blocks without language tags (e.g., the shell snippet containing "cd frontend\nnpm test", the directory tree block that should be plain text, the mermaid flowchart block, and the YAML operation example), which triggers MD040; update each triple-backtick fence to include the appropriate language identifier (e.g., ```bash for shell commands, ```text for the directory tree, ```mermaid for flowcharts, and ```yaml for YAML examples) so syntax highlighting and linting are satisfied across the affected snippets. - Around line 114-121: Add blank lines before and after the "#### Prerrequisitos" header and the following markdown table so the table is separated from surrounding content; locate the "Prerrequisitos" heading and the table block (the pipe-delimited rows under it) and insert an empty line above the heading and another empty line after the table to satisfy MD058 and ensure consistent rendering.
| 2. Sobre Infraestructura | ||
| - ¿Ya tienes cuenta de Supabase configurada o necesitamos crearla? | ||
| - ¿Ya tienes API Key de Google Maps o necesitas obtenerla? | ||
| - ¿Prefieres trabajar con Supabase en la nube o localmente con Docker? |
There was a problem hiding this comment.
Surround tables with blank lines.
MD058 requires a blank line before and after tables for consistent rendering.
Also applies to: 176-176, 183-183, 192-192, 200-200, 241-241
🧰 Tools
🪛 markdownlint-cli2 (0.21.0)
[warning] 23-23: Tables should be surrounded by blank lines
(MD058, blanks-around-tables)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@Prompts` proyecto final AI4DEVS/contexto_prototipo.md at line 23, Add an
empty blank line immediately before and after each Markdown table in
contexto_prototipo.md so they are surrounded by blank lines; specifically update
the table that follows the line "¿Prefieres trabajar con Supabase en la nube o
localmente con Docker?" and the other table occurrences noted (near the other
listed locations) to have a blank line above and a blank line below to satisfy
MD058.
| - ¿Tienes coordenadas GPS reales de esos lugares? | ||
| 4. Sobre Alcance del Sprint 1 | ||
| - ¿Prefieres un enfoque conservador (asegurar lo mínimo) o ambicioso? | ||
| - ¿Quieres incluir recuperación de contraseña en Sprint 1 o posponerlo? |
There was a problem hiding this comment.
Add language identifiers to fenced code blocks.
This avoids MD040 warnings and keeps formatting consistent across docs.
Also applies to: 78-78, 130-130, 151-151
🧰 Tools
🪛 markdownlint-cli2 (0.21.0)
[warning] 30-30: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@Prompts` proyecto final AI4DEVS/contexto_prototipo.md at line 30, Update all
fenced code blocks in the document to include a language identifier (e.g.,
```json, ```yaml, ```bash) to satisfy MD040; specifically locate the fenced
blocks that contain the line "¿Quieres incluir recuperación de contraseña en
Sprint 1 o posponerlo?" and the other blocks referenced in the comment and add
the appropriate language tag for each block so syntax highlighting/linting is
enabled.
| @@ -0,0 +1,15 @@ | |||
| **ORDEN DE PROMPTS** | |||
| 1. Prompt planning de Salmantour (Definido los primeros pasos para definir la estructura base del proyecto | |||
There was a problem hiding this comment.
Fix unmatched parenthesis in item 1.
Line 2 opens a parenthesis but never closes it. Please close it to avoid a dangling fragment.
🧰 Tools
🪛 LanguageTool
[grammar] ~2-~2: Aquí puede haber un error.
Context: ...sos para definir la estructura base del proyecto 2. "Realiza el primer paso que has definido...
(QB_NEW_ES)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@Prompts` proyecto final AI4DEVS/Índice de prompts.txt at line 2, The first
list item "Prompt planning de Salmantour (Definido los primeros pasos para
definir la estructura base del proyecto" has an unmatched opening parenthesis;
close it by adding a trailing ")" so the line becomes "Prompt planning de
Salmantour (Definido los primeros pasos para definir la estructura base del
proyecto)". Make this change to the item text to remove the dangling fragment.
|
|
||
| - Buena idea la de implementar ScreenContainer. Añade el archivo y una breve mención sobre esto en los archivos de documentación involucrados en este diseño actualizado. | ||
|
|
||
| Cuando te indico de actualizar los archivos de documentación, me refiero principalmente a los `README.md` de raíz, de `docs` y de frontend; `DEVELOPMENT.md`, `ARCHITECTURE.md`, `USER_STORIES.md` y los de la carpeta `fronted/docs`. También puedes actualizar archivos de las guías técnica en la carpeta `docs/technical`, pero esos no son prioridad, no van a ser documentos oficiales de documentación, solo sirven para el desarrollo. Lo importante es que actualices los documentos oficiales de documentación (los que te he indicado). |
There was a problem hiding this comment.
Typo: fronted/docs should be frontend/docs.
The path as written references a non-existent directory name, which could confuse future contributors looking for documentation files.
✏️ Proposed fix
-`README.md` de raíz, de `docs` y de frontend; `DEVELOPMENT.md`, `ARCHITECTURE.md`, `USER_STORIES.md` y los de la carpeta `fronted/docs`.
+`README.md` de raíz, de `docs` y de frontend; `DEVELOPMENT.md`, `ARCHITECTURE.md`, `USER_STORIES.md` y los de la carpeta `frontend/docs`.📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| Cuando te indico de actualizar los archivos de documentación, me refiero principalmente a los `README.md` de raíz, de `docs` y de frontend; `DEVELOPMENT.md`, `ARCHITECTURE.md`, `USER_STORIES.md` y los de la carpeta `fronted/docs`. También puedes actualizar archivos de las guías técnica en la carpeta `docs/technical`, pero esos no son prioridad, no van a ser documentos oficiales de documentación, solo sirven para el desarrollo. Lo importante es que actualices los documentos oficiales de documentación (los que te he indicado). | |
| Cuando te indico de actualizar los archivos de documentación, me refiero principalmente a los `README.md` de raíz, de `docs` y de frontend; `DEVELOPMENT.md`, `ARCHITECTURE.md`, `USER_STORIES.md` y los de la carpeta `frontend/docs`. También puedes actualizar archivos de las guías técnica en la carpeta `docs/technical`, pero esos no son prioridad, no van a ser documentos oficiales de documentación, solo sirven para el desarrollo. Lo importante es que actualices los documentos oficiales de documentación (los que te he indicado). |
🧰 Tools
🪛 LanguageTool
[grammar] ~117-~117: Elimina la preposición
Context: ... diseño actualizado. Cuando te indico de actualizar los archivos de documentació...
(QB_NEW_ES_OTHER_ERROR_IDS_UNNECESSARY_ADPOSITION)
[grammar] ~117-~117: Corrige el error ortográfico.
Context: ..., USER_STORIES.md y los de la carpeta fronted/docs. También puedes actualizar archiv...
(QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_SPELLING)
[grammar] ~117-~117: Cambia la forma del adjetivo.
Context: ...puedes actualizar archivos de las guías técnica en la carpeta docs/technical, pero es...
(QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_ADJECTIVE_FORM)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@Prompts` proyecto final AI4DEVS/prompts_autenticacion.md at line 117,
Resumen: Corregir el typo de ruta "fronted/docs" a "frontend/docs" en el archivo
Prompts proyecto final AI4DEVS/prompts_autenticacion.md. Busca la cadena
"fronted/docs" dentro de ese archivo y reemplázala por "frontend/docs" para que
apunte al directorio correcto; conserva el resto del texto tal cual y verifica
otras ocurrencias en el mismo archivo para consistencia (también revisa
referencias a README.md, DEVELOPMENTS.md, ARCHITECTURE.md y USER_STORIES.md
mencionadas en el mismo párrafo).
| ``` | ||
| Android Bundled 2477ms node_modules\expo-router\entry.js (1203 modules) | ||
| LOG [useAuthState] Ejecutando initialize... | ||
| LOG [AuthStore] Inicializando... | ||
| LOG [AuthStore] No hay sesión activa | ||
| LOG [useAuthState] Ejecutando initialize... | ||
| LOG [AuthStore] Ya inicializado, saltando... | ||
| LOG [NavigationGuard] Estado: {"inAuthGroup": false, "inRootIndex": true, "inTabsGroup": false, "isAuthenticated": false, "segments": ""} | ||
| LOG [AuthStore] Auth state changed: INITIAL_SESSION | ||
| LOG [AuthService] Iniciando registro para: tpv888@gmail.com | ||
| LOG [AuthService] Usuario creado en Auth: 137a2ce9-82b7-4438-b05a-3116ace9e554 | ||
| LOG [AuthService] Registro completado exitosamente | ||
| ``` | ||
| Imagino que está configurado de manera que no se añada ningún usuario en la base de datos hasta que se verifique el correo electrónico, pero creo que deberíamos cambiar esta lógica. Si mantenemos eso, deberíamos añadir una vista nueva de "verifica tu correo electrónico con el correo que te hemos enviado" que sirva como "vista de espera", entre el signup y vista principal de mapa. De esta manera, podemos asegurar que no acceda a la app ningún usuario que no esté en la base de datos (lo que significa estar verificado). Otra opción es permitir entrar directamente después de hacer signup (como está ahora), y añadir el usuario a la tabla 'users' aunque no tenga verificado el correo electrónico. En esta opción, se le podría añadir un atributo "verified" que fuese false hasta que verificase su correo con el correo automático que envía Supabase, y si cierra sesión, no se le permitiría iniciar sesión de nuevo hasta que verificase el correo. | ||
| Entre estas 2 opciones prefiero implementar la primera, pero tú mismo puedes analizar la situación y decidir la que consideres mejor (o decidir otra no planteada), explicándome por qué. | ||
|
|
||
| Por ahora, este error de usuario no añadido a la tabla es el principal que tenemos, y que da lugar a otros comportamientos extraños. Un caso de mal funcionamiento es el intento de Cerrar Sesión. Si el usuario confirma que quiere cerrar su sesión, no recibe ninguna confirmación visual en la app, ya que le mantiene en la misma vista de profile. Debería ocurrir que, al confirmar que desea cerrar sesión, se cierre bien su sesión y se le redirija a una pantalla inicial de Login o Singup (ya que no tenemos landing page todavía). En los logs del terminal sí que indica que se cierra la sesión, pero sin hacer nada visible para el usuario. De hecho, como sigue en la misma vista de profile, el usuario puede intentar cerrar sesión varias veces seguidas, lo que es un comportamiento extraño que no debería ocurrir: | ||
| ``` | ||
| LOG [AuthService] Cerrando sesión... | ||
| LOG [AuthStore] Auth state changed: SIGNED_OUT | ||
| LOG [AuthService] Sesión cerrada exitosamente | ||
| LOG [AuthService] Cerrando sesión... | ||
| LOG [AuthStore] Auth state changed: SIGNED_OUT | ||
| LOG [AuthService] Sesión cerrada exitosamente | ||
| LOG [AuthService] Cerrando sesión... | ||
| LOG [AuthStore] Auth state changed: SIGNED_OUT | ||
| LOG [AuthService] Sesión cerrada exitosamente | ||
| ``` | ||
| No estoy seguro de si este fallo se debe a lo del usuario, pero lo deberemos arreglar igualmente. | ||
|
|
||
| También me está dando error al intentar verificar el correo electrónico con el mensaje que me llega automáticamente de Supabase. Me indica un link para verificar la cuenta, que me redirige a una página que me da un error "localhost ha rechazado la conexión". Te he adjuntado capturas de pantalla de esto. El enlace al que se me redirige al hacer clic en el enlace de verificación es: "http://localhost:3000/#access_token=eyJhbGciOiJIUzI1NiIsImtpZCI6ImZnS1FST05rY2ROTzhYdmciLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL3d3Z25yendwaW5hcHVqZW1yanBoLnN1cGFiYXNlLmNvL2F1dGgvdjEiLCJzdWIiOiIxMzdhMmNlOS04MmI3LTQ0MzgtYjA1YS0zMTE2YWNlOWU1NTQiLCJhdWQiOiJhdXRoZW50aWNhdGVkIiwiZXhwIjoxNzY1MDUzNzkyLCJpYXQiOjE3NjUwNTAxOTIsImVtYWlsIjoidHB2ODg4QGdtYWlsLmNvbSIsInBob25lIjoiIiwiYXBwX21ldGFkYXRhIjp7InByb3ZpZGVyIjoiZW1haWwiLCJwcm92aWRlcnMiOlsiZW1haWwiXX0sInVzZXJfbWV0YWRhdGEiOnsiZW1haWwiOiJ0cHY4ODhAZ21haWwuY29tIiwiZW1haWxfdmVyaWZpZWQiOnRydWUsInBob25lX3ZlcmlmaWVkIjpmYWxzZSwic3ViIjoiMTM3YTJjZTktODJiNy00NDM4LWIwNWEtMzExNmFjZTllNTU0IiwidXNlcm5hbWUiOiJUaW9fVG9ueSJ9LCJyb2xlIjoiYXV0aGVudGljYXRlZCIsImFhbCI6ImFhbDEiLCJhbXIiOlt7Im1ldGhvZCI6Im90cCIsInRpbWVzdGFtcCI6MTc2NTA1MDE5Mn1dLCJzZXNzaW9uX2lkIjoiY2JmZDU1ODEtYmNhZC00ODVhLTg0ZmUtZTY1MGM2NzE0Mzk5IiwiaXNfYW5vbnltb3VzIjpmYWxzZX0.YbEngIyHweXgv9CkeDyzJbFgsI3iYltJmQ5Q5yX-Ns0&expires_at=1765053792&expires_in=3600&refresh_token=mcaqultemlfk&token_type=bearer&type=signup". A lo mejor el error ocurre porque me redirige a 'localhost:3000' y yo estoy utilizando otro puerto, no lo sé. Revisa esto y explica por qué está ocurriendo este error. |
There was a problem hiding this comment.
Remove real user PII and credentials from committed documentation.
This file contains multiple categories of personal data and live credentials across several sections:
- Lines 234–235 (log block): real email
tpv888@gmail.comand auth UUID committed verbatim. - Line 255: a full Supabase JWT access token (its payload encodes the email, user UUID, and username), a plaintext
refresh_token, and the Supabase project reference (wwgnrzwpinapujemrjph.supabase.co). - Lines 327–392: raw
auth.usersJSON records with real email and UUID. - Lines 398–532: Supabase API Gateway log containing
actor_username: tpv888@usal.es,actor_id, andremote_addr: 77.243.87.230(a real IP address). - Lines 600–610: additional logs with
tpv888@usal.esand another UUID.
Even with the JWT expired and the refresh token likely revoked, the personal data (emails, UUIDs, IP address) persists in git history and violates GDPR/LOPDGDD data minimisation principles — particularly relevant for a Spanish university project. If the refresh token has not been explicitly revoked on the Supabase dashboard, there is a small but non-zero risk.
Recommended remediation:
- Redact all emails, UUIDs, IP addresses, and tokens with placeholders (e.g.,
tpv888@gmail.com→<user@example.com>, UUID →<uuid>, token →<redacted>) before the PR is merged. - Force-push or use
git filter-repoto purge the data from git history. - Explicitly revoke the refresh token
mcaqultemlfkin the Supabase Auth dashboard under the relevant user's sessions if not already done.
Also applies to: 327-392, 398-532, 600-610
🧰 Tools
🪛 LanguageTool
[grammar] ~238-~238: Corrige la minúscula.
Context: ...o, deberíamos añadir una vista nueva de "verifica tu correo electrónico con el correo que...
(QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_LOWERCASE)
[grammar] ~238-~238: Aquí puede haber un error.
Context: ...como "vista de espera", entre el signup y vista principal de mapa. De esta manera...
(QB_NEW_ES)
[grammar] ~238-~238: Cambia la palabra o signo.
Context: ...espués de hacer signup (como está ahora), y añadir el usuario a la tabla 'users' ...
(QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_PUNCTUATION)
[grammar] ~239-~239: Agrega un signo de puntuación.
Context: ...que verificase el correo. Entre estas 2 opciones prefiero implementar la primera, pero t...
(QB_NEW_ES_OTHER_ERROR_IDS_MISSING_PUNCTUATION)
[grammar] ~241-~241: Corrige la mayúscula.
Context: ... de mal funcionamiento es el intento de Cerrar Sesión. Si el usuario confirma que quie...
(QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_UPPERCASE)
[grammar] ~241-~241: Corrige la mayúscula.
Context: ... funcionamiento es el intento de Cerrar Sesión. Si el usuario confirma que quiere cerr...
(QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_UPPERCASE)
[grammar] ~241-~241: Corrige la mayúscula.
Context: ...e le redirija a una pantalla inicial de Login o Singup (ya que no tenemos landing pag...
(QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_UPPERCASE)
[grammar] ~241-~241: Corrige el error ortográfico.
Context: ...irija a una pantalla inicial de Login o Singup (ya que no tenemos landing page todavía...
(QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_SPELLING)
[grammar] ~255-~255: Agrega un signo de puntuación.
Context: ...e me redirige a una página que me da un error "localhost ha rechazado la conexión". T...
(QB_NEW_ES_OTHER_ERROR_IDS_MISSING_PUNCTUATION)
🪛 markdownlint-cli2 (0.21.0)
[warning] 233-233: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
[warning] 241-241: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@Prompts` proyecto final AI4DEVS/prompts_autenticacion.md around lines 225 -
255, La documentación contiene PII y credenciales reales (ej.: email
"tpv888@gmail.com", UUIDs "137a2ce9-82b7-4438-b05a-3116ace9e554", JWT beginning
"eyJhbGci...", refresh_token "mcaqultemlfk", IP "77.243.87.230" y bloques
"auth.users" JSON) — reemplaza todas esas ocurrencias por placeholders neutrales
(por ejemplo <user@example.com>, <uuid>, <redacted-token>, <ip>) en este archivo
y en cualquier otro fichero del commit; luego purga la historia git con una
herramienta como git filter-repo o BFG y force-pushea la rama; finalmente, si la
sesión/refresh_token no fue revocada, revoca "mcaqultemlfk" (y cualquier otra
sesión expuesta) desde el panel de Supabase para asegurarte de que las
credenciales ya no sean válidas.
|
|
||
| - Prefiero que los indicadores de 'lugares totales' y de 'medallas obtenidas' que se muestran en la vista del mapa aparezcan arriba, en vez de abajo. Creo que queda mejor justo debajo de los filtros por categoría. | ||
|
|
||
| ## Tu objetivo |
There was a problem hiding this comment.
Disambiguate duplicate headings.
markdownlint MD024 flags repeated headings. Consider renaming or adding a suffix to distinguish them.
🧰 Tools
🪛 LanguageTool
[grammar] ~245-~245: Cambia la palabra o signo.
Context: ...jo de los filtros por categoría. ## Tu objetivo Resuelve las cuestiones planteadas 1 a 1...
(QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_OTHER)
🪛 markdownlint-cli2 (0.21.0)
[warning] 245-245: Multiple headings with the same content
(MD024, no-duplicate-heading)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@Prompts` proyecto final AI4DEVS/prompts_mapa_medallas.md at line 245, There
are duplicate "## Tu objetivo" headings causing markdownlint MD024; locate every
heading instance titled "## Tu objetivo" in prompts_mapa_medallas.md and
disambiguate them by renaming or adding a concise suffix (e.g., "## Tu objetivo
— Parte 1" or "## Tu objetivo (Resumen)") so each heading is unique while
preserving meaning; update any internal references if present to match the new
heading text.
|
|
||
| Confirmo tu comprensión total del contexto de nuestro proyecto "Salmantour" y de lo que debes desarrollar en los Anexos que te he pedido. A continuación, te doy más indicaciones para tu redacción del `Anexo IV- Plan de seguridad.md` y te respondo a tus dudas sobre este. Todavía no te respondo a las dudas del Anexo III, ni te doy más indicaciones sobre ese porque ahora te debes centrar en el Anexo IV, te daré más contexto sobre el otro archivo más adelante. | ||
|
|
||
| ## Indidaciones del Anexo IV Plan de seguridad |
There was a problem hiding this comment.
Typo in section heading: Indidaciones → Indicaciones.
✏️ Proposed fix
-## Indidaciones del Anexo IV Plan de seguridad
+## Indicaciones del Anexo IV Plan de seguridad📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| ## Indidaciones del Anexo IV Plan de seguridad | |
| ## Indicaciones del Anexo IV Plan de seguridad |
🧰 Tools
🪛 LanguageTool
[grammar] ~152-~152: Cambia la palabra o signo.
Context: .... ## Indidaciones del Anexo IV Plan de seguridad - Has realizado una comprensión perfecta d...
(QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_OTHER)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@Prompts` proyecto final AI4DEVS/prompts_redaccion_anexos.md at line 152, Fix
the typo in the section heading text by changing "Indidaciones del Anexo IV Plan
de seguridad" to "Indicaciones del Anexo IV Plan de seguridad" so the heading
uses the correct word; update the heading string in the markdown where the
heading "Indidaciones del Anexo IV Plan de seguridad" appears.
| Excelente trabajo. Vamos a continuar con la revisión final del proyecto y poder concluir su entrega: | ||
|
|
||
| ## Tus tareas | ||
| - Revisa en profunidad el archivo `ARCHITECTURE.md`, que es uno de los archivos más importantes de documentación. Asegúrate de que todo lo que dice es correcto y que está actualizado. Además, debes mejorar la parte de 'Testing', que ahora es poco detallada y se podría integrar mejor, explicando las decisiones tomadas para los tests unitarios (algunas las explicas en `DEVELOPMENT.md`, pero es necesario que lo expliques en profundidad aquí también) |
There was a problem hiding this comment.
Typo in task description: profunidad → profundidad.
✏️ Proposed fix
-- Revisa en profunidad el archivo `ARCHITECTURE.md`
+- Revisa en profundidad el archivo `ARCHITECTURE.md`📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| - Revisa en profunidad el archivo `ARCHITECTURE.md`, que es uno de los archivos más importantes de documentación. Asegúrate de que todo lo que dice es correcto y que está actualizado. Además, debes mejorar la parte de 'Testing', que ahora es poco detallada y se podría integrar mejor, explicando las decisiones tomadas para los tests unitarios (algunas las explicas en `DEVELOPMENT.md`, pero es necesario que lo expliques en profundidad aquí también) | |
| - Revisa en profundidad el archivo `ARCHITECTURE.md`, que es uno de los archivos más importantes de documentación. Asegúrate de que todo lo que dice es correcto y que está actualizado. Además, debes mejorar la parte de 'Testing', que ahora es poco detallada y se podría integrar mejor, explicando las decisiones tomadas para los tests unitarios (algunas las explicas en `DEVELOPMENT.md`, pero es necesario que lo expliques en profundidad aquí también) |
🧰 Tools
🪛 LanguageTool
[grammar] ~307-~307: Corrige el error ortográfico.
Context: ... su entrega: ## Tus tareas - Revisa en profunidad el archivo ARCHITECTURE.md, que es un...
(QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_SPELLING)
[grammar] ~307-~307: Cambia la palabra o signo.
Context: ...o expliques en profundidad aquí también) - Tengo algunas dudas sobre `DEVELOPMENT.m...
(QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_OTHER)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@Prompts` proyecto final AI4DEVS/prompts_revision_tests.md at line 307, Fix
the spelling mistake in the prompt text: replace "profunidad" with "profundidad"
in the sentence that begins "Revisa en profunidad el archivo `ARCHITECTURE.md`"
within Prompts proyecto final AI4DEVS/prompts_revision_tests.md; search for any
other occurrences of "profunidad" in the file and correct them to "profundidad"
to keep the wording consistent.
| | Capa | Tecnologías | | ||
| |------|-------------| | ||
| | **Frontend** | React Native, Expo SDK 53, TypeScript, Expo Router, Zustand | | ||
| | **Backend** | Supabase (Auth + PostgreSQL + Storage), Row Level Security | | ||
| | **Servicios** | Google Maps API, expo-location, expo-camera, expo-image-manipulator | |
There was a problem hiding this comment.
Surround tables with blank lines.
Markdownlint MD058 requires blank lines before and after tables to render consistently across parsers.
Also applies to: 333-340, 342-349
🧰 Tools
🪛 LanguageTool
[grammar] ~25-~25: Cambia la palabra o signo.
Context: ...Tecnológico | Capa | Tecnologías | |------|-------------| | Frontend | React N...
(QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_PUNCTUATION)
[grammar] ~25-~25: Cambia la palabra o signo.
Context: ...Capa | Tecnologías | |------|-------------| | Frontend | React Native, Expo SD...
(QB_NEW_ES_OTHER_ERROR_IDS_REPLACEMENT_PUNCTUATION)
🪛 markdownlint-cli2 (0.21.0)
[warning] 24-24: Tables should be surrounded by blank lines
(MD058, blanks-around-tables)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@Prompts` proyecto final AI4DEVS/prompts_vista_friends.md around lines 24 -
28, Add a blank line before and after each Markdown table to satisfy MD058;
specifically, ensure the table that begins with the header "| Capa | Tecnologías
|" (and the other tables containing the rows shown later in the file) has an
empty line immediately above its first header row and an empty line immediately
after its last row so the tables render consistently across parsers.
| ``` | ||
| UI (Screens/Tabs) → Hooks → State (Zustand Stores) → Services → Supabase Client | ||
| ``` |
There was a problem hiding this comment.
Add language identifiers to fenced code blocks.
Several fenced blocks lack a language tag, which trips MD040. Add a language spec (e.g., sql, txt, ts, log) to each affected block.
Also applies to: 85-86, 138-142, 199-201, 206-208, 213-215, 241-246, 248-253, 352-360, 428-434, 572-599, 612-702
🧰 Tools
🪛 markdownlint-cli2 (0.21.0)
[warning] 31-31: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@Prompts` proyecto final AI4DEVS/prompts_vista_friends.md around lines 31 -
33, Several fenced code blocks in the Markdown are missing language identifiers
(e.g., the block containing "UI (Screens/Tabs) → Hooks → State (Zustand Stores)
→ Services → Supabase Client" and other blocks called out in the review). For
each triple-backtick block, add the appropriate language tag (for example `ts`,
`sql`, `txt`, or `log`) immediately after the opening ``` so markdown linters
(MD040) pass; pick the language that best matches the snippet content
(TypeScript for React/hooks/store code, SQL for queries, txt/log for plain
text). Search the file for all remaining unlabeled fenced blocks (including the
other blocks noted in the review) and update their opening fences to include the
correct language tag.
Descripción de la entrega
Esta Pull Request representa la entrega final del proyecto Salmantour, una aplicación móvil gamificada para el descubrimiento de lugares de interés en Salamanca, desarrollada con React Native + Expo SDK 53, TypeScript y Supabase como Backend as a Service, siguiendo una arquitectura por capas y metodología Scrumban a lo largo de 6 sprints de desarrollo + 1 sprint de auditoría y testing.
Funcionalidades principales del MVP
1. Registro y autenticación de usuarios
2. Mapa interactivo con geolocalización
3. Sistema de medallas por proximidad
user_medals).4. Cámara y captura fotográfica
expo-cameray detección de orientación mediante acelerómetro (expo-sensors).5. Progreso y galería de colección
6. Sistema social
7. Edición de perfil
8. Seguridad y control de acceso
SECURITY DEFINERpara bypass controlado de RLS (búsqueda de amigos).9. Arquitectura y calidad de código
frontend/+backend/).10. Testing y auditoría
Documentación
docs/: arquitectura, historias de usuario, seguridad, setup y despliegue.backend/docs/: modelo de datos, API de servicios, funciones RPC.docs/AI4DEVS/Prompts proyecto final AI4DEVS/.docs/AI4DEVS/Entrega final/.Stack tecnológico
Summary by CodeRabbit