Separate diffent functionilities into modules ( auth, core, shared, accounts, etc.)
Lazy loading : accounts module will be loaded when we navigate to it
Use HttpClient to connect to firebase and handle asynchorized operations levarage reactive programming
Use firebase to do authentication, also use it to save accounts and fetch accounts.
Use interceptor to deal cross concerns like logging and auth
Use auth guard to add some security control: only loginned user can create new account and edit account, manage data menu (fetch data and save data) also only available to loggedin users.
form control
sharable directive: dropdownMenu directive can used by both manageData and manageaccount