Skip to content

mayeedwin/taxually-app

Repository files navigation

Taxually Assesment

This project was generated with Angular CLI version 13.3.0.

Key Features

  • User can create an account
  • User can login or logout
  • User can upload photos
  • User can delete their photos
  • User can view their uploaded photos
  • User can sort their photos by date and size.
  • User can filter their photos by size aka largest or smallest.
  • Alert messages are displayed when a user performs an action for e.g uploading or deleting a photo.

App Architecture

  • Built using Angular 13.3.0

  • Has a single model in the models folder, which has PhotoItem and User interfaces.

  • Has three modules in the modules folder, which are login, home, and shared.

    • Login module has the login component and the loging routing module.

    • Home module has the home component and the home routing module.

    • Shared module has the photo and alert components which are shared across the app.

  • Has a services folder, which has the global, auth, storage, guard services.

    • Global service has the setShowAlert subject, which is used to show the alert message.

    • Auth service has the signup, login, logout, and setUsers methods as key features.

    • Storage service has the saveImage, setStorage, getSavedPhotos and deletePhoto methods as key features.

    • There are 2 key guards, which are the auth guard and the login guard.

    • The auth guard is used to protect the home route, and the login guard is used to redirect the user to the home route if they are already logged in.

  • State management using RxJS and Ngrx. State management is done in the state folder, which has the actions, reducers, and selectors.

  • Tests using jest and jest-preset-angular.

Deployment, CI/CD, and Hosting

  • The App Preview is hosted on Firebase. Click here to view the app.

  • GitHub Actions to build and deploy the app to Firebase on every push to the main branch.

  • To view setup instructions, please view the SETUP.md file.

Cheers!