I started this project to learn a few things.
- How to securely do social login.
- How to securely manage user sessions.
- How to do the above and serve a single-page application (SPA) with a RESTful backend server.
The UI is built in React, using Material UI for convenient styling and components.
The server is written in Golang with MongoDB storage.
- Switch from the now-insecure Implicit Grant Flow to the Authorization Code Flow for OpenID Connect.
- Use WebSockets to automatically log the user out of the UI when their session expires.
- Create a chat using WebSockets for users to share tips on productivity.
- Optimize UI assets.
- Support mobile.
- Add ability to delete items.
- Add ability to delete all completed items.
- Add limits of how many items a user can have so someone doesn't take down my server 😆.
- Add rate limiting for requests.
- Get the OAuth key and secret from the Google Cloud Platform
- Insert the key and secret into .ci/docker-compose.yml
- Add the key and secret to your environment under
GOOGLE_OAUTH_CLIENT_ID
andGOOGLE_OAUTH_CLIENT_SECRET
- Run
.ci/deploy.sh
The following data-testid
attributes are maintained.
LoginButton
Home
Home.AddItemTextBox
Home.Item.{id}
Home.Controls
Home.Controls.Delete
Home.Controls.ShowHide
AccountMenu
AccountMenu.Profile
AccountMenu.Logout
Profile.Name
Profile.Email