I pick from these tasks depending on priority and what I feel like completing.
- code quality
- clean up CSS
- document and extract high-complexity code
- UI/UX
- loading animations
- contact form
- comprehensive API support
- all endpoints functional
- ratelimiting with Redis
- security
- strip Stripe order data on server
- expiring session tokens on backend
- features
- error hook that saves logs
- user roles
- admin -> manage restaurants and users from panel
- restaurant staff -> manage own restaurant and orders from panel
- automatic deployments with CloudFormation
- live orders page with AWS API Gateway WebSockets
- fixed "copy profile link" button hitbox
- completed SvelteKit Actions integrations
- improved login page layout
- robust error page
- checkout success page
- catch invalid images
- updated README.md
- updated schema
- added SECURITY.md
- implemented unlinking
- enabled edge functions
- reset state token after login
- large improvements to authentication
- allow for spaces in restaurant names
- stateToken should always exist
- human readable receipts
- more professional UI
- improved dark mode
- moved some constant strings to variables
- switch from
locals
to SvelteKits cookie API
- allow users to completely manage API keys and their scopes
- revoking other logins and deleting account
- username field
- own url for every profile
- separate database objects and client objects
- account edit cancel button
- Sass includePaths
- titles for each page
- account operations to show alert on fail, fading dialog on success
- counter styles
- authentication (login and linking)
- restaurant button hitbox
- input validation for profile editing
-
authentication
- GitHub authentication
- email authentication
- show linked identifications on account page
- remove google verify as request already comes from google
- cover edge cases
- can't link auth method thats already linked to another account
- can't implicitly create account with taken email
- can't link auth method thats already linked to another account
-
stripe webhook
- create order and add to database
- send receipt to email
- order tracking page
- anonymous orders
- save account payment details
-
security
- extracted stripe endpoint secret to environment variable
- hash sessionTokens
- additional cookie security (SameSite, Secure, HttpOnly)
- make sure all sensitive endpoints POST if possible
- SOP and SvelteKit prevent CSRF
- prevent login CSRF with double-submit cookie and state
- prevent XSS by not using @html
-
account
- allow changing profile info and authentication methods, and delete account
- profile bio and picture
- rotate image according to EXIF data
- load user data in root layout
- show profile pic in header
-
API and docs with tsoa
-
use new SvelteKit actions API
-
use new cookies API
-
custom dynamodb wrapper library
-
add css import loadpath
-
Dependabot with pnpm lockfile updater
-
describe database schema in SCHEMA.md
- types for serviceworker
- signing out removes sessionID on database
- changelog
- readme
- license
- cleanup code and remove warnings from checks and linter
- darkmode to activate before first render
- Stripe loading to be more consistent
- Stripe checkout redirect URL
- images from Flickr api (slow)
- restaurant slug field (slug is now just name)
- todos from SvelteKit template
- DynamoDBClient to DynamoDBDocumentClient
- removed dependency on util-dynamodb
- JavaScript code to TypeScript
- set "strict" configuration back to true
- account page
- authentication with google
- "Remember me"-button
- types for database objects
- page for changing restaurant entries
- mobile responsiveness
- miscellaneous animations
- payment screen not changing with dark mode
- button to payment element with changeable amount
- buying items from menu page
- Stripe checkout
- show images from Flickr
- error page
- polished user interface
- clean css files
- node-sass to sass
- database from PostgreSQL to DynamoDB
- Stripe libraries
- payment button with Stripe checkout
- cleaned unused code
- added formatting configuration for IDE and Prettier
- pages with endpoints from being prerendered
- prefetch to links
- PostgreSQL connection timeout
- .gitignore
- PostgreSQL connection
- restaurant and menu pages
- TailwindCSS