Skip to content

Instantly share code, notes, and snippets.

@Iseluin
Created July 14, 2023 11:37
Show Gist options
  • Save Iseluin/51ea7ac95416ccb1c56b414ecddbb7a1 to your computer and use it in GitHub Desktop.
Save Iseluin/51ea7ac95416ccb1c56b414ecddbb7a1 to your computer and use it in GitHub Desktop.

Project Instructions

Overview

In this project, you will be building a podcast website using Next.js. The website will allow users to view, create, update, and delete podcasts without the need for any backend. You will use the provided JSON file as the data source for the podcasts.

Task

Your task is to create a podcast site where users can browse a list of podcasts, add new podcasts, edit existing podcasts, and delete podcasts, all from the user interface.

Requirements

  1. Use Next.js to create a new project and set up the necessary files and folders.
  2. Use React components to build the different sections of the web page.
  3. Apply CSS styles using Next.js's built-in CSS modules or CSS-in-JS libraries.
  4. Use the provided JSON file as the data source for the podcasts.
  5. Implement functionality to view the list of podcasts, add new podcasts, edit existing podcasts, and delete podcasts.
  6. Ensure that the page is responsive and displays correctly on different screen sizes.
  7. You dont need to store the data on a backend service like firebase.

Steps to Follow

  1. Clone the initialized project from the GitHub repository provided to you.
  2. Analyze the provided JSON file ("podcasts.json") within the project to understand the structure and properties of the podcasts.
  3. Set up a new Next.js project using the appropriate commands.
  4. Be sure to use the app-router in Next.js so that the user can see the URL change when they navigate through your site.
  5. Create React components to represent the different sections of the web page, including the podcast list, add/edit podcast forms, and any other necessary components.
  6. Use CSS modules or CSS-in-JS libraries to style the components and achieve a visually appealing design.
  7. Fetch the podcast data from the JSON file and display it on the podcast list page.
  8. Implement functionality to add new podcasts by creating a form that allows users to input the necessary details.
  9. Implement functionality to edit existing podcasts by creating a form that pre-fills the fields with the podcast's current data and allows users to update the details.
  10. Implement functionality to delete podcasts by adding a button or action that removes the podcast from the list.
  11. Test your web page in different devices to ensure responsiveness.
  12. Fine-tune the design and functionality as needed.
  13. Once you're satisfied with your work, push your final code to the GitHub repository along with the JSON file ("podcasts.json") containing the podcast data.

Resources

Project Repository

The project repository can be found on GitHub: [link-to-github-repo]

Figma Design

The design guidelines can be found in this Figma file. Please refer to the design for guidance on the visual style and layout.

JSON Mock Data

The JSON file containing the mock data for the podcasts ("podcasts.json") will be provided inside the project. It should include information for the different podcasts, such as their titles, descriptions, image URLs, audio URLs, and any additional nested fields.

Submission

  • Push your final code to the GitHub repository along with the "podcasts.json" file containing the podcast data.
  • Provide the link to your GitHub repository as the submission.

Deadline

The project is due on [deadline date]. Make sure to manage your time effectively to complete the project on time.

Grading Criteria

You will be evaluated based on the following:

  • Accuracy in implementing the required functionality.
  • Code organization and cleanliness.
  • Properly working routing.
  • Proper use of Next.js and React.
  • Responsive design.

Good luck, and have fun working on this project!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment