Skip to content
Submitted 12 days ago

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

react, typescript, vite, express, prisma
P
LVL 4
@gusanchefullstack
A solution to the Bookmark manager app challenge

Solution retrospective


What are you most proud of, and what would you do differently next time?

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.

Code
Loading...

Please log in to post a comment

Log in

Community 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