Commit Graph
433 Commits
Author SHA1 Message Date
Rotimi Best fb2ea885e1 chore: update translation 2025-12-03 10:59:08 +01:00
Rotimi Best 4ac242d918 fix: add PostHog domains to CSP connect-src
- Add https://*.i.posthog.com to both enforcement and reportOnly CSP
- Resolves CSP violations blocking PostHog source maps and assets
- Fixes blocked requests to recorder.js.map and surveys.js.map

This ensures PostHog analytics work properly without CSP violations.
2025-12-03 10:28:02 +01:00
Rotimi Best 9fe7691f8d fix: CSP configuration for API and media access
- Add https://api.classroomio.com to connect-src for API calls
- Add https://*.r2.cloudflarestorage.com for Cloudflare R2 storage
- Add media-src directive to allow video/document loading
- Fixes CSP violations blocking video downloads and API requests

Resolves CSP errors preventing presigned URL requests and media playback.
2025-12-03 10:10:08 +01:00
Rotimi Best 07ecfcf967 fix: authorization bypass vulnerabilities in plan-restricted features
- Add plan validation to custom domain saving (Domains.svelte)
- Add plan validation to certificate customization (Design.svelte)
- Add plan validation to document upload (AddDocumentToLesson.svelte)
- Add plan validation to video upload (UploadVideo.svelte)
- Enhance team member function validation (TeamMembers.svelte)

Prevents free users from bypassing UI restrictions via DOM manipulation.
All restricted functions now enforce server-side plan validation.
2025-12-03 10:01:50 +01:00
Rotimi Best 7014757ed5 fix: add PostHog and Umami analytics to CSP
- Added https://eu-assets.i.posthog.com for PostHog scripts
- Added https://eu.i.posthog.com for PostHog API calls
- Added https://umami.hz.oncws.com for Umami analytics
- Maintains XSS protection while enabling analytics
2025-12-03 09:44:31 +01:00
Rotimi Best 7b18c325da fix: cross site scripting with html content 2025-12-03 09:33:53 +01:00
Rotimi Best 1e966aaf0f fix: redirect to 404 page after user closes welcome modal.
This is because when you close the modal we redirect you to /org/siteName/courses but if you click close before we get your organization siteName the route is just /courses which redirects to a 404.
2025-11-18 19:16:51 +01:00
Rotimi Best cc7868276a fix: use prebuilt carbon all.css without border 2025-11-18 14:40:10 +01:00
Rotimi Best b8c15eabe3 chore: remove debug console log from app.svelte
Removed console log for global store in app.svelte.
2025-11-08 20:20:38 +01:00
Rotimi Best 34e5cab733 chore: [FIXED] clean up console logs in layout and pricing components, add context prompt for ClassroomIO
This point I have fixed 2 major issues
1. After signing in with Google auth, join a course and going to the course, when you click the back button in the page nav, it takes you to admin instead of lms

2. When you open a course landing page, click enroll, it redirects to 404 instead of the invite page.
2025-11-08 18:47:53 +01:00
Rotimi Best b3d5f291f0 chore: fix issue of isOrgSite being false after google auth 2025-11-08 18:27:00 +01:00
Rotimi Best aa42eb9c1f chore: reorder layout setup and debug org set after login 2025-11-08 18:22:41 +01:00
Rotimi Best b783940cee fix: keep org store after logout
This fix tackled a bug where if I logged out, go to org landing page, open a course and enrol then it gets redirected to a 404 page because `$currentOrg.siteName` is undefined.
2025-11-08 17:58:03 +01:00
Rotimi Best 93db0c97e8 chore: use hasSession to check if auth token exists 2025-11-08 17:30:22 +01:00
Rotimi Best 0f433cfa93 chore: debug enrollment on lms 2025-11-08 06:11:44 +01:00
Rotimi Best 9e4609dc7f fix: redirect to login if no session on invite page 2025-11-08 05:51:09 +01:00
Rotimi Best 3d64e25b89 chore: debug lms detection on client side 2025-11-08 05:34:17 +01:00
Rotimi Best 7715834566 chore: debug getSubdomain 2025-11-08 05:22:38 +01:00
Rotimi Best 291e233700 chore: enable auto redirect on layout mount
The use case for this is that if a person went from course page to invite page, and isn't authenticated then the user should be redirected to login page with a redirect query param
2025-11-08 05:02:17 +01:00
Rotimi Best 570b809111 chore: debug join course 2025-11-08 04:52:42 +01:00
Rotimi Best eb40b6dab6 fix: remove message from email verification response 2025-11-01 11:53:27 +01:00
Rotimi Best 86adad9358 fix: onboarding validation error showing translation key #586 (#593)
* fix: onboarding validation error showing translation key #586

