Skip to content

Commit 03cf6eb

Browse files
author
Hau Cherng
committed
Initial Commit.
0 parents  commit 03cf6eb

16 files changed

+2803
-0
lines changed

.gitignore

+37
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2+
3+
# dependencies
4+
/node_modules
5+
/.pnp
6+
.pnp.js
7+
8+
# testing
9+
/coverage
10+
11+
# next.js
12+
/.next/
13+
/out/
14+
15+
# production
16+
/build
17+
18+
# misc
19+
.DS_Store
20+
*.pem
21+
22+
# debug
23+
npm-debug.log*
24+
yarn-debug.log*
25+
yarn-error.log*
26+
27+
# local env files
28+
.env.local
29+
.env.development.local
30+
.env.test.local
31+
.env.production.local
32+
33+
# vercel
34+
.vercel
35+
36+
# typescript
37+
*.tsbuildinfo

README.md

+58
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
# react-live-coding-test
2+
## Follow these steps
3+
Application Setup (DO THIS FIRST)
4+
- Fork this repository into your GitHub account (You can create a GitHub account if you don't have one)
5+
- Clone the repository from your repository
6+
- Checkout main branch
7+
- Install dependencies
8+
- To start development use npm start
9+
10+
## Project Overview
11+
This project is about a frontend ecommerce application. the expected time to finish the project is around 12 hours (4 days, 3 hours each).
12+
13+
### Required knowledge
14+
1. Tailwind
15+
2. Typescript
16+
3. NextJS
17+
4. Docker (BONUS)
18+
5. Any Free deployment platform Experience (Bonus)
19+
20+
we are open to any /components if it is needed in the test.
21+
22+
### **IMPORTANT**
23+
After implementing each feature for each test in the respective branch, create a Pull Request and merge to the main branch, then delete the merged branch.
24+
25+
### First Test - Landing page
26+
1. create a new branch name - `feature/landing-page`
27+
2. create a clone of this page https://www.lazada.com.my/
28+
3. use this when product details is needed : https://fakestoreapi.com/
29+
4. this page should be in http://localhost:3000/
30+
31+
PS: clone as similiar as you can. As long as you are able to showcase your skill.
32+
33+
### Second Test - Product listing
34+
1. create a new branch name - `feature/product-listing`
35+
2. use https://fakestoreapi.com/ as API for listing.
36+
3. create filterable, sortable and paginated table.
37+
4. the products can be filtered by categories - list of categories can be found at https://fakestoreapi.com/products/categories
38+
5. has floating button that when clicked, shows the current items in cart. (data is retained even if the page is refreshed).
39+
6. there will also be a quick buy button that redirects the user to receipts page.
40+
7. this page should be in http://localhost:3000/products
41+
42+
### Third Test - Receipts page
43+
1. create a new branch name - `feature/receipts` based on `feature/product-listing` after you are done with second test.
44+
2. user will be redirected to this page once user click quick buy at http://localhost:3000/products
45+
3. user should be presented with a the items in the cart.
46+
4. user should be able to view a pie chart of the price of the items.
47+
5. user should be able to download a pdf of the receipts.
48+
6. this page should be in http://localhost:3000/receipts
49+
50+
### Fourth test - Dashboard
51+
1. create a new branch name - `feature/dashboard`
52+
2. use https://randomuser.me/api/ as API for showing user profile.
53+
3. try to utilize every field in the `result` from the response.
54+
4. this page should be in http://localhost:3000/dashboard
55+
56+
### Bonus
57+
1. Dockerize this application.
58+
2. Deploy this application online and share the link for viewing.

next-env.d.ts

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
/// <reference types="next" />
2+
/// <reference types="next/image-types/global" />
3+
4+
// NOTE: This file should not be edited
5+
// see https://nextjs.org/docs/basic-features/typescript for more information.

next.config.js

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
/** @type {import('next').NextConfig} */
2+
module.exports = {
3+
reactStrictMode: true,
4+
}

0 commit comments

Comments
 (0)