Giter VIP home page Giter VIP logo

hafiz1379 / js-capstone-project Goto Github PK

View Code? Open in Web Editor NEW
11.0 1.0 1.0 1.52 MB

Our project is a web app that fetches data from an API, displaying items and allowing users to like, comment, and reserve them. It consists of a home page, comments popup, and popup. We use the Involvement API to record interactions and Jest for unit testing. The app is set up on GitHub using Gitflow, webpack, and follows the provided layout.

License: MIT License

JavaScript 77.49% HTML 3.80% CSS 18.71%
api css html javascript jest webpack

js-capstone-project's Introduction

JS Capstone Project

๐Ÿ“— Table of Contents

๐Ÿ“– JS Capstone Project

JS Capstone Project In this group project we have created a website where customers can view movies, make comments and book the movies that are in stock. Functions: Add comments | Add reservations The project is built with ES6 Js [Front-End].

For a quick demonstration and explenation of how out code works you can check this video

๐Ÿ›  Built With

Tech Stack

  • [HTML]
  • [CSS]
  • [JavaScript]
  • [API]
Client
Server
Database

Key Features

  • [Add Comments]
  • [Add Reservations]

(back to top)

๐Ÿš€ Live Demo

Open the live-demo of the project Project Link

๐Ÿ’ป Getting Started

Getting Started

To get a local copy of this exercice, Please follow these simple example steps.

  1. Clone this repository or download the Zip folder:

https://github.com/hafiz1379/JS-capstone-project.git

  1. Navigate to the location of the folder in your machine:

C:\Users\PATH\src\JS-capstone-project>

  1. Press Enter to navigate to your local clone.
  2. Open terminal and run this command npm install
  3. after finishing step 5, run this command npm start to run the project
  4. for testing components, you can run: npm run test.

Now you can go and play with it as you wish ๐Ÿ˜„

Prerequisites

  • IDE (code editor) like: VScode, Sublime, etc
  • Git

Setup

  1. Download the Zip file or clone the repo with:
git clone https://github.com/hafiz1379/JS-capstone-project.git
  1. To access cloned directory run:
cd JS-capstone-project

Install

To install linters and other project's dependencies run:

npm install

Usage

To run the project, execute the following command:

  • Excute below command in the terminal to serve live
npm run start

Run Test for Linters

For tracking linter errors locally you need to follow these steps:

  1. For tracking linter errors in HTML files run:
npx hint .
  1. For tracking linter errors in CSS or SASS files run:
npx stylelint "\*_/_.{css,scss}"
  1. For tracking linter errors in JavaScript files run:
npx eslint .

Deployment

You can deploy this project using:

  • Github Pages

๐Ÿ‘ฅ Authors

hafiz1379

tomasesquivelgc

๐Ÿ‘ค mdg0410

(back to top)

๐Ÿ”ญ Future Features

  • [Add search function]

(back to top)

๐Ÿค Contributing

Contributions, issues, and feature requests are welcome!

Feel free to check the issues page

โญ๏ธ Show your support

If you like this project, kindly follow me on GitHub ๐Ÿ˜Š

(back to top)

Acknowledgments

This project has been created in reference to the template created by

๐Ÿ“ License

This project is MIT licensed.

js-capstone-project's People

Contributors

hafiz1379 avatar tomasesquivelgc avatar mdg0410 avatar

Stargazers

 avatar Abel Lavieri avatar Ghulam Reza Rajabi avatar steven wafeek avatar  avatar Benson Kiai avatar Javier Aybar avatar Ismael Mastronardi avatar Bruno Kambere avatar  avatar Mahram Hossain Nazary avatar

Watchers

 avatar

Forkers

tomasesquivelgc

js-capstone-project's Issues

[4pt] - Display list of items on the Homepage - Student A

Create the main part of the homepage that keeps the layout from the wireframe:

Screenshot 2021-06-27 at 21 50 23

When the page loads, the webapp retrieves data from the selected API and shows the list of items on screen with the basic data (e.g. title + image).

Prepare also "Comments" and "Reservations" buttons. They should be doing nothing - just being displayed.

This task does not include displaying the number of likes for each item.

This task does not include the counter of the items.

[3pt] - Add all items counter on the Homepage - Student A

Even if the API gives you the number of items, you will create a specific function to calculate it.

Make sure that the correct number is displayed on the Homepage.

Respect the following rules:

  • Each counter should be implemented as a separate module.
  • A counter function should look for specific DOM elements (e.g. for the comments counter it should look for comments) and make the counting based on what is actually displayed on the page.
  • A counter function should cover all the edge cases you can think about.

[4pt] - Display Reservations pop up with selected item's details - Student C

Create a reservations popup only with the top section (displaying details of the selected item)

Screenshot 2021-06-27 at 22 10 45

When the popup loads, the webapp retrieves data from the selected API and shows details about the selected item.

Add event to button prepared by your teammate that will open your popup. You need to communicate with your team member to make sure that you do not block each other (most likely the easiest solution is to merge the list of items feature to the dev branch before you try to add that event).

[3pt] - Add comments counter - Student B

Even if the API gives you the number of comments you will create a specific function to calculate it.

Make sure that the correct number is displayed on the Comments pop up.

Respect the following rules:

  • Each counter should be implemented as a separate module.
  • A counter function should look for specific DOM elements (e.g. for the comments counter it should look for comments) and make the counting based on what is actually displayed on the page.
  • A counter function should cover all the edge cases you can think about.

Peer-to-peer code review

const fetchMovieData = async (showId) => {
const response = await fetch(`${apiUrl}/${showId}`);
const data = await response.json();
return {
name: data.name,
image: data.image.medium,
summary: data.summary,
genres: data.genres,
id: data.id,
showStatus: data.status,
premiered: data.premiered,
};
};
const fetchLikesData = async (showId) => {
const response = await fetch(`${likesApiUrl}?item_id=${showId}`);
const data = await response.json();
// eslint-disable-next-line camelcase
const res = data.find(({ item_id }) => item_id === showId);
return res ? res.likes : 0;
};

  • It would be better to pass the other functions into modules as you did with the other functions.
  • Also you should avoid users like a movie a lot of times.
  • In the comments section, it would be better if you block the comment button, until it has both inputs filled, this to avoid fetching with out new information.

First review

This is the setup of our work

You can find the GitHub project (here)[https://github.com/hafiz1379/JS-capstone-project/projects/3]

There are 3 people in this group.

[3pt] - Add reservations counter - Student C

Even if the API gives you the number of reservations you will create a specific function to calculate it.

Make sure that the correct number is displayed on the Reservations pop up.

Respect the following rules:

  • Each counter should be implemented as a separate module.
  • A counter function should look for specific DOM elements (e.g. for the comments counter it should look for comments) and make the counting based on what is actually displayed on the page.
  • A counter function should cover all the edge cases you can think about.

[0.5pt] Find external API - group task

Find an API to base the development of the webapp around it. The API should allow you to

  • Get a list of items with a unique item id (or generate the unique id).
  • For a given item, get detailed information about it.
    choose an APIs that doesn't need authentication. if you select an API that requires authentication, you should implement it on your own. Also, if you select an API that provides image resources your webapp will be more visual.

[4pt] -Display Comments pop up with selected item's details - Student B

Create a comments popup only with the top section (displaying details of the selected item)

Screenshot 2021-06-27 at 22 10 45

When the popup loads, the webapp retrieves data from the selected API and shows details about the selected item.

Add event to button prepared by your teammate that will open your popup. You need to communicate with your team member to make sure that you do not block each other (most likely the easiest solution is to merge the list of items feature to the dev branch before you try to add that event).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.