As I prepared to leave, Marek handed me a small piece of paper with a note scrawled on it. "For the curious traveler," it read, "come back soon. Czechstreets 58 is always here, waiting for you."
Curiosity piqued, I pushed the door open and found myself in a narrow, dimly lit corridor. The air was thick with the scent of old books and wood polish. A soft hum of jazz music drifted from the floor above, beckoning me to explore further.
| Step | Description | |------|-------------| | | Let users bookmark street‑art pieces they like. | | User story | “As a visitor, I want to add a piece to my Favorites list so I can revisit it later.” | | Acceptance criteria | • “Add to Favorites” button appears on each piece detail page. • Clicking the button stores the item in the user’s profile. • Favorites list is displayed on a dedicated page. • Removing an item updates the list instantly. | | Technical design | • Front‑end: React component FavoriteButton and FavoritesPage . • Back‑end: POST /api/favorites and GET /api/favorites endpoints (Node/Express). • DB: favorites table linking user_id ↔ art_piece_id . • Middleware: authentication guard for the endpoints. | | Implementation | 1. Create DB migration. 2. Implement API routes & service layer. 3. Build UI components. 4. Wire up Redux/store or Context for state. 5. Write unit & integration tests. | | Testing | • Jest unit tests for service functions. • Supertest for API routes. • Cypress e2e test: add → view → remove favorite. | | Docs | Update API spec (OpenAPI), add UI screenshots to the README, note any new environment variables. | | Rollout | Deploy behind a feature flag; enable for beta users first. |