Commit Graph
44 Commits
Author SHA1 Message Date
Rotimi BestandAbdulmuizz Hamzat 9fb6c7cbaa feat: migrate course UI from supabase (#615)
* chore: fix storybook build

* chore: implement theming

* community list not showing properly

* refactor: migrate Chip component to @cio/ui/custom/chip

- Updated imports for the Chip component across multiple files to use the new location in the @cio/ui package.
- Replaced the previous Chip implementation with a new version that utilizes a Badge for better styling and functionality.
- Adjusted related components to ensure consistent usage of the updated Chip component.

* fix: align course sidebar design to match organization design (#611)

* fix: align course sidebar design to match organization design

* feat: add hideSearch prop to AppHeader and update sidebar layout

---------

Co-authored-by: Rotimi Best <[email protected]>

* refactor: replace PrimaryButton with Button component across multiple files

- Updated various components to use the new Button component from @cio/ui/base/button instead of the deprecated PrimaryButton.
- Ensured consistent button usage throughout the application for improved styling and functionality.
- Removed the PrimaryButton component and its associated constants from the codebase.

* refactor: standardize button and input usage across components

- Replaced instances of deprecated components such as TextField, TextArea, and IconButton with their updated counterparts (InputField, TextareaField, and updated IconButton).
- Ensured consistent event handling by changing `onClick` to `onclick` for better alignment with Svelte's event binding conventions.
- Removed unused components and streamlined imports to enhance code maintainability and readability.

* chore: themeing, course card, use $features

* refactor: centralize UI components and update modal implementations

- Refactored various components to centralize UI elements, improving discoverability and maintainability.
- Replaced deprecated modal components with the new Dialog component for consistent modal behavior across the application.
- Removed unused components and streamlined imports to enhance code clarity and reduce complexity.

* feat: add new documentation and refactor org and lms UI components

- Introduced new documentation files for Auth Flow, Breadcrumbs Refactoring, Page and Route Creation, and Route Page Setup to enhance developer onboarding and reference.
- Refactored various UI components, including the Course Sidebar and Lesson Modal, to improve layout and functionality.
- Removed deprecated components and streamlined imports for better maintainability.
- Updated translations across multiple languages to ensure consistency in user experience.

* refactor: update UI components and improve styling consistency

- Refactored various components to enhance styling consistency, including updates to button and text color classes.
- Removed deprecated components and streamlined imports for better maintainability.
- Replaced instances of PageBody with a more flexible Page component structure across multiple routes.
- Updated translations and UI elements to align with the new design system.
- Deleted unused components to reduce code complexity and improve clarity.

* update output.css

---------

Co-authored-by: Abdulmuizz Hamzat <[email protected]>
2025-12-22 02:36:48 +01:00
Rotimi Best c7854efae3 feat: redo settings and all org pages. (#601)
* feat: new components, deploy storybook

* refactor: simplify component field definitions and enhance button loading state

- Removed unnecessary type imports and simplified the FIELDS array definitions across multiple components in Storybook.
- Updated button component to use a loading state instead of isLoading, improving clarity and consistency in props.
- Adjusted button stories to reflect the new loading prop and enhanced the button's loading visual feedback.
- Minor CSS adjustments for better layout and styling consistency.

* chore: add field, card, password components

* feat: improve page component & update AuthUI path

* chore: update bits-ui to version 2.14.4 and all org related UI's

- Updated bits-ui dependency in pnpm-lock.yaml and package.json to version 2.14.4.
- Refactored imports for RoleBasedSecurity and UpgradeBanner components to use the new ui feature directory.
- Removed unused Course components and related files to clean up the codebase.
- Enhanced various components to improve consistency and maintainability.

* chore: move all setting buttons to the top and update auth ui styles

* chore: remove svelte-loading-spinners and replace with @cio/ui/base/spinner

- Removed all instances of svelte-loading-spinners from the project.
- Updated components to use the new Spinner from @cio/ui/base/spinner.
- Cleaned up pnpm-lock.yaml and package.json to reflect the removal of svelte-loading-spinners.
- Added new CSS animations for rocket launch effects in app.css.
- Enhanced email change flow with updated verification messages in translations.

* chore: remove supabase file upload from dashboard and move to r2

* chore: update organization API and UI components

- Added new API methods for organization plan operations and team management.
- Introduced middleware for API key authentication and organization admin checks.
- Refactored organization-related components to utilize the new API structure.
- Updated various UI components to improve consistency and maintainability.
- Enhanced error handling and validation for organization-related actions.
- Removed deprecated services and streamlined the codebase.
2025-12-02 09:54:38 +01:00
Rotimi Best a3924100dd feat: migrate auth from supabase to better auth (#596)
* feat: add README for @cio/db package and remove existingAccounts.json

* load session, load profile and organization, add create profile hook

* chore: cache session request

The trick was passing all the cookies to the backend. Previously I was only passing the better-auth.session_token and not better-auth.session_data. Read about the difference here https://www.better-auth.com/docs/concepts/cookies#custom-cookies

* feat: login, logout, onboarding, verify email, reset password.

* feat: complete change email and email verification

* feat: standardise how we make rpc calls and create org endpoints

* fix ui errors

* fix: handle potential undefined customerId and standardize avatar URL property

* refactor: standardize custom domain handling and update telegram chat ID references

* chore: add tailwind prefix to @cio/ui

this fixed the media query issues because  @cio/ui classes were overriding this dashboard tailwind build

* chore: clean up org sidebar

* chore: persist mode state

* feat: implement order breadcrumbs

* chore: upgrade to better auth 1.4

* chore: address common auth flow bugs and setup app for others to setup locally.
2025-11-24 01:00:50 +01:00
Rotimi Best ba47b06647 Merge branch 'main' of https://github.com/classroomio/classroomio into feat/release-v2 2025-11-08 20:22:53 +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 b96d91cd7c feat: setup drizzle (#594)
* chore: migration to SvelteKit 2

* stage 1: migrate to svelte 5 and fix rerendering issues

* stage 2: fix more $: reactivity across dashboard

* fix merge conflicts

* chore: migrate code in main to svelte 5

* chore: update preventDefault

* chore: simplify tsconfig and remove unused mobileMenuRef in MobileMenu.svelte

* chore: enforce .ts across dashboard

* rename from classroomio-com to website

* stage-3: Replace carbon icon svelte with lucide icon

* update lock file

* chore: finish icon replacement

* fix: settings and setup page multiple rerender

* stage 3: More icon and rerendering fixes

* feat: setup drizzle and better auth

* 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

* chore: add a clean command

* fix: remove message from email verification response
2025-11-01 15:49:29 +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
Rotimi Best 9055c45384 chore: move IS_SELFHOSTED to public env 2025-09-07 10:24:34 +01:00
Rotimi Best 1c2760fd50 fix: add fallback empty array for APP_SUBDOMAINS when env variable is undefined 2025-08-26 16:46:01 +01:00
Rotimi Best 195e5e8fd2 refactor: reorganize imports and add comment for selfhosted instances 2025-08-05 17:40:31 +01:00
Rotimi Best f343ca7974 docker improvements + delete unused package 2025-05-03 14:46:01 +01:00
Rotimi Best de1398b3a2 feat: migrate from lemonsqueezy to polar (#535)
* feat: move from lemonsqueezy to polar

* update lock

* add migration files

* test with demo product id
2025-01-06 03:36:00 +01:00
Rotimi Best 381776f388 feat: automatically detect language on server and translate UI (#530)
* feat: detect language on the server and translate page

* translate auth pages

* PR reviews
2024-12-28 23:11:55 +01:00
Rotimi Best 92572ed2c2 fix: add dynamic env 2024-10-09 15:00:30 +01:00
Rotimi Best f9a8150c88 debug: use static env for is_selfhosted 2024-10-09 14:59:56 +01:00
Rotimi Best 8c846a70d5 debug: deployment log 2024-10-09 14:51:32 +01:00
Rotimi Best c7722cb18a docs: let the launch week begin 🚀 (#491)
* docs: update meta tags

* fix: make env dynamic

* docs: let the launch week begin 🚀
2024-10-07 01:36:07 +01:00
Adeyemi AdetunjiandRotimi Best 947181a3c5 feat: custom org brand color (#474)
* feat: add package

* feat: add a new color picker

* feat: integrate with supabase

* feat: add translation

* run translation script

* feat: hover state

* quick fix

* fix: requested PR fixes

* update lock

* ux improvements

* remove log

* cleanup and improve code

---------

Co-authored-by: Rotimi Best <[email protected]>
2024-10-06 01:20:32 +01:00
Rotimi Best 2a50b22ad2 fix: make env dynamic 2024-09-20 11:16:19 +01:00
Rotimi Best f7640b8a67 chore: update og url 2024-09-05 15:51:05 +01:00
Rotimi Best 2d5f0ba6ad fix: getCurrentOrg query for subdomains 2024-09-04 06:55:50 +01:00
Rotimi Best 12d7a1ac3c feat: support custom domain (#462)
* feat: add custom domain CRUD

* chore: fetch organization in layout in server before render

* debugging

* update log
2024-09-04 06:32:54 +01:00
Rotimi Best 1b84d98398 docs: 100 students milestone (#449)
* write blog post

* add link to dblocked

* improve blog SEO

* fix build error

* fix overide metatags issue
2024-08-25 21:35:59 +01:00
Rotimi Best 99f236b70d feat: support course meta tags (#421)
* support course meta tags

* fix import
2024-08-01 14:04:50 +01:00
Rotimi Best fecdaa116d feat: improve fetch course by slug query 2024-06-16 05:01:35 +01:00
Rotimi Best e8a79e5995 chore: reuse getSubdomain function 2024-06-15 09:23:02 +01:00
Rotimi Best ba3f4ef816 feat: selfhost url mapping 2024-06-15 08:55:46 +01:00
Rotimi Best c4c3f3d5d5 chore: make setting locahost cookie easier 2024-04-25 07:22:46 +01:00
Rotimi Best d877eb206a fix: too many redirects 2024-04-21 20:32:47 +01:00
Rotimi Best a95be6d620 ci: cypres test setup(#274)
* fix: font size broken

* add first cypress test

* save onboarding language

* load language

* get first test to work

* update command

* install pnpm

* update workflow

* install

* update

* test

* increase timeout

* another update

* update 2

* update 3

* upsdada 4

* sfgsfgf 5

* add def supabase url

* fix supabase issue

* add ci

* fix ci

* update .env.example

* update port

* tired

* prepare

* preview

* this is it

* ?????

* 99999900

* fix log issue

* ci

* nkkh

* =====

* 200000
2024-04-20 04:39:16 +01:00
Adeyemi AdetunjiandRotimi Best d75e2f258e feat: multi language support (#254)
* feat: multitranslational support

* - completion of settings page
- completion of sidebar

* sidebar rerendering bug fix

* completion of the lesson navigation & materials page

* completion of the course navigation

* completion of requested languages

* - Implementation of Language Picker
- Rename Bug Fixes

* checkpoint save

* - addition of the language picker to the onboarding.
- addition of the language switcher for the lesson notes.

* merge completion

* initialization of the new branch

* add transition.svelte file

* lesson note bug fix

* feat: add translation migration

* completion of translation

* fix height issue of dropdown

* refactoring

* fix: improve code with LOCALE from db

* finally get it fully functional

* connect with AI

* backward compatibility for lesson note

* preserve old content, when generating AI content

* undo translations in upgrade modal

* fix duplicate key issue from codacy trigger

---------

Co-authored-by: Rotimi Best <[email protected]>
2024-04-19 05:45:48 +01:00
Adeyemi AdetunjiandRotimi Best 13ab070178 feat: filter community questions by course (#157)
* checkpoint save

* checkpoint

* feat: course dropdown

* added comments

* feat: generate db migration

* fixes

* PR Fixes

* PR Fixes

* refactoring

* show empty state

* improve styling

* fix styling issue

* PR Fixes

* PR Fixes

* PR Fixes

* dropdown for edit mode

* test db schema change on staging

* fix: change course_id to courseId

* fix theming issue

---------

Co-authored-by: Rotimi Best <[email protected]>
2024-02-13 22:17:15 +01:00
Rotimi Best 93bda000f9 fix: meta tag on docs are broken (#162)
* feat: db mock data

* update meta tags

* feat: update seed file

* undo sql change
2024-02-12 11:26:37 +01:00
Rotimi Best 7ee12e90e4 fix: redirect docs in new page, handle 404 vercel url 2024-02-02 08:25:15 +01:00
Rotimi Best 845b87b21f chore: update posthug and change all 301 to 307 2023-12-14 22:41:16 +03:00
Rotimi Best b420105ddf feat: implement forward domain for gauth 2023-12-14 12:07:27 +03:00
Rotimi Best bbe6e78f88 chore: login/signup improvements 2023-12-11 21:18:31 +03:00
Rotimi Best fb0faa75cd fix: avoid redirecting for app 2023-12-11 10:24:07 +03:00
Rotimi Best 28e9281fdc chore: redirect to app if no dns for blocked subdomains 2023-12-11 03:44:31 +03:00
Rotimi Best b116bdec60 redirect to app.classroomio.com for 404 2023-12-11 03:36:22 +03:00
Rotimi Best 820a59c80e feat: 404 for not found subdomain 2023-12-11 03:27:13 +03:00
Rotimi Best d0e90b30e4 improve layout.server 2023-12-03 16:29:27 +03:00
Rotimi Best 41e29014ef feat: 🚀 😃 convert repo into a monorepo 🚀 😃 (#51)
* Merge main into turbo-monrepo

* feat: rename apps

* feat: remove supbase videos and serve all from project

* feat: move supabase to root

* feat: update README

* docs: update link
2023-11-25 21:56:02 +00:00