Skip to content

Conversation

@fdematos
Copy link
Contributor

Summary

  • Add ROTI (Return On Time Invested) feedback application for meetup participants
  • SQLite persistence with better-sqlite3 for storing ratings
  • Validation: comment required for ratings of 3 or below
  • Modern UI with Tailwind CSS (blue/violet theme), mobile-friendly
  • 10 unit tests for validation logic

Features

  • Rate talks from 1 to 5
  • Optional/required comment based on rating
  • Real-time average rating display with progress bar
  • Recent feedback list with color-coded ratings

Technical Stack

  • Backend: Express + better-sqlite3
  • Frontend: React + Vite + Tailwind CSS
  • Testing: Vitest (10 tests passing)

- Add SQLite persistence with better-sqlite3
- Create feedback API endpoints (GET/POST /api/feedbacks)
- Add validation: comment required for ratings <= 3
- Build React frontend with Tailwind CSS
- Add FeedbackForm, FeedbackList, AverageRating components
- Include 10 unit tests for validation logic
@opencode-agent
Copy link

APIError:

opencode session  |  github run

- Use actions/checkout@v6 with persist-credentials: false
- Simplify permissions (id-token: write only for app-based auth)
- Align with https://opencode.ai/docs/github/
@opencode-agent
Copy link

APIError:

opencode session  |  github run

@opencode-agent
Copy link

ProviderModelNotFoundError

opencode session  |  github run

- Add GOOGLE_API_KEY env var for Gemini model
- Use GITHUB_TOKEN instead of app-based auth
- Add all required permissions for GITHUB_TOKEN mode
@github-actions
Copy link

ProviderModelNotFoundError

opencode session  |  github run

@github-actions
Copy link

I have reviewed the pull request and identified a critical bug related to production deployment, along with several improvements for code quality and consistency.

🔴 Critical Bug

  • Production Deployment Failure: The Dockerfile does not create or copy the apps/backend/data directory. In apps/backend/src/db.ts, the database is initialized at ../data/roti.db. Since better-sqlite3 does not automatically create parent directories, the application will fail to start in the production environment.
    • Suggestion: Update the Dockerfile to create the data directory or modify db.ts to ensure the directory exists at runtime.

🟡 Code Quality & Persistence

  • Database Persistence: The SQLite database file apps/backend/data/roti.db is currently tracked by Git.
    • Suggestion: Add *.db to your .gitignore to prevent committing local development data and potential merge conflicts.
  • Import Ordering: Several files (e.g., apps/backend/src/index.ts, apps/backend/src/db.ts) do not follow the project's import ordering guidelines (Built-ins > External > Internal).
    • Example: In db.ts, path and url (built-ins) should come before better-sqlite3 (external).
  • Error Handling: The backend routes in apps/backend/src/routes/feedbacks.ts lack try...catch blocks. While better-sqlite3 is synchronous, unexpected database issues (e.g., disk full, permission issues) could crash the server process.

🟢 Suggestions & Improvements

  • UI/UX (Timestamping): FeedbackList.tsx currently only shows the time (toLocaleTimeString). If the feedback persists over multiple days, users won't know which day it belongs to.
    • Suggestion: Use a more descriptive date format or conditionally show the date if it's not from today.
  • Validation: The validation logic in db.ts and its accompanying tests are well-implemented and correctly enforce the "comment required for ratings ≤ 3" rule.
  • Consistency: The use of .js extensions in TypeScript imports is correctly applied for ES Modules.

Overall, the feature is well-structured and follows the project's tech stack, but the Docker configuration and database tracking need to be addressed before merging.

New%20session%20-%202026-01-28T15%3A40%3A32.134Z
opencode session  |  github run

@fdematos fdematos closed this Jan 28, 2026
@fdematos fdematos deleted the feat/roti-feedback branch January 28, 2026 15:51
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.

2 participants