{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":775563659,"defaultBranch":"master","name":"Bytegrad_Professional-React-and-NextJS-Course","ownerLogin":"libertycoverage","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2024-03-21T16:11:34.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/5951210?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1720083423.0","currentOid":""},"activityList":{"items":[{"before":null,"after":"25ee5575d35fee2b507b938630f5527eb80e274d","ref":"refs/heads/evento-before-Zod","pushedAt":"2024-07-04T08:57:03.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"libertycoverage","name":"Michal M. Nadolny","path":"/libertycoverage","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5951210?s=80&v=4"},"commit":{"message":"Advanced: Key prop for - Retrigger the Suspense component with fallback loading when searchParams (/all?page=2) change (evento) V247","shortMessageHtmlLink":"Advanced: Key prop for <Suspense> - Retrigger the Suspense component …"}},{"before":"94150de5aaf17fdb2ed7d35766fd1d216cef5c5e","after":"fdc63635193d13b6011d9d9efb95f0fb0c0951d7","ref":"refs/heads/master","pushedAt":"2024-07-03T18:36:11.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"libertycoverage","name":"Michal M. Nadolny","path":"/libertycoverage","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5951210?s=80&v=4"},"commit":{"message":"Middleware (use cases, redirecting), use middleware in Next.js to redirect users to the /events/all page if they try to access /events page directly (evento) V249","shortMessageHtmlLink":"Middleware (use cases, redirecting), use middleware in Next.js to red…"}},{"before":"25ee5575d35fee2b507b938630f5527eb80e274d","after":"94150de5aaf17fdb2ed7d35766fd1d216cef5c5e","ref":"refs/heads/master","pushedAt":"2024-07-02T17:45:48.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"libertycoverage","name":"Michal M. Nadolny","path":"/libertycoverage","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5951210?s=80&v=4"},"commit":{"message":"Zod validation for incoming data, error.tsx page (file) (evento) V248","shortMessageHtmlLink":"Zod validation for incoming data, error.tsx page (file) (evento) V248"}},{"before":"0a3b4f1bd053b3001a641cb3c658a74b3624559e","after":"25ee5575d35fee2b507b938630f5527eb80e274d","ref":"refs/heads/master","pushedAt":"2024-06-26T14:58:45.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"libertycoverage","name":"Michal M. Nadolny","path":"/libertycoverage","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5951210?s=80&v=4"},"commit":{"message":"Advanced: Key prop for - Retrigger the Suspense component with fallback loading when searchParams (/all?page=2) change (evento) V247","shortMessageHtmlLink":"Advanced: Key prop for <Suspense> - Retrigger the Suspense component …"}},{"before":"8a5def7ca29c12378119bf56c11f13177a3ba25f","after":"0a3b4f1bd053b3001a641cb3c658a74b3624559e","ref":"refs/heads/master","pushedAt":"2024-06-24T21:00:26.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"libertycoverage","name":"Michal M. Nadolny","path":"/libertycoverage","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5951210?s=80&v=4"},"commit":{"message":"Server-side pagination in Next.js for EventsList (using Prisma, Radix UI) (evento) V246","shortMessageHtmlLink":"Server-side pagination in Next.js for EventsList (using Prisma, Radix…"}},{"before":"c424d70a2bcff63ad88c793b9b80c914c599fb67","after":"8a5def7ca29c12378119bf56c11f13177a3ba25f","ref":"refs/heads/master","pushedAt":"2024-06-21T18:55:43.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"libertycoverage","name":"Michal M. Nadolny","path":"/libertycoverage","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5951210?s=80&v=4"},"commit":{"message":"NotFound() function in Next.js for event page (Not Found page) (evento) V245","shortMessageHtmlLink":"NotFound() function in Next.js for event page (Not Found page) (event…"}},{"before":"cb7943c4a6c77ab3ca92a74482eb62ffba7b886d","after":"c424d70a2bcff63ad88c793b9b80c914c599fb67","ref":"refs/heads/master","pushedAt":"2024-06-21T16:43:20.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"libertycoverage","name":"Michal M. Nadolny","path":"/libertycoverage","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5951210?s=80&v=4"},"commit":{"message":"Sort events by date (Prisma sorting) (evento) V244","shortMessageHtmlLink":"Sort events by date (Prisma sorting) (evento) V244"}},{"before":"2a1b431e157d4b03b50a693f43d83115479aff01","after":"cb7943c4a6c77ab3ca92a74482eb62ffba7b886d","ref":"refs/heads/master","pushedAt":"2024-06-21T15:16:54.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"libertycoverage","name":"Michal M. Nadolny","path":"/libertycoverage","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5951210?s=80&v=4"},"commit":{"message":"Replace Fetch API with Prisma Client in data fetching utilities (evento) V243","shortMessageHtmlLink":"Replace Fetch API with Prisma Client in data fetching utilities (even…"}},{"before":"5be4ef66934924fb45fbe7365d9f8806cacae6dc","after":"2a1b431e157d4b03b50a693f43d83115479aff01","ref":"refs/heads/master","pushedAt":"2024-06-20T15:06:06.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"libertycoverage","name":"Michal M. Nadolny","path":"/libertycoverage","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5951210?s=80&v=4"},"commit":{"message":"Setup local PostgreSQL / SQLite with Prisma ORM (+ city field fix in database + error width id, extra solution) (evento) V242","shortMessageHtmlLink":"Setup local PostgreSQL / SQLite with Prisma ORM (+ city field fix in …"}},{"before":"462bada288d3c0cc8f8686359399f2fc8d45d684","after":"5be4ef66934924fb45fbe7365d9f8806cacae6dc","ref":"refs/heads/master","pushedAt":"2024-06-18T19:40:36.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"libertycoverage","name":"Michal M. Nadolny","path":"/libertycoverage","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5951210?s=80&v=4"},"commit":{"message":"Setup local PostgreSQL / SQLite with Prisma ORM (evento) V242","shortMessageHtmlLink":"Setup local PostgreSQL / SQLite with Prisma ORM (evento) V242"}},{"before":"b8a66499ec887da7cae4b37c645836118294013b","after":"462bada288d3c0cc8f8686359399f2fc8d45d684","ref":"refs/heads/master","pushedAt":"2024-06-14T20:52:45.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"libertycoverage","name":"Michal M. Nadolny","path":"/libertycoverage","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5951210?s=80&v=4"},"commit":{"message":"EventCard scroll-based animation with Framer Motion (for the event cards)(evento) V241","shortMessageHtmlLink":"EventCard scroll-based animation with Framer Motion (for the event ca…"}},{"before":"7f7f657c9f389aad51f51d27421f80d39e320395","after":"b8a66499ec887da7cae4b37c645836118294013b","ref":"refs/heads/master","pushedAt":"2024-06-13T13:55:21.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"libertycoverage","name":"Michal M. Nadolny","path":"/libertycoverage","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5951210?s=80&v=4"},"commit":{"message":"Create data fetching utilities to keep the code DRY (evento); getEvent(), getEvents() fetching functions V240","shortMessageHtmlLink":"Create data fetching utilities to keep the code DRY (evento); getEven…"}},{"before":"aaef474bde0c7b54fa754c94a17f459fc6a1317f","after":"7f7f657c9f389aad51f51d27421f80d39e320395","ref":"refs/heads/master","pushedAt":"2024-06-12T16:49:12.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"libertycoverage","name":"Michal M. Nadolny","path":"/libertycoverage","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5951210?s=80&v=4"},"commit":{"message":"Built-in fetch memoization in React & Next.js (evento) V239","shortMessageHtmlLink":"Built-in fetch memoization in React & Next.js (evento) V239"}},{"before":"a9f92268d1c762d9a8a9c16ee3e7db16e9c7c596","after":"aaef474bde0c7b54fa754c94a17f459fc6a1317f","ref":"refs/heads/master","pushedAt":"2024-06-12T11:58:45.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"libertycoverage","name":"Michal M. Nadolny","path":"/libertycoverage","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5951210?s=80&v=4"},"commit":{"message":"Display the event name as the title of the page using the generateMetadata function; capitalize function (evento) V238","shortMessageHtmlLink":"Display the event name as the title of the page using the generateMet…"}},{"before":"d54c1f49ec50ba34f3a5462daf86f0d2a4487402","after":"a9f92268d1c762d9a8a9c16ee3e7db16e9c7c596","ref":"refs/heads/master","pushedAt":"2024-06-10T12:32:08.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"libertycoverage","name":"Michal M. Nadolny","path":"/libertycoverage","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5951210?s=80&v=4"},"commit":{"message":"Data Cache (server-side) and revalidate options in Next.js, Fetch example (evento) V237","shortMessageHtmlLink":"Data Cache (server-side) and revalidate options in Next.js, Fetch exa…"}},{"before":"e926768ee6ca7f2dd8992eddb725f8d3242e0d0a","after":"d54c1f49ec50ba34f3a5462daf86f0d2a4487402","ref":"refs/heads/master","pushedAt":"2024-06-08T17:19:47.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"libertycoverage","name":"Michal M. Nadolny","path":"/libertycoverage","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5951210?s=80&v=4"},"commit":{"message":"Advanced pattern for data fetching in Next.js: Data fetching wrapper component for EventsList (in order to keep the reusability of EventsList) (evento) V236","shortMessageHtmlLink":"Advanced pattern for data fetching in Next.js: Data fetching wrapper …"}},{"before":"a461bd5e113829475a43b1761e9311f59088ac48","after":"e926768ee6ca7f2dd8992eddb725f8d3242e0d0a","ref":"refs/heads/master","pushedAt":"2024-06-07T23:58:54.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"libertycoverage","name":"Michal M. Nadolny","path":"/libertycoverage","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5951210?s=80&v=4"},"commit":{"message":"EventsList Suspense & Streaming (part of the website, Loading() [loading.tsx] component on fallback) (Advanced pattern for data fetching), fetch data in a component and wrap it in Suspense (evento) V235","shortMessageHtmlLink":"EventsList Suspense & Streaming (part of the website, Loading() [load…"}},{"before":"a34a3cc77460f05fed4da23022fb2e99fc719d3d","after":"a461bd5e113829475a43b1761e9311f59088ac48","ref":"refs/heads/master","pushedAt":"2024-06-05T13:10:42.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"libertycoverage","name":"Michal M. Nadolny","path":"/libertycoverage","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5951210?s=80&v=4"},"commit":{"message":"Suspense & Streaming in Next.js (loading.tsx), how the loading.tsx file works with Suspense (evento) V234","shortMessageHtmlLink":"Suspense & Streaming in Next.js (loading.tsx), how the loading.tsx fi…"}},{"before":"1ca506254baeceb8148f794cf29749281e711135","after":"a34a3cc77460f05fed4da23022fb2e99fc719d3d","ref":"refs/heads/master","pushedAt":"2024-06-05T12:43:20.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"libertycoverage","name":"Michal M. Nadolny","path":"/libertycoverage","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5951210?s=80&v=4"},"commit":{"message":"SkeletonCard component for the events page while loading, mapping over array of SkeletonCards (evento) V233","shortMessageHtmlLink":"SkeletonCard component for the events page while loading, mapping ove…"}},{"before":"e05dd651a712cb7c5ef1207ffd0c7708410739a3","after":"1ca506254baeceb8148f794cf29749281e711135","ref":"refs/heads/master","pushedAt":"2024-06-03T19:18:51.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"libertycoverage","name":"Michal M. Nadolny","path":"/libertycoverage","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5951210?s=80&v=4"},"commit":{"message":"Skeleton component (Tailwind CSS, Cn() utility function) to show while loading (/event/[slug/]/loading.tsx) (evento) V232","shortMessageHtmlLink":"Skeleton component (Tailwind CSS, Cn() utility function) to show whil…"}},{"before":"7101153ef60f7556c630e3b458d33acc52627fe8","after":"e05dd651a712cb7c5ef1207ffd0c7708410739a3","ref":"refs/heads/master","pushedAt":"2024-06-03T14:27:50.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"libertycoverage","name":"Michal M. Nadolny","path":"/libertycoverage","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5951210?s=80&v=4"},"commit":{"message":"Client-side cache in Next.js (Router Cache) and Loading.tsx, despite the cache, the Loading React component (loading indicator) is still needed (evento) V231","shortMessageHtmlLink":"Client-side cache in Next.js (Router Cache) and Loading.tsx, despite …"}},{"before":"67223c73c5eb77f06fdfb20eb740cb8fa38ea3ba","after":"7101153ef60f7556c630e3b458d33acc52627fe8","ref":"refs/heads/master","pushedAt":"2024-06-03T12:53:48.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"libertycoverage","name":"Michal M. Nadolny","path":"/libertycoverage","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5951210?s=80&v=4"},"commit":{"message":"Client-side cache in Next.js (Router Cache), sleeper function to emphasize the normally observed delay (evento) V230","shortMessageHtmlLink":"Client-side cache in Next.js (Router Cache), sleeper function to emph…"}},{"before":"b9bfe998bde4c3b6787f7af91d1f3db2e2d79f2b","after":"67223c73c5eb77f06fdfb20eb740cb8fa38ea3ba","ref":"refs/heads/master","pushedAt":"2024-06-01T17:09:50.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"libertycoverage","name":"Michal M. Nadolny","path":"/libertycoverage","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5951210?s=80&v=4"},"commit":{"message":"Fix Image Next.js component (object-fit vs object-cover CSS className) (evento) V229","shortMessageHtmlLink":"Fix Image Next.js component (object-fit vs object-cover CSS className…"}},{"before":"ce769f63e8714e6e054f4454a19406b00a28505d","after":"b9bfe998bde4c3b6787f7af91d1f3db2e2d79f2b","ref":"refs/heads/master","pushedAt":"2024-06-01T16:12:23.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"libertycoverage","name":"Michal M. Nadolny","path":"/libertycoverage","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5951210?s=80&v=4"},"commit":{"message":"Finish the event page and learn some Tailwind CSS and React {children} pattern to abstract logic away into separate components (evento) V228","shortMessageHtmlLink":"Finish the event page and learn some Tailwind CSS and React {children…"}},{"before":"aa03b429e59fa0fc6bf1e5f631b175939a407fb7","after":"ce769f63e8714e6e054f4454a19406b00a28505d","ref":"refs/heads/master","pushedAt":"2024-05-30T17:13:27.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"libertycoverage","name":"Michal M. Nadolny","path":"/libertycoverage","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5951210?s=80&v=4"},"commit":{"message":"Extract the hover effect to a reusable class with the Tailwind CSS @apply rule (Trick to centralize Tailwind CSS classes shared by components) (evento) V227","shortMessageHtmlLink":"Extract the hover effect to a reusable class with the Tailwind CSS @a…"}},{"before":"ca7dc93cc71f01abed2c4326f5555aed98c67689","after":"aa03b429e59fa0fc6bf1e5f631b175939a407fb7","ref":"refs/heads/master","pushedAt":"2024-05-30T15:01:51.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"libertycoverage","name":"Michal M. Nadolny","path":"/libertycoverage","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5951210?s=80&v=4"},"commit":{"message":"Finish the intro section of the event page; Styling of
, component,
,