### Description
refactored backend files to enhance type safety and reliability using
Zod validation and Redis instead of JSON.parse , I tried to avoid the
files that isn't necessary tho so I hope I don't miss any or included
unnecessary ones!! didn't fully test only verified code compilation and
partial tests without Redis!!.
Should Close#5881
Related to #6207
---------
Co-authored-by: Miodec <jack@monkeytype.com>
### Description
<!-- Please describe the change(s) made in your PR -->
### Checks
- [ ] Adding quotes?
- [ ] Make sure to include translations for the quotes in the
description (or another comment) so we can verify their content.
- [ ] Adding a language or a theme?
- [ ] If is a language, did you edit `_list.json`, `_groups.json` and
add `languages.json`?
- [ ] If is a theme, did you add the theme.css?
- Also please add a screenshot of the theme, it would be extra awesome
if you do so!
- [ ] Check if any open issues are related to this PR; if so, be sure to
tag them below.
- [ ] Make sure the PR title follows the Conventional Commits standard.
(https://www.conventionalcommits.org for more info)
- [ ] Make sure to include your GitHub username prefixed with @ inside
parentheses at the end of the PR title.
<!-- label(optional scope): pull request title (@your_github_username)
-->
<!-- I know I know they seem boring but please do them, they help us and
you will find out it also helps you.-->
Closes #
<!-- the issue(s) your PR resolves if any (delete if that is not the
case) -->
<!-- please also reference any issues and or PRs related to your pull
request -->
<!-- Also remove it if you are not following any issues. -->
<!-- pro tip: you can mention an issue, PR, or discussion on GitHub by
referencing its hash number e.g:
[#1234](https://github.com/monkeytypegame/monkeytype/pull/1234) -->
<!-- pro tip: you can press . (dot or period) in the code tab of any
GitHub repo to get access to GitHub's VS Code web editor Enjoy! :) -->
not initialising if ther eis no service account
this allows the backend server to be ran without firebase (all though it will throw errors)
closes#4190
* added nodemailer and mjml
* added email template
* basic email util file
* added email queue
* email worker
* renamed folder
* showing which queues and workers were initialized
* initializing email on server boot
added some test code
* renamed to email worker
* type fix
* renamed queue
* added queue to list
* added worker to list
* logging when config was verified
* handling send mail result
* not minifying (not supported anymore)
using .html property
returning correct value
* dont send me emails
* added port to .env
* updated example
* updated test email
* using env email
* parseint base
* message
* refactor
* message
* rename
* moved email templates
* using async file read
* typo
* using mustache
* moved file
renamed to email client
* logging with prometheus
* added social links
* line
* using stronger types (object instead of array of any[])
moved prometheus logging into email client
added function to send mail using a template
* fixed templates not working
* removed console log
* name change
* rename
* moved templates
* rename
* string interpolation
* string interpolation
* moved to dev dependencies, exact versions
* moved types
* removed function, remove unnecessary if
* update template params
* updated name
* fixed button not clickable
* throwing
* moved template metadata to one place
* rename
* sending email on account creation
* removed test code
removed await
* fixed button
* not stopping the server if email client validation failed
* added metric for queue lengths
* exposing getjobcounts
* added job to log queue lengths
* added endpoint to request verification email
* using send verification email that calls api instead of firebase built in
* updated route
* renamed function
* recording time to complete
* returning 400 if email already verified
* setting transport initialized to true earlier, setting it to false if caught error
* moved forgot password flow to a simple popup, added new endpoint to ape
* added forgotpasswordemail route
* added email tempalte
* setting transport to false if caught error
* added email queue function
* moved try higher
* fixed log