* fix: remove debug log for profile update errors
2025-11-01 09:54:19 +01:00
Adeyemi Adetunji 97fb446df5 fix: snackbar for profile component (#588) 2025-10-31 18:28:52 +01:00
Nwosu Emmanuel 8efffcb7f6 feat: clone course (#582)
* feat: clone course work

* feat: clone and delete a course

* feat: clone and delete a course

* feat: clean up

* feat: attending to reviews

* feat: attended to revies
2025-10-29 09:57:29 +01:00
Adeyemi Adetunji f8271d850f fix: dashboard i18n build/console warnings (#587)
* fix: build warnings

* feat: remove other instances of invalid_type_error and the unused translation key
2025-10-29 09:34:30 +01:00
Adeyemi Adetunji b9b19d8a2e feat: add search and replace to tinymce editor (#585) 2025-10-28 11:59:21 +01:00
Adeyemi AdetunjiandRotimi Best 3692046077 feat: add danish support to dashboard (#580)
* feat: Add Danish Support

* feat: add migration file

* chore: update migrations

---------

Co-authored-by: Rotimi Best <[email protected]>
2025-10-13 18:07:46 +01:00
Rotimi Best c31e5e131f chore: update org mock data 2025-10-13 15:49:50 +01:00
Rotimi Best 23ef0661eb fix: add address translation to en.json 2025-10-13 15:46:28 +01:00
Rotimi Best c34379f6a2 chore: set default of customLinks 2025-10-13 15:35:02 +01:00
Nwosu Emmanuel 6cae0f1506 fix: pushed fix for landing page (#579) 2025-10-13 14:39:57 +01:00
Rotimi Best ab89837e29 chore: align logo on org landing page 2025-10-12 17:43:43 +01:00
Rotimi Best 92cc922a40 chore: reorder org import 2025-10-12 17:30:39 +01:00
Rotimi Best 41de98083f fix: show navigation if slugname include routes to hide nav 2025-10-12 14:02:47 +01:00
Rotimi Best 168866c81b feat: optimize docker compose for dashboard and api (#578)
* chore: use turbo for build

* fix docker compose file and remove backend

* chore: update .dockerignore to include additional files and directories for improved build management

* copy everything in both docke filed

* refactor: streamline Dockerfile to copy entire dashboard app and remove unnecessary node_modules references

* update api to use turbo to start

* run ls la for docker files

* update cmd commands

* update cmds to use node

* fix: add redis url to docker compose

* fix: reduce memory allocation for dashboard build in Dockerfile

* debug dashboard build

* update api docker file

* update dashboard

* add tsconfig

* chore: add echo to dockerfile

* fix: change echo to run

* chore: install pnpm before switching to non-root user in Dockerfile

* refactor: update start commands in package.json and Dockerfiles to use pnpm

* install turbo

* use turbo 1.10.16

* update turbo config

* fix: update CMD in Dockerfile to run the API directly using Node.js

* change

* add commands to turbo.json

* copy over turbo

* add workspace

* fix: update start commands in package.json to specify ports for dashboard and API

* publish docker images

* add dev branch

* update compose

* build only for amd64 platform

* refactor: update docker-compose to use pre-built images and remove build context

* coolify-dockertest

* point to latest

* chore: update docker-compose to use specific version tags for API and dashboard images

* remove envs for docker file

* 0.1.3

* use dynamic env

* 0.1.4

* add PUBLIC_IS_SELFHOSTED=true

* chore: update docker-compose to use version 0.1.5 for API and dashboard images

* use static for PUBLIC_IS_SELFHOSTED

* disable cache for tag

* use 0.1.7

* add PUBLIC_IS_SELFHOSTED=true

* comment out caching

* update docker-compose to use version 0.1.8 for API and dashboard images

* update api port

* use tag 0.1.9

* add cache

* use latest tag in compose file
2025-10-11 13:27:50 +01:00
Nwosu EmmanuelandRotimi Best 27ee51155e feat: add custom navigation link to org landing page (#569)
* feat: custom navbar UI complete

* chore: added translations

* fear: attending to reviews

* add orgname to org landing page

---------

Co-authored-by: Rotimi Best <[email protected]>
2025-10-09 01:13:06 +01:00
Rotimi Best 9a7018eb34 chore: remove unused dependencies 2025-10-04 11:01:22 +01:00
Rotimi Best fd2e3f5d76 chore: clean up environment variable usage and formatting in configuration files
- Updated docker-compose.yaml to use double quotes for version and port mappings.
- Removed DEPLOYMENT_PROVIDER from global environment variables in turbo.json and Dockerfile.
- Adjusted dashboard build command in package.json to remove DEPLOYMENT_PROVIDER.
- Cleaned up .env.example by removing the DEPLOYMENT_PROVIDER comment.
- Simplified SvelteKit adapter condition in svelte.config.js.
2025-10-04 08:13:01 +01:00
Rotimi Best 629753bcd0 chore: update docs of supabase instructions 2025-10-04 06:56:14 +01:00
Rotimi Best 3bbc5d0927 chore: vercel builds failing for dashboard and docs (#576)
* chore: improvements

* update README
2025-09-28 20:57:45 +01:00
Nwosu EmmanuelandRotimi Best 594eb97caa feat: AI grading bug (#420)
* worked on the AI grading task

* worked on the AI grading task

* improved the ai grading function

* improved the ai grading function

* update types

---------

Co-authored-by: Rotimi Best <[email protected]>
2025-09-28 20:08:56 +01:00
Rotimi Best 85474ea022 chore: update umami domain 2025-09-27 18:12:29 +01:00
Rotimi Best 2c3ee88e13 chore: move course analytics a step after content 2025-09-21 20:44:30 +01:00
Rotimi Best 6d68351a46 feat: end to end api type safety with redis rate limiting (#573)
* feat: support hono rpc

* add wrangler file

* update name of wrangler file

* add wrangler as a dependency

* add compatibility_flags

* trigger ci

* core: add health check to docker file

* expose port 80

* update custom healthcheck

* feat: implement openapi

* install dependencies in root

* debug yml

* update yml

* update port

* update dockerfile with envs

* completely move away from apiClient

* rename backend to api

* refactor: update server descriptions and comment out local spec saving

* update lock file

* use api.classroomio.com

* add support for redis

* fix: add missing line break in WelcomeModal.svelte

* refactor: remove wrangler configuration and update Vite config for API integration
2025-09-21 19:35:41 +01:00
Rotimi Best a6880f1b54 feat: implement percentage calculation utility and refactor analytics to use it
- Added `calcPercentageWithRounding` function for consistent percentage calculations with rounding.
- Updated course and user analytics to utilize the new utility for progress and average grade calculations.
- Removed redundant rounding logic from analytics functions.
2025-09-18 10:34:54 +01:00
Nwosu EmmanuelandRotimi Best ec3875bac2 feat: course analytics (#574)
* feat: added anaytics for the course page

* feat: Added pagination

* feat: cleanup

* feat: added translations

* feat: added fixes

* my improvements

---------

Co-authored-by: Rotimi Best <[email protected]>
2025-09-18 01:00:49 +01:00
Nwosu Emmanuel f3de6a063e feat: Trigger confirm warning for unsaved changes (#547)
* added the triger warning for the settings page

* all done

* added translation to the window message

* window issue now fixed
2025-09-16 09:21:41 +01:00
Rotimi Best caa48003af fix: include types 2025-09-15 19:15:50 +01:00
Rotimi Best fb0131de2d fix: load documents on client 2025-09-15 19:14:22 +01:00
Rotimi Best def5318c07 refactor: improve number rounding and handling in analytics calculations 2025-09-15 14:17:37 +01:00