Skip to content

yaroslav-k/yamt

Repository files navigation

yamt

Yet Another Money Tracker

So. What am I building here? This is going to be expense/income/invest portfolio tracker with budgeting, regular bills and so on. Now I'm still using Microsoft Money Plus Deluxe (yes, I'm serious). It's really good but oh man, it's time to create something new.

This will (hopefully) be something modern. Tech stack that will be used:

  • Spring Boot server with microservices
  • Hosted on Amazon AWS
  • Using Amazon RDS (not sure yet)
  • Admin interface implemented via Spring MVC (small part) and Vaadin Framework (most part)
  • Web Applications - ReactJS-based mobile-friendly PWA with ability to work offline and synchronize in the background
  • (Possibly. Not sure yet) React Native mobile application.

Functional Requirements

  1. Maximize users' anonimity. Only e-mail needed (possibly use of blockchain authorization). Though, authorization via OAuth2 providers like Google or Facebook is also possible.
  2. Multi-currency support (including crypto currencies)
  3. Accounts
  4. Investment portfolio support (deposits, stocks, etc.)
  5. Real-time stocks, currencies rates
  6. Regular bills
  7. Budget planning
  8. Internationalization support
  9. Lots of reports
  10. Receipts scan with automatic registering (QR codes are used in Russia, not sure about other countries)
  11. Enter spendings in offline from mobile
  12. TBD

##Technical Requirements

  1. Microservices with autodiscovery, configuration server, and authorization server
  2. Database - TBD
  3. Most parts should you standard Srping MVC and REST. Some services (e.g. QuoteServices, which gets a information from third-party sources) should be implemented using asynchronous Spring (WebFlux). (See Netflix Blog (https://medium.com/netflix-techblog/zuul-2-the-netflix-journey-to-asynchronous-non-blocking-systems-45947377fb5c)) to get and idea when that asynchronous stuff is really needed.
  4. Microservices
    1. Web Client - React application for end-users
    2. WebUI - administration web-interface (WebMVC + Vaadin Framework) and REST API server for Web Clients (or, REST server could be a separate service. TBD)
    3. QuoteService - everything that should come from third-party services, should be fetched here (stock/bond prizes, currency exchange rates, etc.)
    4. PortfolioService - stores users' portfolios
    5. UserService (maybe will joined to Authorization Server) - for users security
    6. ConfigurationServer - for centralized configuration management
    7. Discovery Server (Eureka) - for service discovery
    8. TBD