This application will allow users to login or sign up, and once they create an account they should be able to complete their profile and verify their identity.
The signup page will allow them to create two types of accounts:
- An individual account
- A company account
Technically, for now, there will be no difference between an individual and a company account. Additional features will be added later. However, once logged in, the person logged in should be able to see which type of company they registered for.
This application will have 5 verification levels:
- Level 1: They verify their email - they get an email with a link which they click on to confirm their email. They can also verify email by connecting a gmail account.
- Level 2: They verify their mobile number - they get an SMS with a confirmation code. They enter the code on the website to complete the verification
- Level 3: They verify their Facebook account - they should be able to connect their facebook account and the name which they enter in their profile should match their name on Facebook
- Level 4: They verify their identity documents. They should be able to upload their identity document (Passport or ID) if they are an individual. If they are a company, then they upload company registration document (certificate of incorporation). In later versions, an admin should be able to log into an admin backend to check these documents but we don't need to build an admin backend for now.
- Level 5: They verify their address. To complete this process, they just enter their address, we then send them a letter via snail mail with a verification code. The user should then enter this verification code on the website to verify their address. It should work the way mobile verification works so it can instantly send an email to the admin to let the admin know which pin code is being sent to which address.
This application should have a microservice architecture. I would like the backend api to be a ruby on rails application and the frontend to be an angular application