Full-stack bookmark manager using React 19, TS, Vite, Express & Prisma

Solution retrospective
I'm proud that this went beyond the static data.json starter and became a full-stack app: a React 19 + TypeScript + Vite frontend backed by an Express + Prisma + PostgreSQL (Neon) API with real JWT authentication (signup, login, forgot-password and reset-password flows), so bookmarks and pinned/archived state actually persist per user instead of resetting on reload. Styling is done with CSS Modules using a parameterized design-tokens file for colors, gradients and typography, and I covered core logic and components with Vitest. Next time I'd add optimistic UI updates for archive/pin actions and automatic favicon fetching when a bookmark URL is added.
What challenges did you encounter, and how did you overcome them?The biggest challenge was wiring up real authentication end-to-end (signup, login, forgot-password, reset-password) with JWTs against a Prisma/PostgreSQL backend on Neon, including secure token handling and protecting the bookmarks API per user. I also had to design a data model that supports pin/archive/search/multi-tag filtering and sort-by-recency-or-visits without over-fetching. I overcame these by isolating auth into its own Express router/middleware, using Prisma migrations to iterate on the schema safely, and writing Vitest tests around the trickier state logic (filtering, sorting, archiving) to catch regressions early.
What specific areas of your project would you like help with?I'd love feedback on the JWT auth flow (token storage/refresh approach) from a security standpoint, and on whether the responsive layout and interaction patterns (tag filtering, sorting, archive/pin) hold up well across mobile, tablet, and desktop. General accessibility feedback is also very welcome.
Please log in to post a comment
Log in with GitHubCommunity feedback
No feedback yet. Be the first to give feedback on Gustavo Sanchez’s solution.
Join our Discord community
Join thousands of Frontend Mentor community members taking the challenges, sharing resources, helping each other, and chatting about all things front-end!
Join our Discord