Skip to content

borjantona/psy-tech-task

Repository files navigation

🧠 Technical test for a psychology company

This technical test is done using Angular 19 and Ionic 7

In order to install everything you must perform

npm i
ionic serve

🎯 Project purpose

This project is a technical task performed in Ionic 7 and Angular 19. It emulates an e-commerce as a PWA.

The site structure is as follows:

  • 1. Home: List of products, categories
  • 2. Category: List of products filtered by category
  • 3. Product: Product detail with image, text and price
  • 4. Cart: Products added to the cart (subtotal and total)
  • 5. Checkout: Checkout page with delivery options and payment.

The design is provided with this figma that emulates the nike store.

Important

It is developed as an Angular APP and added service workers and webmanifest to work as a PWA. The deployment is out of the scope of this project. For this purpose you can go to the Ionic Official Documentation

✨ Extra features

  • 1. Favourites: Implemented add/remove/show favourites
  • 2. Responsiveness: All the views are made for small, medium and large screens
  • 3. CI: Added a git workflow action to check tests, build and lint.
  • 4. Searchbox: Added a searchbox in category page.
  • 5. Toast: Added toast messaging across the app.

πŸ—‚οΈ Project structure

πŸ“ src
β”œβ”€πŸ“ app
β”‚ β”œβ”€πŸ“ components    # Components with no page entity. Product cards, sliders and styled elements.
β”‚ β”œβ”€πŸ“ interfaces    # Interfaces to mainly support the store state
β”‚ β”œβ”€πŸ“ pages         # Views of the app
β”‚ β”œβ”€πŸ“ pipes         # Utilities to support angular formatting
β”‚ β”œβ”€πŸ“ services      # Api Fetcher to retrieve data from (https://fakestoreapi.com/)
β”‚ β”œβ”€πŸ“ store         # NgRx files (reducers, selectors, actions and effects) to manage the app state
β”‚ β””β”€πŸ“ testing       # Mockups for testing
β””β”€πŸ“ theme           # App theming variables

🧩 Included 3rd-party libraries

  • NgRx: NgRx Store provides reactive state management for Angular apps inspired by Redux.
  • lodash: A modern JavaScript utility library delivering modularity, performance & extras.
  • Swiper: Swiper is the most modern free mobile touch slider with hardware accelerated transitions and amazing native behavior.
  • Karma: Tool for testing client-side JavaScript
  • Angular
  • Ionic

πŸ“ˆ Lighthouse

Lighthouse analytics

The performance states that I'm running in dev mode. It lacks CSS and JS minified files. It has a value of 58 but it is not a truthy value.

πŸ“Έ Screenshots

All the screenshots taken in large (1920px wide), medium (1300px wide) and small (500px wide) screens.

Section πŸ–₯️Large πŸ–₯️ Medium πŸ“± Small
Home Home large Home medium Home small
Category Category large Category medium Category small
Product Product large Product medium Product small
Cart Cart large Cart medium Cart small
Checkout Delivery Checkout Delivery large Checkout Delivery medium Checkout Delivery small
Checkout Payment Checkout Payment large Checkout Payment medium Checkout Payment small

About

Tech task project

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •