Commit graph

32 commits

Author SHA1 Message Date
Christian Fehmer
5aec2c9a17
fix(docker): use frontend url for firebase admin (@fehmer) (#6730)
fixes #6728

---------

Co-authored-by: Jack <jack@monkeytype.com>
2025-07-14 15:30:34 +02:00
Christian Fehmer
afbff1bcf6
fix(docker): Allow to self-host without firebase config (@fehmer) (#6685)
fixes #6505
2025-07-01 13:06:06 +02:00
Jack
e06f7f41cf
refactor: add trycatch util (@miodec) (#6492)
Adds trycatch util to cleanup try catch code.
2025-04-26 21:24:39 +02:00
Seif Soliman
86383cf9ef
refactor(backend): improve redis and json.parse type safety with zod (@byseif21, @miodec) (#6481)
### 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>
2025-04-24 16:25:43 +02:00
Miodec
d3f3a834e3 refactor: remove unnecessary json parse 2025-04-23 18:43:38 +02:00
Jack
cac8835c77
chore: add oxlint (@miodec) (#6455)
Use oxlint for general linting to provide much quicker feedback. Keep
eslint for type-aware rules. Fully switch to oxlint once it supports
type-aware.
2025-04-16 17:18:50 +02:00
Christian Fehmer
f80dde4c89
chore(self hosting): run selfhosted backend in prod mode (@fehmer) (#6326)
Co-authored-by: Miodec <jack@monkeytype.com>
2025-03-03 17:43:08 +01:00
Jack
7e703028bd
refactor: enable no-unsafe-member-access (@miodec) (#5887)
### 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! :) -->
2024-09-18 12:56:52 +02:00
Jack
955eeae2a7
refactor: enable no-unsafe-assignment rule (@miodec) (#5874)
Co-authored-by: Nad Alaba <37968805+NadAlaba@users.noreply.github.com>
Co-authored-by: Christian Fehmer <fehmer@users.noreply.github.com>
Co-authored-by: Igor Bedesqui <igorbedesqui@gmail.com>
Co-authored-by: amarnathsama <63007641+amarnathsama@users.noreply.github.com>
2024-09-13 13:18:06 +02:00
Jack
93d6fff895
refactor: enable no-unsafe-argument rule (@miodec) (#5872) 2024-09-11 14:23:00 +02:00
Christian Fehmer
e2d574444a
impr: use tsrest for configurations endpoint (@fehmer) (#5796)
!nuf
2024-08-23 19:06:41 +02:00
dependabot[bot]
dfdf3fc6cd
chore(deps-dev): bump typescript from 5.3.3 to 5.5.4 (@dependabot) (#5734) 2024-08-08 12:44:22 +02:00
Christian Fehmer
a6912d20af
impr(server): store some logs forever (@miodec) (#5708)
!nuf
2024-08-01 12:48:36 +02:00
Jack
fe7a67d0fb
chore: add more eslint rules (#5687)
* duplicate

* no meaningless void

* no-unnecessary-boolean-literal-compare

* prefer includes

* fixes

* type cast

* ignore rule

* backend

* duplicate

* interface > type

* no-confusing-void-expression

* no-unnecessary-type-assertion

* extend plugin

* fix

* ignore
2024-07-30 18:17:58 +02:00
Jack
3e88ac2f12
refactor: restructure project to a true monorepo (#5626)
* split ts files

* packages

* nomore workspace?

* blah

* build, exports

* declaration

* blargh

* turrrrbo

* fix fontawesome paths

* allow file in eslint, fix ts errors

* optimise package, update tsconfig

* fix ts

* update turbo config

* eslint split

* fix imports

* fix types

* lock

* add turbo task

* script

* test task

* pretty scripts

* update prettier ignore

* no cache for tests

* lint task

* turbo

* no out

* depend on env

* fix mono breaking things

* odl

* fix version dependency of mongodb-memory-server

* Revert "fix version dependency of mongodb-memory-server"

This reverts commit 52ffac47b1.

* update vitest-mongodb

* release scripts

* update ci

* update dev script

* ignore issues around firebase config

* add check ts tasks

* import isaxioserror

* shared types package

* replace tsnodedev with tsx

* fix import

* shared types

* module

* backend imports

* declaration

* node version

* test code

* assert json

* verbatim

* type

* lodash

* ts ver

* fix fix fix?

* remove assert

* remove module and resolution

* cleanup

* tsconfig

* fix frontend

* remove unecessary props

* more unused

* remove skiplib

* declaration map, dev script

* remove install scripts

* fix regex

* move shared types to package

* dont include shared types

* remove path

* update scripts

* test code

* test code

* fix backend types

* fully fix backend

* fix frontend d.ts

* add .js to imports

* remove module

* revert add .js

* update tsconfig

* use bundler module resolution

* almost all frontend types

* mooore

* date fns

* fix backend docker

* fix ape keys

* fix type

* clean rimraf type

* fix shared-types in workspace

* fix import resolving

* fix docker builds

* ignore type problems on slim-select until new version is released

* turrrrbo

* fix npm ci

* fix lint task

* expose env variables needed by frontend build

* fix dependencies

* package-lock

* backend watch ts and lint

* add fe and be build scripts to root

* fix dev not building packages

* shared-types missing eslint

* move shared types back to dev-deps

* add packages to labeler

* add packages step to ci

* typo

* filter update

* remove concurrently from root

* add scripts

* abbreviate

* rename

* yeet

* fixed path

* test pkg

* consistent ordering

* rename

* Revert "backend imports"

This reverts commit d715198829.

* fix missing imports, remove last .js

* remove test package

---------

Co-authored-by: Christian Fehmer <cfe@sexy-developer.com>
2024-07-22 15:08:11 +02:00
Christian Fehmer
59615fb02c
feat(account page): add test activity graph (fehmer, Singh233) (#5309)
* wip

* wip frontend

* cleanup

* wip

* refactoring

* wip

* first working version

* wip

* update calendar with new result

* add migration script

* dates are hard

* fix naming inconsistencies

* requested changes on migration

* timezones

* update date-fns, use date-fns/utc

* resolve cyclic dependency by extracting test activity calender into new file

* cleanup

* fix increment

* fix

* tests

* test coverage

* test migration

* migration more logging

* migration add unique index on uid if missing

* update legend styling

* 53 columns

* wip

* move dropdown and legend to the top
add dropdown border
yeet hotpink
invisible filler boxes
remove year from month format

* responsive update

* lowercase months

* handle current year, fix tests

* handle year change

* make days square again

* handle newly created users correctly

* move css

* add wrapper for easier styling
rework some font sizes/widths
reorder styles

* media queries

* align

* rework styling once more

* dont commit debug

* add days full to fill the space a bit

* show partial months

* hover on 0 tests

* start dynamic calendar on sunday

* no activity

* hover

* remove label on fillers

* remove label on fillers

* fix months, update tests for months

* adjust tests to new requirements

* cleanup

* fix migration

* impr(commandline): add "add/remove quote to favorites" commands

closes #5368

* chore: remove daily lb which is no longer in the backend

* fix: dropdown element flashing for couple frames on page load

* feat(language): add japanese romaji 1k (nthngnssmnnglss)

* fix: optional chaining

!nuf

* fix(words generator): infinite custom text tests not working correctly

* chore: missing languages in list and group files

* fix(language): remove duplicates

!nuf

* add readline sync to confirm

* gh action complaints

* unnecessary check

* premium only

* add years to drop down only if premium

* Update setup-tests.ts

* test fix

* cleanup

---------

Co-authored-by: Miodec <jack@monkeytype.com>
2024-05-15 15:23:36 +02:00
Jack
084d42c62e
refactor: enable @typescript-eslint/strict (#5028)
* enable rule

* eslint --fix

* fixes

* --fix

* fixes

* fixes

* fixes

* extract into const
2024-02-12 16:46:56 +01:00
Jack
f456e1e615
refactor: enable no-floating-promises rule (#5007)
* enable rule

* backend

* fixes

* more fixes

* mooore fixes

* fixes

* fixed double void

* change some voids to await

* await -> void

* remvoe void

* missing return

* awaiting config update
2024-02-07 18:49:12 +01:00
Jack
83a4c0e6aa
refactor: enable strict-boolean-expressions rule (#4992) 2024-02-06 14:01:45 +01:00
Jack
0751375ab6
refactor: shared types (miodec) (#4978)
* rework shared types

* revert one small change
2024-01-29 15:53:42 +01:00
Jack
ee629db5b5
build: enable noUncheckedIndexedAccess compiler rule (Miodec) (#4958)
* added rule to backend and fixed all the errors

* setup frontend and start fixing some warnings

* more fixes

* fixes

* fixes

* fixes

* more refactoring

* fixes

* pain

* more pain

* ouch

* mooore

* 10 hours later

* ugghhh

* another one

* last element can be undefined duh

* smol one

* absolute typescript gigachad

* moooore fixes

* chart stuff

* almost done

* its... done

* remove console log

* use for of instead
2024-01-29 13:27:36 +01:00
Christian Fehmer
3adbdf2cdb
impr: replace body based authorization in dev mode (fehmer) (#4821)
* impr: add authorization header Uid in favour of authorization on with body on dev (fehmer)

* refactor dev mode detection
2023-11-30 12:58:28 +00:00
Christian Fehmer
4b3059bdc7
refactor: Import shared types back into MonkeyTypes namespace (fehmer) (#4800)
* impr: Import shared types back into MonkeyTypes namespace, partially reverts #4769

* down to 6 errors

* fixes

* cleanup
2023-11-20 14:56:28 +00:00
Bruce Berrios
e84f9ec5b7
refactor: add shared types (Bruception) (#4769)
* sharing is caring?

* replace 5 year old package with a more modern one

* ignore firebase config

* update import/resolver settings so that we no longer have to ignore @backend imports

---------

Co-authored-by: Miodec <jack@monkeytype.com>
2023-11-09 14:03:56 +00:00
Miodec
5ff41ded22 fixed email client not catching sending errors
logging errors to the database
2023-05-17 23:51:37 +02:00
Miodec
cc59b346fc looking fo the service account key in the src folder 2023-04-18 16:19:46 +02:00
Miodec
c6d0070dd3 moved firebase admin into its own module
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
2023-04-18 15:50:54 +02:00
Jack
1ca0fd1b23
Custom email (#3964)
* 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
2023-02-13 13:24:43 +01:00
Bruce Berrios
f2998b1d28
Add server configuration panel (#3070) bruception
* Add server configuration panel

* Remove unnecessaary check

* Remove break

* styling changes
showing when configuration was saved

* changing color based on response

* Remove comment

* Changes

* Add support for arrays

* Arbitrary nesting

* Add array item controls

* added button to quickly open the configuration panel

* removed excessive padding

* text inputs same height and style as checkboxes

* monkey stylng

Co-authored-by: Miodec <bartnikjack@gmail.com>
2022-06-07 14:06:15 +02:00
Bruce Berrios
0bd0812416
Check redis status when getting client connection (#3065) 2022-06-03 14:01:03 +02:00
Bruce Berrios
0ef52ed9da
Add daily leaderboards (#3023) bruception
* Setup daily leaderboards backend (#2987) bruception

* Setup daily leaderboards backend

* Add enabled checks

* Consistent naming

* Add initial unit tests

* Use more flexible daily leaderboard rule logic

* Fix seed rule

* Add LRU Cache + Rank Calculation

* Use native functions

* Optional daily leaderboard rank

* Proper status code for invalid lb mode

* Add result criteria check

* Make daily leaderboard cache size configurable

* Add Ape endpoint for daily leaderboard (#2997)

* support for switching to viewing daily lbs

* test

* buttons

* only checking daily if user has more than 2 hours typed

* updated structure

* setting rank if its undefined

* only when daily

* storing uid

* fixed media queries

* Daily leaderboards pagination (#3006)

* Pagination

* Remove with scores

* Add daily leaderboard rank (#3014) Bruception

* Add daily leaderboard rank

* Remove unused import

* Use object instead

* Add client logic

* Add limit checks

* Announce top daily leaderboard results (#3017)

* Add rank in daily leaderboard results (#3022)

* not showing lb memory and top % on daily

* Fix rank pagination

* Actual fix

* showing new rank

Co-authored-by: Miodec <bartnikjack@gmail.com>
2022-05-26 16:30:11 +02:00
Bruce Berrios
91220a5bdc
Move backend source files into src folder (#2943) 2022-05-05 19:27:00 +02:00