This document contains detailed information about the project scope and future roadmap
- Create server
- Use golang as server side language
- Use gorm as ORM
- Configure https://github.com/99designs/gqlgen for generating graphql schemas
- Configure https://github.com/gin-gonic/gin for creating http server
- Define base schema for user
- Define the auth schemes and variables required for that
- Basic Auth (Username & Password based)
- Google Login
- Github Login
- Twitter Login
- Facebook Login
- Login with magic link (Send magic link mail)
- Add mailing server to send the magic link
- Allow configuring the master password to access the console (If not set UI console can be accessed by anyone)
- Allow configuring mailing server
- Allow configuring HSA Keys for oauth
- Allow configuring RSA keys for oauth
- Allow configuring the DB client
- Allow configuring the Secret
- Allow configuring callback urls
- Allow configuring redis, should be optional if not used use the memory to store session
- Create Graphql mutations and query for following
- Login mutation
- Logout muttion
- Token query :- Authorize [Currently checks for valid token & if token is present in session]
- Should authorize using cookies
- Should authorize using Authorization header
- Role based access [Checks for particular role in JWT]
- Signup
- Forgot password
- Update profile
- Create a UI console to configure the above parts [For now using graphql playground]
- Create react app
- Allow user to configure above mentioned envs
- Allow user to add user
- Allow user to view users
- Allow user to define the JWT token field
- A component library for react
- Create AuthorizerProvider -> gives token, user, loading, setters
- Create Authorizer component -> Complete Login/Signup & Forgot password solution
- Create AuthorizerResetPassword component -> Component that can be used to verify forgot password token and reset the password
- Create a sdks
- NodeJS sdk which acts as a middleware and can be used to authenticate & authorize users
- Golang sdk which acts as a middleware and can be used to authenticate & authorize users
- Create docker image
- Create docker-compose file to quickly start this
- Create heroku button
- Create a website