{"id":26817298,"url":"https://github.com/willandskill/react-hackathon","last_synced_at":"2025-03-30T04:15:57.655Z","repository":{"id":40919593,"uuid":"224485617","full_name":"willandskill/react-hackathon","owner":"willandskill","description":null,"archived":false,"fork":false,"pushed_at":"2023-01-05T01:50:05.000Z","size":1239,"stargazers_count":0,"open_issues_count":15,"forks_count":2,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-12-19T03:34:05.711Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/willandskill.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-11-27T17:41:36.000Z","updated_at":"2019-11-28T10:27:03.000Z","dependencies_parsed_at":"2023-02-03T04:46:19.843Z","dependency_job_id":null,"html_url":"https://github.com/willandskill/react-hackathon","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/willandskill%2Freact-hackathon","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/willandskill%2Freact-hackathon/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/willandskill%2Freact-hackathon/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/willandskill%2Freact-hackathon/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/willandskill","download_url":"https://codeload.github.com/willandskill/react-hackathon/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246273551,"owners_count":20750906,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-03-30T04:15:57.228Z","updated_at":"2025-03-30T04:15:57.642Z","avatar_url":"https://github.com/willandskill.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Will \u0026 Skill - React Hackathon\n​\n## The Challenge:\n​\n---\n\n**Build a simple e-commerce solution in under 2.5 hours.**\n\n**Required Views:**\n\n- Product List View\n- Product Detail View\n- Cart View\n\n\n**Required features:**\n\n- Display all products in the Product List view (Display at least: Product name, a short description, price, one image)\n- Display all product details on the Product Detail View\n- If the product has any reviews, display them on the Product Detail View\n- Add to cart button\n- Persistans cart (The items in the cart should not change on refresh)\n- Checkout View should contain: List of all products in cart, total order value, abillity to place order together with name\n​\n## The API\n​\n---\n​\nWe have created a very simple API with Firebase. All endpoints must end with `\".json\"`\n​\n- baseURL = https://was-react-hackathon-fall-2019.firebaseio.com\n- productList = `/products.json`\n- productDetail = `/products/{productId}.json`\n- productReviews = `/reviews/{productId}.json`\n- couponCodes = `/couponCodes/{couponCodes}.json`\n​\n## Data Types\n​\n---\n​\n#### Product\n​\nThis is an axample of how a product object looks like in the API.\n​\n```\nEndpoint Route: /products/{productId}.json\n```\n​\nJSON Example:\n​\n```json\n{\n  \"id\": 1234,\n  \"name\": \"Example Product\",\n  \"description\": \"Lorem ipsum mit dolor\",\n  \"images\": [\n    {\n      \"alt\": \"product photo 1\",\n      \"src\": {\n        \"large\": \"https://placekitten.com/200/300\",\n        \"medium\": \"https://placekitten.com/400/600\",\n        \"small\": \"https://placekitten.com/1000/1500\"\n      }\n    },\n    {\n      \"alt\": \"product photo 2\",\n      \"src\": {\n        \"large\": \"https://placekitten.com/201/300\",\n        \"medium\": \"https://placekitten.com/402/600\",\n        \"small\": \"https://placekitten.com/1005/1500\"\n      }\n    }\n  ],\n  \"price\": 125,\n  \"rating\": 4,\n  \"stock\": 23\n}\n```\n​\n#### Product Review\n​\nSome products have been reviewed by previous customers, these should be displayed on the product detail view. Remember that not all products have reviews... so this should also be handled.\n​\n```\nEndpoint Route: /reviews/{productId}.json\n```\n​\nJSON Example:\n​\n```json\n{\n  \"author\": {\n    \"name\": \"John Doe\"\n  },\n  \"product\": 1235,\n  \"title\": \"Not great, not terrible!\",\n  \"description\": \"I might recomend someone purchasing this product!\",\n  \"date\": \"2012-06-15\",\n  \"rating\": 3\n}\n```\n​\n#### Coupon Code\n​\n**\\*BONUS:** If you have managed to complete all other steps you might want to implement this small feature where the user should be able to enter a \"coupon code\" and if it exists AND is valid the oreder total should be discounted with the given amount.\n​\n```\nEndpoint Route: /couponCodes/{couponCode}.json\n```\n​\nJSON Example:\n​\n```json\n{\n  \"valid\": true,\n  \"discount\": 0.85\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwillandskill%2Freact-hackathon","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwillandskill%2Freact-hackathon","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwillandskill%2Freact-hackathon/lists"}