Skip to content

Latest commit

 

History

History
116 lines (87 loc) · 4.6 KB

README.md

File metadata and controls

116 lines (87 loc) · 4.6 KB

expense-manager-nymble

Expense Manager:

Requirements:

  • User authentication: SignIn and Signup
  • Provide three pages - Dashboard, Expenses, and reports accessible through a navbar.
  • Dashboard:
    1. Show total spent amount
    2. List last 5 transactions
  • Expenses:
    1. List of expenses for the current user.
    2. Button to create a new expense.
    3. Must contain the following fields: DateTime, Amount, Currency, Description (optional), and a Category.
    4. The categories are -- Home, Food, Fuel, Shopping and Other.
    5. Can be created only after logging in
    6. Can be read only by the user who owns it.
    7. Can be updated or deleted by the user who owns it.
    8. Ability to filter the expenses by category.
  • Report:
    1. Show total amount spent per week of the current month.
    2. Show total amount spent per category basis on the current month.
  • The front-end must be a Single-Page-Application.
  • Follow proper design guidelines and coding standards.

Improvements

These are optional improvements that’ll help in boosting your submission score.

  • No business logic code in client app. (It must be only on the backend-server)
  • The front-end web client is a PWA (Progressive Web App).
  • Hosting the front-end and back-end to a cloud or hosting provider.
    1. Better if the cloud provider is Google Cloud Platform.
  • Using GraphQL instead of traditional REST API.
  • Pagination on the list of expenses.
  • Use ReactiveExtensions in client web app: (RxJs for Javascript)
  • User roles -- Admin and normal users.
    1. A separate page for Admin listing all users (only accessible by admin users)
    2. Admin users can view the expenses of all the users.
    3. Admin users can edit or delete the expense of all users.
Legend
  • : Feature implemented
  • : Feature not implemented

Sneak Peak:

  • App Landing page

landing

  • user login page

landing

  • user register page

landing

  • Once user logged in he is redirected to dashboard which has a log of his last 5 transations

landing

  • Here use can add/edit/delete expenses also user can filter out the expenses. And to navigate to different pages he can use the burgermenu in left.

landing

  • This page displays weekly expenditure report of current month PS: user can choose currency in which he needs report.

landing

  • Login page for admin

landing

  • Once admin logged in he can see the list of all user over his dashboard

landing

  • Admin can edit/delete the expense of any user through this page

landing

  • Add expense interface for both admin and normal user

add

  • Editing expense interface for both admin and normal user

add

Routing structure:

Routes accessible by normal users:

  • [POST] /login: utilized for authenticating user.
  • [POST] /register: utilized for registering user.
  • [POST] /dashboard/add-expense: utilized for adding transation by user.
  • [GET] /dashboard/all-expenses: utilized for accessing all transations added by user.
  • [DELETE] /dashboard/delete/:id: utilized to delete a particular transaction from database.
  • [PUT] /dashboard/update/:id: utilized for updating any transaction.
  • [GET] /dashboard/reports: utilized for accessing particular user report.

Routes accessible only by admin:

  • [POST] /admin/login: utilized for authenticating admin user.
  • [GET] /admin/all-users: utilized for accessing all users via admin user.
  • [GET] /admin/all-expenses/:id: utilized by admin user to access all transaction of a any user.
  • [POST] /admin/delete/:id: utilized by admin user to delete any transaction of any user.
  • [PUT] /admin/update/:id: utilized by admin user to update any transaction of any user.

Authentication:

  • Token(JWT) based authentication strategy has been used to authorize user, admin user and each request made by any user.

Hosting:

Test accounts (you can create new if you want):

PS: please wait 1-2 second after adding expense as it takes little time to update 😅