39 Commits
Author SHA1 Message Date
rmcampos 3cc6295226 Merge pull request 'chore(deps): update dependency typescript to v7' (#2) from renovate/typescript-7.x into main
Frontend CD / build (push) Successful in 5m15s
Reviewed-on: #2
Reviewed-by: Ricardo Campos <ricardompcampos@gmail.com>
2026-07-10 19:54:50 +00:00
rmcampos 4d75660de8 Merge branch 'main' into renovate/typescript-7.x 2026-07-10 21:54:12 +02:00
rmcampos 08a61569f4 chore: bump minor deps
Frontend CD / build (push) Successful in 5m31s
2026-07-10 21:47:21 +02:00
rmcampos 520e55563d chore: update docs and bump dependencies
Frontend CD / build (push) Successful in 5m21s
2026-06-25 10:02:27 -03:00
rmcampos 989ad65046 Update .github/workflows/deploy-frontend.yml 2026-06-18 16:09:24 +00:00
rmcampos 813a189745 feat: replace ghcr by docker and update workflows for gitea
Frontend CD / build (push) Successful in 3m30s
2026-06-18 17:05:51 +02:00
rmcampos 0055e1cf0d chore: bump dependencies 2026-06-18 16:46:59 +02:00
rmcampos 6c1213cb83 chore: cleanup files 2026-06-18 16:46:34 +02:00
rmcamposandGitHub 908dd155a0 fix: drop deploy flag from convex deploy 2026-06-03 18:01:01 -03:00
rmcamposandGitHub c368ffd5e8 fix: convex deploy yml file 2026-06-03 17:57:29 -03:00
rmcamposandGitHub bae16f0ef3 fix: frontend yml file workflow 2026-06-03 17:54:42 -03:00
rmcampos 5c7848276f fix: deploy backend to prod 2026-06-03 22:52:06 +02:00
rmcampos ede3ae957f feat: add doppler and taskfile for better usage and workflow 2026-06-03 22:41:15 +02:00
rmcampos b95ac5e07a feat: add option to see book cover bigger 2026-05-29 23:30:01 +02:00
rmcampos 36cead4630 feat: add hit with search options 2026-05-29 23:14:08 +02:00
rmcamposandGitHub 3778237f68 Update feature status in README.md to 'done' 2026-05-29 17:48:10 -03:00
rmcampos 26b106a37a feat: order books alphabetically in the backend 2026-05-29 15:43:31 -03:00
rmcampos 46bc53c5f0 chore: add logs for error debugging in prod 2026-05-29 20:07:58 +02:00
rmcampos 575a93b945 fix: select item error 2026-05-29 20:02:37 +02:00
rmcampos 1f1dc2e978 feat: add search options by language 2026-05-29 19:57:34 +02:00
rmcampos c729c9aecd fix: space between labels and input in the add a book form 2026-05-28 13:01:12 -03:00
rmcampos 46bc3082e5 feat: add dark mode option 2026-05-28 12:43:37 -03:00
rmcampos e0dddee270 feat: improve UI and prevent it from breaking 2026-05-28 12:24:25 -03:00
rmcampos 54c7ca3e50 fix: 500 error due to missing keys 2026-05-28 10:21:30 -03:00
rmcampos d9ac9eb37d fix: allowed hosts for vite preview 2026-05-28 15:05:28 +02:00
rmcampos 14cfa71429 fix: terraform handshake failing: 2026-05-28 14:45:35 +02:00
rmcampos 7383f7b697 feat: add prod flow, build and deploy 2026-05-27 18:47:26 -03:00
rmcamposandClaude Sonnet 4.6 9b7a2095c7 feat: implement spec 006 — cover image upload via Convex file storage
Users can upload a custom JPEG/PNG cover per book entry. The three-step
Convex upload flow (generateUploadUrl → POST → setCoverImage) stores the
file in Convex storage; old files are deleted on replace or remove.
Display falls back to the API cover URL then a placeholder.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-27 17:05:21 -03:00
rmcamposandClaude Sonnet 4.6 ebe1ea10a2 fix: use static text-amber-400 with opacity toggle for star rating
Dynamic class names in ternary expressions can be dropped by Tailwind v4's
scanner. Keeping text-amber-400 static and toggling opacity-100/opacity-20
guarantees the colour is always in the CSS bundle.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-27 16:56:26 -03:00
rmcamposandClaude Sonnet 4.6 f0c070a0fa feat: implement spec 005 — ratings and reviews
Adds star rating (1–5) and plain-text review to every book entry.
Both fields are optional and can be cleared; mutations validate ownership
and rating range server-side.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-27 16:36:09 -03:00
rmcampos d49ec5484f chore: commit missing generated file 2026-05-27 16:22:49 -03:00
rmcamposandClaude Sonnet 4.6 7b02c8803a feat: implement spec 004 — shelves
Add shelves table with by_user index. Convex functions: getMyShelves
query, createShelf/renameShelf/deleteShelf mutations (delete atomically
clears shelfId on all entries), assignToShelf mutation on bookEntries.

Frontend: ShelfSidebar with inline rename, filter bar (All + per-shelf),
and create form. BookEntryCard gains shelf assignment dropdown. WishlistPage
filters client-side by selectedShelfId.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-27 16:21:55 -03:00
rmcamposandClaude Sonnet 4.6 f803d6e604 feat: implement specs 002 and 003 — wishlist CRUD and book search
Spec 002: books + book_entries schema, getMyWishlist query, addBook/
removeBook/updateStatus mutations with auth scoping, WishlistPage +
AddBookForm + BookEntryCard components, live reactive UI.

Spec 003: searchBooks Convex action calling Google Books API, addBook
extended with googleBooksId deduplication, BookSearch + BookSearchResult
components, cursor-pointer on all buttons, search clears on empty input.

Also removes clerkMiddleware from src/start.ts (server-side session
refresh loop on expired tokens; auth is handled entirely client-side).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-27 16:12:21 -03:00
rmcampos 2758804cad feat: spec 002 completed 2026-05-27 15:12:28 -03:00
rmcamposandClaude Sonnet 4.6 20a5b165f0 feat: implement spec 001 — project scaffold
TanStack Start + Convex + Clerk + Tailwind + shadcn/ui wired up and
working. Auth flow (sign-in/sign-out/redirect) confirmed. Convex
getCurrentUser query validates the Clerk JWT integration end-to-end.

Key implementation notes:
- All Clerk imports use @clerk/react (v6), not @clerk/clerk-react (v5),
  to match @clerk/tanstack-react-start's internal dependency
- ConvexProviderWithClerk is SSR-guarded via import.meta.env.SSR to
  avoid useAuth being called server-side
- Convex + auth hooks isolated in a client-only Dashboard sub-component

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-23 17:40:55 -03:00
rmcampos f196c471c4 docs: add specs 2026-05-23 12:41:37 -03:00
rmcampos ad2484efe3 docs: add CLAUDE and update files - by Claude Code 2026-05-23 12:30:41 -03:00
rmcampos 5a0c3e71a4 docs: add ai context files 2026-05-23 11:44:20 -03:00
rmcamposandGitHub f4e40c596a Initial commit 2026-05-23 11:03:23 -03:00