* feat: move mock exercise template to api
* feat: add template migration file
* chore:
- remove exercise templates form api
- rework api to pull exercise templates from db
- add exercise template seed to seed file
- declutter seed file
* chore:
- refactor template fetch to be dependent on the selected tag
- add tag to schema, remote db and template's seed file
- clear remote db's template table and replace data and their respective tags
* chore: add number of questions and center loading screen on the frontend
* chore: pr fixes
* chore: type fixes
* chore:
- move seed functionality to /seed folder
- add typing for individual seed functions
- pr fixes
* chore: pr fixes v2
* update output css
* refactor: update seeding script and schema definitions
- Renamed `seedTypes` to `seedQuestionTypes` for clarity in the seeding process.
- Enhanced the seeding script to include a command-line interface for better usability, allowing specific seed functions to be executed based on flags.
- Removed redundant unique constraints in the schema definitions for `courseNewsfeedComment` and `exerciseTemplate` to streamline database structure.
* feat: add email verification error handling page and update session management
- Introduced a new page for handling email verification errors, providing user-friendly messages based on error types.
- Updated session management logic to improve handling of public routes and session states.
- Enhanced security policies in the Svelte configuration to include additional sources for styles and scripts.
- Removed the old email verification error page to streamline the codebase.
* move the exercise template to cloudflare cdn
---------
Co-authored-by: Rotimi Best <best@classroomio.com>
* feat: move community supabase request to api layer
* chore: pr review checkpoint
* chore: PR fixes
* feat: implement role-based authorization middleware and align the community features with the developer guide.
- Added role-based authorization middleware for organization and course membership checks, including `orgMemberMiddleware`, `orgTeamMemberMiddleware`, and `courseMemberMiddleware`.
- Introduced route-specific middleware for comment and question authorization, ensuring only authors or team members can modify content.
- Updated community routes to utilize the new middleware for enhanced security and access control.
- Refactored community services to streamline upvote functionality and improve error handling.
- Enhanced UI components for community interactions, including new comment and question pages, and improved state management for user actions.
- Updated documentation to reflect new middleware usage and best practices for authorization in the API layer.
* feat: enhance course and organization routes with middleware for improved access control
- Added `courseMemberMiddleware` to course download and clone routes to enforce membership checks.
- Updated lesson route to include `courseMemberMiddleware` for PDF downloads.
- Integrated `orgMemberMiddleware` into organization routes for team and audience access, ensuring only authorized members can retrieve data.
- Refactored lesson and organization routes for consistency and clarity in middleware usage.
* chore: streamline dashboard and API development scripts in package.json
- Consolidated dashboard and API development commands to include all relevant filters in a single line for improved clarity and ease of use.
- Removed redundant full command variants to simplify the script section.
---------
Co-authored-by: Rotimi Best <best@classroomio.com>
* 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 <best@classroomio.com>
* 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 <103611443+canhamzacode@users.noreply.github.com>
- Added comprehensive guidelines for API route naming and structure in `ROUTE_NAMING_BEST_PRACTICES.md`.
- Updated `ARCHITECHTURE.md` to reference the new best practices document.
- Refactored course-related routes to follow new naming conventions, including changes to endpoint paths and validation schemas.
- Removed the deprecated course clone route and integrated cloning functionality directly into the course routes.
- Adjusted various API methods to ensure consistent usage of HTTP methods and parameter structures across the application.
* feat: setup dashboard analytics api
* chore: requested pr fixes
* fix: dash analytics server side type
* refactor: update Avatar component usage across the dashboard
- Replaced custom Avatar component with the new @cio/ui/base/avatar implementation for consistency.
- Enhanced avatar rendering with fallback options and improved accessibility.
- Cleaned up unused Avatar component files and related functions.
- Updated various components to utilize the new Avatar structure, ensuring a uniform appearance and behavior across the application.
* chore: remove console.log statements from analytics routes and API calls
- Eliminated console.log statements for orgId and siteName in the dash analytics router and DashStatApi class to clean up the code and improve performance.
---------
Co-authored-by: Rotimi Best <best@classroomio.com>
* 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.
* feat: Add .gitignore file and update package.json with pnpm version
feat: Enhance course queries with error handling and new course retrieval
feat: Implement exercise queries for creating and fetching exercises, questions, and options
feat: Create group queries for managing groups and group members
feat: Add lesson queries for creating lessons and fetching sections by course ID
feat: Update seed script to include seeding for users, profiles, accounts, organizations, groups, courses, lessons, exercises, questions, and options
* feat: Enhance course cloning functionality by refining course and lesson data handling
* chore: remove console.log
* feat: update role assignment in cloneCourse function and clean up unused types in database.ts
* 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.
* chore: remove bin
* fix: restore bin
* change dist to bin
* publish only dist folder
* publish with src folder.
* fix ci
* merge steps in CI
* update workflow
* deploy with src
* update to v9
* delete unused code
* complete landing page
* complete landing page
* feat: webflow template (#518)
* created a new branch for webflow from debug/course-app
* added webflow and reverted neccessary changes
* fixed commit issues
* clean up posthog
* clean up classic
* clean up minimal
* clean up posthog
* clean up webflow
* v0.0.10
* markdown lint
* feat: add prep template (#522)
* working on the ielts template
* working on the ielts template
* finished the ielts template
---------
Co-authored-by: emmanuel <chifez1@gmail.com>
* clean up examprep
* v0.0.11
---------
Co-authored-by: Em_Dev <Chifez1@gmail.com>
* feat: v1 templates
* update nvm
* working on the displaying the course content
* working on the displaying the course content
* displayed the content
* finished with the logic for rendering the content for all the courses and lessons
* post hog template UI is good to go
* classic and minimalistic template UI is good to go
* some refactoring
* some refactoring
* layout adjustments
* update tsconfig
* trying to get the filter to work well
* this is working now
* cleanup
* cleanup
* UI updates
* course page UI for posthog
* navbar and sidebar for course page in all templates complete
* all templates course page showing lesson content from md file with mdsvex
configured
* wokring on sections
* posthog lesson content done
* all templates fetches the lesson content from the section
* all templates properly typed
* scaffolding the new template
* finished the webflow-saas
* done with the webflow saas UI
* new calcom template
* new calcom template
* masonry layout for testitomonail section layout done
* calcom UI done
* UI all done
* cleanup
* trying to fix dark mode for the course page and home page
* done with this
* done with this
* working on tests
* migrated minimalistic template to svelte 5
* updated the syntax to svelte 5 for webflow
* migrated classic to svelte 5
* migrated posthog to svelte 5
* used svelte 5 syntax in calcom
* cli tool woks locally
* rename to course-sites
* use pnpm in root
* calcom refactoring
* remove unused files
* chore: biggest refactoring in my life
* add basic readme
* refactoring on course page
* restructure how courses are ordered
* proper state propagation
* add cf adapter
* fix pnpm i issue
* fix folder icon size
* use 18.17 version
* update npmrc
* add engine to packagejson
* pnpm install
* add engine to cio-com
* make it 18.x
* remove sequence
* move mdsvex to dependencies
* update lock
* mdsvex please work
* replace fs with import from vite
* add lock
* styling improvements
* fix styling
* sidebar style improvements
* fix: mobile concerns
* fix spacing of course header on desktop
* update header
* top nav fix
* feat: make cal template
* setup another template
* classic basic UI
* fixed the /courses fetching wrong page content
* fix breaking template cause of logo
* adding some updates
* improve styles theming
* finished updates from reviews
* updated the custom styling css
* clean up posthog template
* cli tool done, needs some cleaning though
* moved components to home
* improved the UI of the minimal template
* Add CLI tool and course app site
* prettier lint
* improve CLI
* ignore sveltekit folder
* publish course app
* fix tailwing theme + improve README
* finish up course-app site
* update README.md
---------
Co-authored-by: emmanuel <chifez1@gmail.com>
* working on the UI of the grading
* working on the grading function of the radio and checkboxes
* ai grading fully implemented with dummy functions for generating scores
* working on the openai response
* working on the openai response
* finished with the ai_grading
* finished with the ai_grading
* creating new migration file
* working on reviews
* updated the translations
* improvements
---------
Co-authored-by: Rotimi Best <best@classroomio.com>
* feat: move plans into sharable json
* remove unused code
* update pnpm lock
* update plans.json
* implement early adopter pricing
* docs: update meta title and description
* Finished the UI for upgrading plans
* Updated the pricing plans
* Updated the cards ui
* use relative import
* improve styling of upgrade plan card
* styling improvements, lemonsqueezy setup
* trigger lemonsqueezy payment and add webhook
* update pnpm lock
* add logout route
* feat: complete billing functionality
* generate lock file
* make crypto false on browser
* feat: adding upgrade prompts to org
* chore: add upgrade icon to upload video
* feat: add upgrade prompt to certificate and settings
* feat: implement onboarding setup page (#229)
* working on the onboarding setup
* working on the onboarding page
* Almost done with the onboarding UI
* finished the UI of the onBoarding setup
* finished the UI of the onBoarding setup
* Implementing the functions to carryout the logic of updating the UI onmount if a user has carried out a certain step or not
* Implementing the functions to carryout the logic of updating the UI onmount if a user has carried out a certain step or not
* making some chnages
* finished the onBoarding task
* updated some logic
* Removed the uneeded svg from the static folder
* fixed isCoursePublished not returning a boolean
* improved the setup link protection
* chore: make menuItems reactive
* improve formatting
* format supabase queries
---------
Co-authored-by: Rotimi Best <best@classroomio.com>
* revamp setup
* improve the upgrade experience
* migration
* feat: add lemonsqueezy customer portal
---------
Co-authored-by: emmanuel <chifez1@gmail.com>