RS-School ๐ฆฅ eCommerce-Application. Stage 2 Final Task RS2023Q1 ๐งโ
๏ธSushiSushi - Is not just your regular food delivery; it's a culinary journey to Japan's finest flavors, delivered to your doorstep ๐.
๐๐ฅณ One of the best RS2023Q1 graduation projects!
Task description - Task description ๐
Deployed project preview - SushiSushi ๐
To run our project locally, you would have to download zip file with our repository or clone it to your computer. โจ
What things do you need to do in order to run our project locally? ๐ค
- Use node 18.x or higher. โก
- Installed .git on your computer. โ๏ธ
- Code Editor of your choice. ๐
- Installed npm. ๐ฆ
- Created commercetools account. ๐
First make sure you have all the things listed in the previous section. Then clone our repository to your computer: ๐
git clone git@github.com:Quiddlee/eCommerce-Application.git
or download zip file manually with our repository ๐.
Navigate into project folder and run ๐ฆ:
npm install
Create .env
file in the root of the project and add your commercetools credentials ๐ฅ.
You can find .env.example
as an example file in the project root or follow the lines below ๐บ:
VITE_PROJECT_KEY=PROJECT_KEY
VITE_CLIENT_SECRET=CLIENT_SECRET
VITE_CLIENT_ID=CLIENT_ID
VITE_AUTH_SERVICE_URL=AUTH_SERVICE_URL
VITE_API_HOST_URL=API_HOST_URL
VITE_DEFAULT_CUSTOMER_SCOPE=DEFAULT_CUSTOMER_SCOPE
Follow the step by step guide on how to add your own products data to commercetools ๐ฆฉ.
Finally run a development server: ๐คฉ
npm run dev
Aaaaand you're done! ๐๐ฅณ
Here you can find all the scripts that are available in our project. ๐ฆ
Linting and Prettifying happens automatically when files are staged ๐, however you can do it manually with absolutely no problems:
Lint the App with ESlint: โ๏ธ
npm run lint
Format the App with Prettier: ๐งน
npm run format
Type check the App with TypeScript: ๐
npm run type-check
Install Husky to enable pre-commit hooks: ๐ฃ
npm run prepare
Run unit-tests with Vitest: ๐งช
npm run test
Build project for production: ๐๏ธ
npm run build
Preview the production build locally: ๐
npm run preview
- Browse the world of royal asian flavour meals! ๐๐ฃ
- Choose the meal you like the most ๐๐ด
- Fill your shopping cart ๐๏ธ๐
- Search for your lovely meals! ๐
- Filter the results to make easier your search ๐
- Sign up your account! ๐
- Change your data at any time ๐
- Beautiful Mobile App, and much much more features, try by yourself ๐!
- React.js - The web framework used โ๏ธ
- Redux / RTK Query - The State Management Tool and Data Fetching Library ๐งฐ
- React Router Dom - The Router ๐
- TypeScript - The Language ๐
- Tailwind - The CSS Framework ๐
- Vite - The Bundler ๐ฆ
- Postman - The API Testing Tool ๐ฌ
- Vitest - The Test Runner ๐งช
- Testing Library - The Testing Framework ๐ซ
- ESLint โ Air-bnb base - The Linter ๐
- Prettier - The Code Formatter ๐
- Husky - The Pre-commit Hooks ๐ช
- Lint Staged - The Pre-commit Hooks ๐ฆ
- EditorConfig - The Code Style Enforcer ๐
- Formik - The Form Validation Library ๐
- Yup - The Form Validation Schema Builder ๐๏ธ
- Framer Motion - The Animation Library ๐
- Swiper - The Slider Library ๐
- React Infinite Scroll Component - The Infinite Scroll Library โพ๏ธ
- React Zoom Pan Pinch - The Image Zoom Library ๐
- Async Mutex - The Async Mutex Library ๐ค
- React Star Rating Component - The Star Rating Component โญ
- Figma - The Design Tool ๐จ
- Project Design - The Project Design ๐
- Git Flow - The Git Flow ๐
- Feature Sliced Design - The Architecture ๐๏ธ
- Commercetools - The API ๐ฆ
- GitHub Actions - The CI/CD ๐๏ธ
- GitHub Projects - The Project Management Tool ๐
- Discord - The 3xWeek Meeting Communication Tool ๐ฃ๏ธ
- Telegram - The Main Chatting Communication Tool ๐ฌ
- Lucidchart - The Project planing Tool ๐ง
- Working with the API ๐
- Managing the Redux store ๐ช
- Animations ๐ฆ
- UI/UX Design ๐ญ
- Code review ๐ซ
- Testing ๐งช
- Deployment ๐
- Documentation ๐
- CI/CD โจ
- Email -
bogdanscherbinadev@gmail.com
๐ฌ - Linkedin - Bohdan Shcherbyna โ๏ธ
- Telegram - @Quiddle ๐ฑ
- GitHub - Quiddlee ๐ฆ
- Managing the app router ๐
- Code review ๐ซ
- Documentation ๐
- Working with CommerceTools data ๐
- Managing app products ๐
- Fully implement user profile page ๐ช
- UI layout ๐ฆฅ
- Project setup ๐ซ
- Working with the API ๐ฉบ
- Email -
asdrogachev@gmail.com
๐ฌ - Linkedin - Oleksii Drohachov โ๏ธ
- Telegram - @Tedzury ๐ฑ
- GutHub - Tedzury ๐ฆ
- Designed product card ๐ด
- Product page ๐
- Logo and animations ๐ฃ
- implemented some features in Cart component ๐
- Managing the app router ๐
- Code review ๐ซ
- Documentation ๐
- UI Layout ๐ฆฅ
- Working with the API ๐ช
- Email -
queharambe@gmail.com
๐ฌ - GitHub - barrydilan ๐ฆ
Here you can find detailed instructions on how to add products data to commercetools ๐ต๏ธ. To add data with products in commercetools we prepared fully setted up repo for you ๐ซ.
If you want exactly the same products as we have ๐:
- You need to follow all the [Installation and Preparation](#Installation And Preparation) steps. โ
- Aaand type a few ๐ค commands into the terminal to upload all the data into your commercetools account! ๐คฉ
Detailed instructions will be provided in further reading. Nevertheless, feel free to modify data in any possible way you want ๐ค. Main steps and cornerstones will be covered in further reading. So, let's proceed into detailed instructions. โฉ
To add your own products data to commercetools you need to follow next steps ๐ฆ:
-
Clone example repo into your computer. ๐ถโ๐ซ๏ธ
-
Register your account at commercetools.
-
Go to
Settings > Developer settings > Create new API client > Select predefined Admin scope > Create API client
-
โ ๏ธ !important stepโ ๏ธ Scroll to bottom of web page, there will be select input ๐ with suggested options for downloading environment variables. -
Pick option to download in format
.env
file. Don't close this window ๐จ until you download all the files needed, info is shown only once ๐ฑ till you won't close the window ๐. -
After downloading ๐ฉ, insert downloaded
.env
file into your cloned repo from first step. Remove ๐งน suggested name from this file, so there is only left.env
in file name. More detailed info with pictures is available at original sunrisedata ๐จ -
Open terminal ๐งโ๐ป inside the root folder of the cloned repo and type next instructions:
npm run clean:categories && npm run import:categories && npm run clean:products && npm run import:products
.
And that all! ๐ That simple, following this guide allows you to fully imitate our products data, that we used in our project. ๐
And here will be some clues to add your own products into commerce tools ๐งฉ.
In our project we use very limited info and options for our products ๐ค. Commercetools provides much more larger management for products ๐, categories, customers, prices, taxes, supply channels and so on ๐คฏ, but in our case we ain't needed so much options ๐งโโ๏ธ, so we used as little of it, as possible. In fact, we use only 2 minimal options to clean and then upload categories and products into api ๐ .
4 main files from cloned repo take part in this process: categories.csv, product-export-template.csv, product-type.json and products.csv
๐ซ .
-
In the
categories.csv
file you describe the categories you want to import and their hierarchy ๐ฆ. -
Then, in
product-export-template.csv
you describe template for imported products ๐๏ธ, exactly what info or fields must be in every product description. -
product-type.json
describes every non-standard field for product in details ๐ซฃ. -
And finally ๐ in
products.csv
you describe each of your product, that pattern must follow theproduct-export-template pattern
.
each product occupies his own line in .csv
file(!)
Also in repo you can find SushiSushi menu.xlsx
file ๐ฃ. It contains exactly the same data as products.csv
file, BUT it's much easier ๐ฅต to edit data in xlsx
file, then in csv
file ๐.
Everything in this file is already set upped for comfort editing of products ๐. If you want to edit products data: feel free to do it โ๏ธ. You can change any data you want, just make sure it is suited for csv
file ๐.
Each cell in product row is concatenated and separated with comma ๐ฒ. Then this concatenated rows are concatenated into one line in one cell at the bottom of the file ๐คฏ.
Just copy paste the cell content into products.csv
file. Make sure, that after copying the data - you separated each product into own line in .csv
file ๐ฆ, it's critical point ๐ฎ.
One more critical point - make sure that after copy/paste
you left the header
row at products.csv
file ๐ซก.
That is all you need to know about editing the product data for our project! To know more you should deep dive ๐คฟ into commercetools docs, be observant ๐ญ, lucky ๐ and ready to struggle ๐ซ .
This project is licensed under the MIT License ๐ฅท.
We want to thank RS-School community ๐ฅฐ.
And especially our mentor, Andrej Podlubnyj for his help and support โค๏ธ.