diff --git a/apps/docs/public/assets/blog/blog-visibility-unlisted.png b/apps/docs/public/assets/blog/blog-visibility-unlisted.png new file mode 100644 index 00000000..e4abff97 Binary files /dev/null and b/apps/docs/public/assets/blog/blog-visibility-unlisted.png differ diff --git a/apps/docs/public/assets/blog/blog.png b/apps/docs/public/assets/blog/blog.png new file mode 100644 index 00000000..59c1104f Binary files /dev/null and b/apps/docs/public/assets/blog/blog.png differ diff --git a/apps/docs/public/assets/blog/edit-blog.png b/apps/docs/public/assets/blog/edit-blog.png new file mode 100644 index 00000000..c21be890 Binary files /dev/null and b/apps/docs/public/assets/blog/edit-blog.png differ diff --git a/apps/docs/public/assets/blog/new-blog-title.png b/apps/docs/public/assets/blog/new-blog-title.png new file mode 100644 index 00000000..6beaec10 Binary files /dev/null and b/apps/docs/public/assets/blog/new-blog-title.png differ diff --git a/apps/docs/public/assets/blog/new-blog.png b/apps/docs/public/assets/blog/new-blog.png new file mode 100644 index 00000000..f2459214 Binary files /dev/null and b/apps/docs/public/assets/blog/new-blog.png differ diff --git a/apps/docs/public/assets/blog/publish-blog.png b/apps/docs/public/assets/blog/publish-blog.png new file mode 100644 index 00000000..9b3aa64b Binary files /dev/null and b/apps/docs/public/assets/blog/publish-blog.png differ diff --git a/apps/docs/public/assets/courses/add-content.png b/apps/docs/public/assets/courses/add-content.png new file mode 100644 index 00000000..8cf5ca09 Binary files /dev/null and b/apps/docs/public/assets/courses/add-content.png differ diff --git a/apps/docs/public/assets/courses/add-lesson-details.png b/apps/docs/public/assets/courses/add-lesson-details.png new file mode 100644 index 00000000..35508a26 Binary files /dev/null and b/apps/docs/public/assets/courses/add-lesson-details.png differ diff --git a/apps/docs/public/assets/courses/add-lesson.png b/apps/docs/public/assets/courses/add-lesson.png new file mode 100644 index 00000000..7cf36691 Binary files /dev/null and b/apps/docs/public/assets/courses/add-lesson.png differ diff --git a/apps/docs/public/assets/courses/course-content.png b/apps/docs/public/assets/courses/course-content.png new file mode 100644 index 00000000..f343e8eb Binary files /dev/null and b/apps/docs/public/assets/courses/course-content.png differ diff --git a/apps/docs/public/assets/courses/course-sales-page.png b/apps/docs/public/assets/courses/course-sales-page.png new file mode 100644 index 00000000..f8b10ac3 Binary files /dev/null and b/apps/docs/public/assets/courses/course-sales-page.png differ diff --git a/apps/docs/public/assets/courses/lesson-settings.png b/apps/docs/public/assets/courses/lesson-settings.png new file mode 100644 index 00000000..1eb191e2 Binary files /dev/null and b/apps/docs/public/assets/courses/lesson-settings.png differ diff --git a/apps/docs/public/assets/courses/new-product.png b/apps/docs/public/assets/courses/new-product.png new file mode 100644 index 00000000..96b9928f Binary files /dev/null and b/apps/docs/public/assets/courses/new-product.png differ diff --git a/apps/docs/public/assets/courses/paid-dropdown.png b/apps/docs/public/assets/courses/paid-dropdown.png new file mode 100644 index 00000000..e6338211 Binary files /dev/null and b/apps/docs/public/assets/courses/paid-dropdown.png differ diff --git a/apps/docs/public/assets/courses/product-dashboard.png b/apps/docs/public/assets/courses/product-dashboard.png new file mode 100644 index 00000000..f80137df Binary files /dev/null and b/apps/docs/public/assets/courses/product-dashboard.png differ diff --git a/apps/docs/public/assets/courses/publish-tab.png b/apps/docs/public/assets/courses/publish-tab.png new file mode 100644 index 00000000..305feb2e Binary files /dev/null and b/apps/docs/public/assets/courses/publish-tab.png differ diff --git a/apps/docs/public/assets/courses/publish.png b/apps/docs/public/assets/courses/publish.png new file mode 100644 index 00000000..17871145 Binary files /dev/null and b/apps/docs/public/assets/courses/publish.png differ diff --git a/apps/docs/public/assets/courses/publishing.png b/apps/docs/public/assets/courses/publishing.png new file mode 100644 index 00000000..54b23646 Binary files /dev/null and b/apps/docs/public/assets/courses/publishing.png differ diff --git a/apps/docs/public/assets/courses/set-price.png b/apps/docs/public/assets/courses/set-price.png new file mode 100644 index 00000000..9bc06e42 Binary files /dev/null and b/apps/docs/public/assets/courses/set-price.png differ diff --git a/apps/docs/public/assets/courses/view-page.png b/apps/docs/public/assets/courses/view-page.png new file mode 100644 index 00000000..e8d89dce Binary files /dev/null and b/apps/docs/public/assets/courses/view-page.png differ diff --git a/apps/docs/public/assets/courses/visibility.png b/apps/docs/public/assets/courses/visibility.png new file mode 100644 index 00000000..fa2f3a91 Binary files /dev/null and b/apps/docs/public/assets/courses/visibility.png differ diff --git a/apps/docs/public/assets/downloads/add-content.png b/apps/docs/public/assets/downloads/add-content.png new file mode 100644 index 00000000..ed14cd99 Binary files /dev/null and b/apps/docs/public/assets/downloads/add-content.png differ diff --git a/apps/docs/public/assets/downloads/digital-downloads-sales-page.png b/apps/docs/public/assets/downloads/digital-downloads-sales-page.png new file mode 100644 index 00000000..3aeeaa7b Binary files /dev/null and b/apps/docs/public/assets/downloads/digital-downloads-sales-page.png differ diff --git a/apps/docs/public/assets/downloads/download-editor.png b/apps/docs/public/assets/downloads/download-editor.png new file mode 100644 index 00000000..c5485bda Binary files /dev/null and b/apps/docs/public/assets/downloads/download-editor.png differ diff --git a/apps/docs/public/assets/downloads/free-email-delivery.png b/apps/docs/public/assets/downloads/free-email-delivery.png new file mode 100644 index 00000000..ff092dc5 Binary files /dev/null and b/apps/docs/public/assets/downloads/free-email-delivery.png differ diff --git a/apps/docs/public/assets/downloads/price-dropdown.png b/apps/docs/public/assets/downloads/price-dropdown.png new file mode 100644 index 00000000..df95617b Binary files /dev/null and b/apps/docs/public/assets/downloads/price-dropdown.png differ diff --git a/apps/docs/public/assets/downloads/pricing-paid.png b/apps/docs/public/assets/downloads/pricing-paid.png new file mode 100644 index 00000000..20a92b8a Binary files /dev/null and b/apps/docs/public/assets/downloads/pricing-paid.png differ diff --git a/apps/docs/public/assets/downloads/product-type-selection.png b/apps/docs/public/assets/downloads/product-type-selection.png new file mode 100644 index 00000000..5a55b82a Binary files /dev/null and b/apps/docs/public/assets/downloads/product-type-selection.png differ diff --git a/apps/docs/public/assets/downloads/publish-tab.png b/apps/docs/public/assets/downloads/publish-tab.png new file mode 100644 index 00000000..bcf41f31 Binary files /dev/null and b/apps/docs/public/assets/downloads/publish-tab.png differ diff --git a/apps/docs/public/assets/downloads/publish.png b/apps/docs/public/assets/downloads/publish.png new file mode 100644 index 00000000..cf5c4125 Binary files /dev/null and b/apps/docs/public/assets/downloads/publish.png differ diff --git a/apps/docs/public/assets/downloads/view-sales-page.png b/apps/docs/public/assets/downloads/view-sales-page.png new file mode 100644 index 00000000..fb0829ae Binary files /dev/null and b/apps/docs/public/assets/downloads/view-sales-page.png differ diff --git a/apps/docs/public/assets/pages/add-banner.png b/apps/docs/public/assets/pages/add-banner.png new file mode 100644 index 00000000..fdc8022d Binary files /dev/null and b/apps/docs/public/assets/pages/add-banner.png differ diff --git a/apps/docs/public/assets/pages/add-newsletter-signup.png b/apps/docs/public/assets/pages/add-newsletter-signup.png new file mode 100644 index 00000000..0ea2e4e8 Binary files /dev/null and b/apps/docs/public/assets/pages/add-newsletter-signup.png differ diff --git a/apps/docs/public/assets/pages/add-page-block.gif b/apps/docs/public/assets/pages/add-page-block.gif new file mode 100644 index 00000000..50dddf77 Binary files /dev/null and b/apps/docs/public/assets/pages/add-page-block.gif differ diff --git a/apps/docs/public/assets/pages/banner-basic-details.png b/apps/docs/public/assets/pages/banner-basic-details.png new file mode 100644 index 00000000..3a9a2f82 Binary files /dev/null and b/apps/docs/public/assets/pages/banner-basic-details.png differ diff --git a/apps/docs/public/assets/pages/banner-cta-download-link.png b/apps/docs/public/assets/pages/banner-cta-download-link.png new file mode 100644 index 00000000..dcc4301e Binary files /dev/null and b/apps/docs/public/assets/pages/banner-cta-download-link.png differ diff --git a/apps/docs/public/assets/pages/banner-cta.png b/apps/docs/public/assets/pages/banner-cta.png new file mode 100644 index 00000000..4ad83f1a Binary files /dev/null and b/apps/docs/public/assets/pages/banner-cta.png differ diff --git a/apps/docs/public/assets/pages/content-block-preview.gif b/apps/docs/public/assets/pages/content-block-preview.gif new file mode 100644 index 00000000..bd76dc1c Binary files /dev/null and b/apps/docs/public/assets/pages/content-block-preview.gif differ diff --git a/apps/docs/public/assets/pages/content-block.png b/apps/docs/public/assets/pages/content-block.png new file mode 100644 index 00000000..3fb3df3f Binary files /dev/null and b/apps/docs/public/assets/pages/content-block.png differ diff --git a/apps/docs/public/assets/pages/courselit-page-builder-controls.png b/apps/docs/public/assets/pages/courselit-page-builder-controls.png new file mode 100644 index 00000000..787ecc57 Binary files /dev/null and b/apps/docs/public/assets/pages/courselit-page-builder-controls.png differ diff --git a/apps/docs/public/assets/pages/delete-block.gif b/apps/docs/public/assets/pages/delete-block.gif new file mode 100644 index 00000000..a2794784 Binary files /dev/null and b/apps/docs/public/assets/pages/delete-block.gif differ diff --git a/apps/docs/public/assets/pages/edit-block.gif b/apps/docs/public/assets/pages/edit-block.gif new file mode 100644 index 00000000..fe5a8e4b Binary files /dev/null and b/apps/docs/public/assets/pages/edit-block.gif differ diff --git a/apps/docs/public/assets/pages/edit-sales-page.png b/apps/docs/public/assets/pages/edit-sales-page.png new file mode 100644 index 00000000..7266106e Binary files /dev/null and b/apps/docs/public/assets/pages/edit-sales-page.png differ diff --git a/apps/docs/public/assets/pages/edit-site-page.png b/apps/docs/public/assets/pages/edit-site-page.png new file mode 100644 index 00000000..b7483203 Binary files /dev/null and b/apps/docs/public/assets/pages/edit-site-page.png differ diff --git a/apps/docs/public/assets/pages/featured-block.png b/apps/docs/public/assets/pages/featured-block.png new file mode 100644 index 00000000..5959d604 Binary files /dev/null and b/apps/docs/public/assets/pages/featured-block.png differ diff --git a/apps/docs/public/assets/pages/featured.gif b/apps/docs/public/assets/pages/featured.gif new file mode 100644 index 00000000..ee8d988e Binary files /dev/null and b/apps/docs/public/assets/pages/featured.gif differ diff --git a/apps/docs/public/assets/pages/grid-add-item.png b/apps/docs/public/assets/pages/grid-add-item.png new file mode 100644 index 00000000..812b2161 Binary files /dev/null and b/apps/docs/public/assets/pages/grid-add-item.png differ diff --git a/apps/docs/public/assets/pages/grid-block-cta.png b/apps/docs/public/assets/pages/grid-block-cta.png new file mode 100644 index 00000000..97036708 Binary files /dev/null and b/apps/docs/public/assets/pages/grid-block-cta.png differ diff --git a/apps/docs/public/assets/pages/grid-block-items.png b/apps/docs/public/assets/pages/grid-block-items.png new file mode 100644 index 00000000..39bbd615 Binary files /dev/null and b/apps/docs/public/assets/pages/grid-block-items.png differ diff --git a/apps/docs/public/assets/pages/grid-block.png b/apps/docs/public/assets/pages/grid-block.png new file mode 100644 index 00000000..bee957fd Binary files /dev/null and b/apps/docs/public/assets/pages/grid-block.png differ diff --git a/apps/docs/public/assets/pages/grid-delete-item.png b/apps/docs/public/assets/pages/grid-delete-item.png new file mode 100644 index 00000000..6db3e528 Binary files /dev/null and b/apps/docs/public/assets/pages/grid-delete-item.png differ diff --git a/apps/docs/public/assets/pages/header-edit-link.png b/apps/docs/public/assets/pages/header-edit-link.png new file mode 100644 index 00000000..78bc9e3f Binary files /dev/null and b/apps/docs/public/assets/pages/header-edit-link.png differ diff --git a/apps/docs/public/assets/pages/header-link-add.png b/apps/docs/public/assets/pages/header-link-add.png new file mode 100644 index 00000000..8f5ee014 Binary files /dev/null and b/apps/docs/public/assets/pages/header-link-add.png differ diff --git a/apps/docs/public/assets/pages/hero-block-cta.png b/apps/docs/public/assets/pages/hero-block-cta.png new file mode 100644 index 00000000..a01913a7 Binary files /dev/null and b/apps/docs/public/assets/pages/hero-block-cta.png differ diff --git a/apps/docs/public/assets/pages/hero-block.png b/apps/docs/public/assets/pages/hero-block.png new file mode 100644 index 00000000..21471c5a Binary files /dev/null and b/apps/docs/public/assets/pages/hero-block.png differ diff --git a/apps/docs/public/assets/pages/move-block.gif b/apps/docs/public/assets/pages/move-block.gif new file mode 100644 index 00000000..52ce4b1b Binary files /dev/null and b/apps/docs/public/assets/pages/move-block.gif differ diff --git a/apps/docs/public/assets/pages/newsletter-signup-block-working.gif b/apps/docs/public/assets/pages/newsletter-signup-block-working.gif new file mode 100644 index 00000000..18f28176 Binary files /dev/null and b/apps/docs/public/assets/pages/newsletter-signup-block-working.gif differ diff --git a/apps/docs/public/assets/pages/newsletter-signup-block.png b/apps/docs/public/assets/pages/newsletter-signup-block.png new file mode 100644 index 00000000..e52485f0 Binary files /dev/null and b/apps/docs/public/assets/pages/newsletter-signup-block.png differ diff --git a/apps/docs/public/assets/pages/page-blocks.png b/apps/docs/public/assets/pages/page-blocks.png new file mode 100644 index 00000000..06f478ce Binary files /dev/null and b/apps/docs/public/assets/pages/page-blocks.png differ diff --git a/apps/docs/public/assets/pages/page-builder-sections.png b/apps/docs/public/assets/pages/page-builder-sections.png new file mode 100644 index 00000000..94eef080 Binary files /dev/null and b/apps/docs/public/assets/pages/page-builder-sections.png differ diff --git a/apps/docs/public/assets/pages/rich-text-create-hyperlink.gif b/apps/docs/public/assets/pages/rich-text-create-hyperlink.gif new file mode 100644 index 00000000..2c82c558 Binary files /dev/null and b/apps/docs/public/assets/pages/rich-text-create-hyperlink.gif differ diff --git a/apps/docs/public/assets/pages/rich-text-styling.gif b/apps/docs/public/assets/pages/rich-text-styling.gif new file mode 100644 index 00000000..3e6ccbb7 Binary files /dev/null and b/apps/docs/public/assets/pages/rich-text-styling.gif differ diff --git a/apps/docs/public/assets/products/sections-on-course-viewer.png b/apps/docs/public/assets/products/sections-on-course-viewer.png new file mode 100644 index 00000000..2a15ae67 Binary files /dev/null and b/apps/docs/public/assets/products/sections-on-course-viewer.png differ diff --git a/apps/docs/public/assets/products/sections-on-product-editor.png b/apps/docs/public/assets/products/sections-on-product-editor.png new file mode 100644 index 00000000..d836009f Binary files /dev/null and b/apps/docs/public/assets/products/sections-on-product-editor.png differ diff --git a/apps/docs/public/assets/products/sections-on-sales-page.png b/apps/docs/public/assets/products/sections-on-sales-page.png new file mode 100644 index 00000000..268ddd5a Binary files /dev/null and b/apps/docs/public/assets/products/sections-on-sales-page.png differ diff --git a/apps/docs/public/assets/schools/custom-domain-expand.png b/apps/docs/public/assets/schools/custom-domain-expand.png new file mode 100644 index 00000000..ce286356 Binary files /dev/null and b/apps/docs/public/assets/schools/custom-domain-expand.png differ diff --git a/apps/docs/public/assets/schools/dashboard.png b/apps/docs/public/assets/schools/dashboard.png new file mode 100644 index 00000000..86c2aef6 Binary files /dev/null and b/apps/docs/public/assets/schools/dashboard.png differ diff --git a/apps/docs/public/assets/schools/delete-button.png b/apps/docs/public/assets/schools/delete-button.png new file mode 100644 index 00000000..a5b7930e Binary files /dev/null and b/apps/docs/public/assets/schools/delete-button.png differ diff --git a/apps/docs/public/assets/schools/delete-school-popup.png b/apps/docs/public/assets/schools/delete-school-popup.png new file mode 100644 index 00000000..6a483bbd Binary files /dev/null and b/apps/docs/public/assets/schools/delete-school-popup.png differ diff --git a/apps/docs/public/assets/schools/dns-settings-custom-domain.png b/apps/docs/public/assets/schools/dns-settings-custom-domain.png new file mode 100644 index 00000000..d9f06d76 Binary files /dev/null and b/apps/docs/public/assets/schools/dns-settings-custom-domain.png differ diff --git a/apps/docs/public/assets/schools/new-school.png b/apps/docs/public/assets/schools/new-school.png new file mode 100644 index 00000000..55f4f4ea Binary files /dev/null and b/apps/docs/public/assets/schools/new-school.png differ diff --git a/apps/docs/public/assets/schools/update-custom-domain.png b/apps/docs/public/assets/schools/update-custom-domain.png new file mode 100644 index 00000000..7e16ce6b Binary files /dev/null and b/apps/docs/public/assets/schools/update-custom-domain.png differ diff --git a/apps/docs/public/assets/users/ban-user.png b/apps/docs/public/assets/users/ban-user.png new file mode 100644 index 00000000..2e773fd4 Binary files /dev/null and b/apps/docs/public/assets/users/ban-user.png differ diff --git a/apps/docs/public/assets/users/user-details.png b/apps/docs/public/assets/users/user-details.png new file mode 100644 index 00000000..495165b4 Binary files /dev/null and b/apps/docs/public/assets/users/user-details.png differ diff --git a/apps/docs/public/assets/users/user-filtering-by-permissions.png b/apps/docs/public/assets/users/user-filtering-by-permissions.png new file mode 100644 index 00000000..47d08e63 Binary files /dev/null and b/apps/docs/public/assets/users/user-filtering-by-permissions.png differ diff --git a/apps/docs/public/assets/users/user-permission-editor.png b/apps/docs/public/assets/users/user-permission-editor.png new file mode 100644 index 00000000..4fe31ecf Binary files /dev/null and b/apps/docs/public/assets/users/user-permission-editor.png differ diff --git a/apps/docs/public/assets/users/users.png b/apps/docs/public/assets/users/users.png new file mode 100644 index 00000000..27f1befb Binary files /dev/null and b/apps/docs/public/assets/users/users.png differ diff --git a/apps/docs/src/components/HeadCommon.astro b/apps/docs/src/components/HeadCommon.astro index 5f87486d..b3fc6ac5 100644 --- a/apps/docs/src/components/HeadCommon.astro +++ b/apps/docs/src/components/HeadCommon.astro @@ -45,3 +45,12 @@ import "../styles/index.css"; gtag('js', new Date()); gtag('config', 'G-TEL60V1WM9'); --> + + + diff --git a/apps/docs/src/components/HeadSEO.astro b/apps/docs/src/components/HeadSEO.astro index 0df9230d..4029a2c5 100644 --- a/apps/docs/src/components/HeadSEO.astro +++ b/apps/docs/src/components/HeadSEO.astro @@ -50,3 +50,12 @@ const imageAlt = frontmatter.image?.alt ?? OPEN_GRAPH.image.alt; https://www.npmjs.com/package/schema-dts seems like a great resource for implementing this. Even better, there's a React component that integrates with `schema-dts`: https://github.com/google/react-schemaorg --> + + + diff --git a/apps/docs/src/config.ts b/apps/docs/src/config.ts index ca4271e4..7a7f1425 100644 --- a/apps/docs/src/config.ts +++ b/apps/docs/src/config.ts @@ -45,11 +45,58 @@ export type Sidebar = Record< >; export const SIDEBAR: Sidebar = { en: { - "Start here": [ - { text: "Getting started", link: "en/introduction" }, - { text: "Self hosting", link: "en/self-hosting" }, + "Getting started": [ + { text: "What is CourseLit", link: "en/introduction" }, + { text: "Features", link: "en/features" }, // { text: 'Page 3', link: 'en/page-3' }, ], - Courses: [{ text: "Add quiz", link: "en/lessons/add-quiz" }], + "Online courses": [ + { text: "Introduction", link: "en/courses/introduction" }, + { text: "Create a course", link: "en/courses/create" }, + { text: "Publish", link: "en/courses/publish" }, + { text: "Set a price", link: "en/courses/set-a-price-for-product" }, + { text: "Control visibility", link: "en/courses/visibility" }, + { text: "Add content", link: "en/courses/add-content" }, + { text: "Manage sections", link: "en/products/section" }, + ], + "Digital downloads": [ + { text: "Introduction", link: "en/downloads/introduction" }, + { text: "Create a download", link: "en/downloads/create" }, + { text: "Set a price", link: "en/downloads/set-a-price" }, + { text: "Lead magnet", link: "en/downloads/lead-magnet" }, + ], + Pages: [ + { text: "Introduction", link: "en/pages/introduction" }, + { text: "Page Blocks", link: "en/pages/blocks" }, + { text: "Edit page", link: "en/pages/edit" }, + { text: "Header", link: "en/pages/header" }, + { text: "Rich text", link: "en/pages/rich-text" }, + { text: "Featured", link: "en/pages/featured" }, + { text: "Banner", link: "en/pages/banner" }, + { text: "Hero", link: "en/pages/hero" }, + { text: "Grid", link: "en/pages/grid" }, + { text: "Content", link: "en/pages/content" }, + { text: "Newsletter signup", link: "en/pages/newsletter-signup" }, + { text: "Footer", link: "en/pages/footer" }, + ], + Blog: [ + { text: "Introduction", link: "en/blog/introduction" }, + { text: "Publish a blog", link: "en/blog/publish" }, + ], + School: [ + { text: "Introduction", link: "en/schools/introduction" }, + { text: "Create a school", link: "en/schools/create" }, + { text: "Use custom domain", link: "en/schools/add-custom-domain" }, + { text: "Delete a school", link: "en/schools/delete" }, + ], + Users: [ + { text: "Introduction", link: "en/users/introduction" }, + { text: "Manage users", link: "en/users/manage" }, + { text: "User permissions", link: "en/users/permissions" }, + ], + "Self hosting": [ + { text: "Why self host?", link: "en/self-hosting/introduction" }, + { text: "Self hosting guide", link: "en/self-hosting/self-host" }, + ], }, }; diff --git a/apps/docs/src/pages/en/blog/introduction.md b/apps/docs/src/pages/en/blog/introduction.md new file mode 100644 index 00000000..d49a6546 --- /dev/null +++ b/apps/docs/src/pages/en/blog/introduction.md @@ -0,0 +1,21 @@ +--- +title: Blog +description: Blog +layout: ../../../layouts/MainLayout.astro +--- + +CourseLit comes with an integrated blog where you can post articles and updates about your school. + +Your school's blog is available at `/blog`. + +Following is what it looks like. + +![Blog preview](/assets/blog/blog.png) + +## Next step + +[Publish your first blog in 2 minutes](/en/blog/publish) + +## Stuck somewhere? + +We are always here for you. Come chat with us in our Discord channel or send a tweet at @CourseLit. diff --git a/apps/docs/src/pages/en/blog/publish.md b/apps/docs/src/pages/en/blog/publish.md new file mode 100644 index 00000000..c994c82b --- /dev/null +++ b/apps/docs/src/pages/en/blog/publish.md @@ -0,0 +1,40 @@ +--- +title: Publish a blog +description: Publish a blog +layout: ../../../layouts/MainLayout.astro +--- + +Before you can start publishing your blogs, you need to set up a school. [Follow this guide](/en/schools/create) to get yourself a free account and create a school, if you haven't already. + +Once you are signed in using an admin account, go to the dashboard by clicking on the `Dashboard` option from the drop down menu located on the top right corner of your school. + +The dashboard looks like the following. + +![Products dashboard](/assets/courses/product-dashboard.png) + +Now you are ready to write your first blog. Let's see how. + +## Steps to write a blog + +1. In the `Dashboard`, click on `Blogs` from the left side menu. +2. Click on the `New blog` button as shown below. + +![New blog](/assets/blog/new-blog.png) + +3. In the `New blog` screen, enter the title of your blog and click `continue`. +4. In the editor screen, add the body of your blog post and click `Save` as shown below. + +![Edit blog](/assets/blog/edit-blog.png) + +5. Now that you have written the content of your blog, it's time to publish. +6. Click on the `Publish` tab and then hit `Publish` as shown below. This will make your blog visible on the `/blog` route. + +![Publish blog](/assets/blog/publish-blog.png) + +7. If you want to keep the blog published but do not want it to appear on the `/blog` route, set the `Visibility` to `Unlisted` as shown below. + +![Blog visibility](/assets/blog/blog-visibility-unlisted.png) + +## Stuck somewhere? + +We are always here for you. Come chat with us in our Discord channel or send a tweet at @CourseLit. diff --git a/apps/docs/src/pages/en/courses/add-content.md b/apps/docs/src/pages/en/courses/add-content.md new file mode 100644 index 00000000..d4033d65 --- /dev/null +++ b/apps/docs/src/pages/en/courses/add-content.md @@ -0,0 +1,65 @@ +--- +title: Add content to your course +description: Add content to your course +layout: ../../../layouts/MainLayout.astro +--- + +CourseLit uses a concept called `Lesson`. It is very similar to what we generally see in books i.e. A large piece of information divides into smaller chunks called lessons. + +Similarly, you can break down you course into `Lessons` and group the lessons into [Sections](/en/products/section). + +## Lessons + +CourseLit supports eight types of lessons, which are as follows. + +1. Text + + For sharing textual content. + +2. Video + + For sharing video lectures. + +3. Audio + + For sharing quick audio recordings. + +4. PDF + + For sharing premade resources. + +5. Embed + + For sharing external links like YouTube videos etc. + +6. File + + For sharing binary files like a zip file containing an assingment with the students. + +7. Quiz + + For quizzing your students. You can create graded and non-graded quizzes. + + See the [guide to add a quiz](/en/lessons/add-quiz). + +### Steps to add a new lesson + +1. From the `Products` section in the dashboard, select your product to open it in the editing mode. +2. Go to the `Content` tab. + +![Add content](/assets/courses/add-content.png) + +3. Click on the `New Lesson` button as shown above. +4. On the `New Lesson` screen, add relevant details as shown below. + +![Lesson settings](/assets/courses/lesson-settings.png) + +> For text lesson, you will be presented with a text box and for video/audio/file lesson you will be presented with a file selector option. 5. If you want to allow free access to the the lesson despite the pricing of the product, flip the `Preview` switch on (as specified as #4 in the above screenshot). + +This can be used as a great way to provide a sneak peak into your course. + +6. Click `Save`. + +## Stuck somewhere? + +We are always here for you. Come chat with us in our Discord channel or send a tweet at @CourseLit. diff --git a/apps/docs/src/pages/en/courses/create.md b/apps/docs/src/pages/en/courses/create.md new file mode 100644 index 00000000..319f85f9 --- /dev/null +++ b/apps/docs/src/pages/en/courses/create.md @@ -0,0 +1,63 @@ +--- +title: Create a course +description: Create a course +layout: ../../../layouts/MainLayout.astro +--- + +Before you can start building your course, you need to set up a school. [Follow this guide](/en/schools/create) to get yourself a free account and create a school, if you haven't already. + +Once you are signed in using an admin account, go to the dashboard by clicking on the `Dashboard` option from the drop down menu located on the top right corner of your school. + +The dashboard looks like the following. + +![Products dashboard](/assets/courses/product-dashboard.png) + +> Both courses and digital downloads are categorized as products and will be shown under the `Products` screen. + +## Steps to create an online course + +We will create a free course for your audience. You can always make it a paid one once you understand the process. + +1. Click on the `New product` button. +2. Set a title and select `Course` from the dropdown. Click continue. + +![New product](/assets/courses/new-product.png) + +3. Once your course is created, you will get to see the following screen. + +![Add content](/assets/courses/course-content.png) + +4. Let's add some content in your course. Click on the `New lesson` button to create a lesson. +5. On the `New Lesson` screen, select `Text` from the `Type` dropdown since we want to create a text based lesson. + +![Add lesson](/assets/courses/add-lesson.png) + +6. Add the title and the main content of the text lesson. Click `Save`. + +![Add lesson details](/assets/courses/add-lesson-details.png) + +Now that we have added some content to the course, it's time to publish. By default, any new product is in the `Draft` state. + +7. Click on the `Publish` tab. + +![Publish tab](/assets/courses/publish-tab.png) + +8. Click on the `Publish` button to make your course available to the users. + +![Publish course](/assets/courses/publish.png) + +9. Voila! Your course is now live! You can checkout its sales page by clicking the three dots menu on the right and then selecting the `View page` option. + +![View sales page](/assets/courses/view-page.png) + +10. This is how your sales will look initially. It is barebones as of now. Visit our page builder guide to make it enticing. + +![Course sales page](/assets/courses/course-sales-page.png) + +11. To share your course with your audience, simply copy the URL and share it. When your users click on the `Buy now` button, they will be redirected to the login screen so that they can add the course into their accounts. + +[Check out the guide on how to track students](/en/courses/reports) + +## Stuck somewhere? + +We are always here for you. Come chat with us in our Discord channel or send a tweet at @CourseLit. diff --git a/apps/docs/src/pages/en/courses/introduction.md b/apps/docs/src/pages/en/courses/introduction.md new file mode 100644 index 00000000..a5ef797e --- /dev/null +++ b/apps/docs/src/pages/en/courses/introduction.md @@ -0,0 +1,37 @@ +--- +title: Online courses +description: Online courses +layout: ../../../layouts/MainLayout.astro +--- + +An online course is a great way to share your knowledge with the world and earn a living while doing that. + +[Create your first course under 5 minutes](/en/courses/create) + +### Why CourseLit? + +CourseLit has got all the necessary tools to build and sell your online course. + +#### Structure your course the way you like + +Use `lessons` and `sections` to structure the course in a way which makes the most sense to your users. + +#### Unlimited file hosting + +Host videos and other files directly on CourseLit, hence saving yourself from the troubles of hosting resources yourself. + +#### Sales page + +Get a beautiful and responsive sales page for your course which you can customize using our powerful no-code page builder. + +#### Track course's performance + +We have got you covered. Track how many copies you have sold, how your students are performing and much more. + +### Start building yours! + +[Create your course under 5 minutes](/en/courses/create) + +## Stuck somewhere? + +We are always here for you. Come chat with us in our Discord channel or send a tweet at @CourseLit. diff --git a/apps/docs/src/pages/en/courses/publish.md b/apps/docs/src/pages/en/courses/publish.md new file mode 100644 index 00000000..6c601be2 --- /dev/null +++ b/apps/docs/src/pages/en/courses/publish.md @@ -0,0 +1,20 @@ +--- +title: Publishing a product +description: Publishing a product +layout: ../../../layouts/MainLayout.astro +--- + +When you first create your product, it is in `Draft` state. In order to make it available to your users, you need to publish it. + +## Steps to publish your product + +1. From the `Products` section in the dashboard, select your product to open it in the editing mode. +2. Go to the `Publish` tab. + +![Publishing a product](/assets/courses/publishing.png) + +3. Click the publish button to toggle the publish status of your product as shown above. + +## Stuck somewhere? + +We are always here for you. Come chat with us in our Discord channel or send a tweet at @CourseLit. diff --git a/apps/docs/src/pages/en/courses/set-a-price-for-product.md b/apps/docs/src/pages/en/courses/set-a-price-for-product.md new file mode 100644 index 00000000..52dde595 --- /dev/null +++ b/apps/docs/src/pages/en/courses/set-a-price-for-product.md @@ -0,0 +1,37 @@ +--- +title: Set a price of your product +description: Set a price of your product +layout: ../../../layouts/MainLayout.astro +--- + +CourseLit makes it easy for you to earn a living by sharing your knowledge. CourseLit offers two types of pricing strategies. + +1. Free +2. Paid + +## Set up a free course + +Free is the default pricing strategy. When you first create the course, the pricing is set to free. + +You don't have to do anything. + +## Set up a paid course + +**In order to get paid for your offerings, you first need to [setup payments](). Currently, CourseLit offers [Stripe](https://stripe.com) integration.** + +### Steps + +1. From the `Products` section in the dashboard, select your product to open it in the editing mode. +2. Go to the `Pricing` tab. + +![Pricing dropdown](/assets/courses/paid-dropdown.png) + +3. Set the price and click `Save`. + +![Set the price](/assets/courses/set-price.png) + +4. That's it! Your course is a paid one now. You can visit its sales page to see how it looks to your audience. + +## Stuck somewhere? + +We are always here for you. Come chat with us in our Discord channel or send a tweet at @CourseLit. diff --git a/apps/docs/src/pages/en/courses/visibility.md b/apps/docs/src/pages/en/courses/visibility.md new file mode 100644 index 00000000..b07076b9 --- /dev/null +++ b/apps/docs/src/pages/en/courses/visibility.md @@ -0,0 +1,22 @@ +--- +title: Controlling the visibility of your product +description: Controlling the visibility of your product +layout: ../../../layouts/MainLayout.astro +--- + +If you do not want your product to show up on the `/courses` route, you can do that by using the visibility toggle. By default, your products are `Unlisted` i.e. they do not appear under courses list visible on `/courses` route. + +Your audience will be able to access the course via a direct link only. + +## Steps to make your product listed + +1. From the `Products` section in the dashboard, select your product to open it in the editing mode. +2. Go to the `Publish` tab. + +![Visibility](/assets/courses/visibility.png) + +3. Click the `Unlisted` button to toggle the visibility of your product as shown above. + +## Stuck somewhere? + +We are always here for you. Come chat with us in our Discord channel or send a tweet at @CourseLit. diff --git a/apps/docs/src/pages/en/downloads/create.md b/apps/docs/src/pages/en/downloads/create.md new file mode 100644 index 00000000..e8ab84a8 --- /dev/null +++ b/apps/docs/src/pages/en/downloads/create.md @@ -0,0 +1,59 @@ +--- +title: Create a digital download +description: Create a digital download +layout: ../../../layouts/MainLayout.astro +--- + +Before you can start building your digital download, you need to set up a school. [Follow this guide](/en/schools/create) to get yourself a free account and create a school, if you haven't already. + +Once you are signed in using an admin account, go to the dashboard by clicking on the `Dashboard` option from the drop down menu located on the top right corner of your school. + +The dashboard looks like the following. + +![Products dashboard](/assets/courses/product-dashboard.png) + +> Both courses and digital downloads are categorized as products and will be shown under the `Products` screen. + +## Steps to create a digital download + +We will create a free download for your audience. You can always make it a paid one once you understand the process. + +1. Click on the `New product` button. +2. Set a title and select `Download` from the dropdown. Click continue. + +![New product](/assets/downloads/product-type-selection.png) + +3. Once your download is created, you will get to see the following screen. + +![Download editor](/assets/downloads/download-editor.png) + +4. Let's add some content to your download. Click on the `New lesson` button to add a new file. +5. On the `New Lesson` screen, select a file, turn off the preview toggle and click `Save`. + +![Add content](/assets/downloads/add-content.png) + +Now that we have added some content to the course, it's time to publish. By default, any new product is in the `Draft` state. + +7. Click on the `Publish` tab. + +![Publish tab](/assets/downloads/publish-tab.png) + +8. Click on the `Publish` button to make your digital download available to the users. + +![Publish downloads](/assets/downloads/publish.png) + +9. Voila! Your digital download is now live! You can checkout its sales page by clicking the three dots menu on the right and then selecting the `View page` option. + +![View sales page](/assets/downloads/view-sales-page.png) + +10. This is how your sales will look initially. It is barebones as of now. Visit our page builder guide to make it enticing. + +![Course sales page](/assets/downloads/digital-downloads-sales-page.png) + +11. To share your digital download with your audience, simply copy the URL and share it. When your users click on the `Buy now` button, they will be redirected to the login screen so that they can add the course into their accounts. + +[Check out the guide on how to track stats for your digital download](/en/downloads/reports) + +## Stuck somewhere? + +We are always here for you. Come chat with us in our Discord channel or send a tweet at @CourseLit. diff --git a/apps/docs/src/pages/en/downloads/introduction.md b/apps/docs/src/pages/en/downloads/introduction.md new file mode 100644 index 00000000..c59faa07 --- /dev/null +++ b/apps/docs/src/pages/en/downloads/introduction.md @@ -0,0 +1,39 @@ +--- +title: Digital downloads +description: Digital downloads +layout: ../../../layouts/MainLayout.astro +--- + +A digital download is a great way to share your knowledge with the world and earn a living while doing that. You can offer your digital downloads for a price or for free. + +Offering something for free in return of an email is a good way to build an email list which you can sell to later on. This is generally known as **Lead Magnet**. Using digital downloads, you can easily create lead magnets. + +[Create your first digital download under 5 minutes](/en/downloads/create) + +### Why CourseLit? + +CourseLit has got all the necessary tools to build and sell your digital downloads. + +#### Structure your course the way you like + +Use `lessons` and `sections` to structure the course in a way which makes the most sense to your users. + +#### Unlimited file hosting + +Host videos and other files directly on CourseLit, hence saving yourself from the troubles of hosting resources yourself. + +#### Sales page + +Get a beautiful and responsive sales page for your digital download which you can customize using our powerful no-code page builder. + +#### Track performance + +We have got you covered. Track how many copies you have sold, how many people have downloaded your product and much more. + +### Start building yours! + +[Create your digital download under 5 minutes](/en/courses/create) + +## Stuck somewhere? + +We are always here for you. Come chat with us in our Discord channel or send a tweet at @CourseLit. diff --git a/apps/docs/src/pages/en/downloads/lead-magnet.md b/apps/docs/src/pages/en/downloads/lead-magnet.md new file mode 100644 index 00000000..d62b90ad --- /dev/null +++ b/apps/docs/src/pages/en/downloads/lead-magnet.md @@ -0,0 +1,23 @@ +--- +title: Create a lead magnet +description: Create a lead magnet +layout: ../../../layouts/MainLayout.astro +--- + +Offering something for free in return of an email is a good way to build an email list which you can sell to later on. + +This is generally known as **Lead Magnet**. Using digital downloads, you can easily create lead magnets. + +There are two ways to create lead magnets using CourseLit which are as follows. + +1. Hosting your downloads on CourseLit + +For the you can [set the pricing as `free email delivery`](/en/downloads/set-a-price#set-up-free-email-delivery). + +2. Hosting your downloads elsewhere i.e. on Google Drive, Dropbox etc. + +[Use the `banner` block](/en/pages/banner#creating-a-lead-magnet) to embed a direct download link which becomes visible only after your users submit their emails. + +## Stuck somewhere? + +We are always here for you. Come chat with us in our Discord channel or send a tweet at @CourseLit. diff --git a/apps/docs/src/pages/en/downloads/set-a-price.md b/apps/docs/src/pages/en/downloads/set-a-price.md new file mode 100644 index 00000000..fecf58bd --- /dev/null +++ b/apps/docs/src/pages/en/downloads/set-a-price.md @@ -0,0 +1,55 @@ +--- +title: Set a price of your product +description: Set a price of your product +layout: ../../../layouts/MainLayout.astro +--- + +CourseLit makes it easy for you to earn a living by sharing your knowledge. CourseLit offers two types of pricing strategies for digital downloads. + +1. Free +2. Paid +3. Free email delivery + +## Set up a free download + +Free is the default pricing strategy. When you first create the download, the pricing is set to free. + +You don't have to do anything. + +## Set up a paid download + +**In order to get paid for your product, you first need to [setup payments](). Currently, CourseLit offers [Stripe](https://stripe.com) integration.** + +### Steps + +1. From the `Products` section in the dashboard, select your product to open it in the editing mode. +2. Go to the `Pricing` tab. + +![Pricing dropdown](/assets/downloads/price-dropdown.png) + +3. Set the price and click `Save`. + +![Set the price](/assets/downloads/pricing-paid.png) + +4. That's it! Your course is a paid one now. You can visit its sales page to see how it looks to your audience. + +## Set up free email delivery + +Your users can get a download for free in return of their email addresses. It is commonly known as **Lead magnets**. + +### Steps + +1. From the `Products` section in the dashboard, select your product to open it in the editing mode. +2. Go to the `Pricing` tab. + +![Pricing dropdown](/assets/downloads/price-dropdown.png) + +3. Select `Free email delivery` and click `Save`. + +![Set the price as email delivery](/assets/downloads/free-email-delivery.png) + +4. That's it! Your download will be delivered to your audience over emails. You can visit its sales page to see how it looks to your audience. + +## Stuck somewhere? + +We are always here for you. Come chat with us in our Discord channel or send a tweet at @CourseLit. diff --git a/apps/docs/src/pages/en/features.md b/apps/docs/src/pages/en/features.md new file mode 100644 index 00000000..aa28027f --- /dev/null +++ b/apps/docs/src/pages/en/features.md @@ -0,0 +1,70 @@ +--- +title: Features +description: Features +layout: ../../layouts/MainLayout.astro +--- + +
+
+ +
Online courses
+

+ Create interactive online courses peppered with text, images, videos, files and quizzes. +

+
+
+
+ +
Digital downloads
+

+Offer prebuilt assets like Photoshop templates etc., as one time purchases or as free lead magnets. +

+
+
+
+ +
Website
+

+Get a free website which you can customize using our powerful page builder. +

+
+
+
+ +
Blog
+

+Publish your blogs under the same roof as your courses and digital downloads, using our in-built tools. +

+
+
+
+ +### Other noteworthy features + +##### Student Management + +Track your students' progress, restrict access to the platform and more. + +##### Powerful user management + +Bring your entire team to the platform and control what they can do using our permission editor. + +##### Payment integration + +Collect payments by integrating Stripe. + +##### Third Party Integrations + +Integrate analytics, chatbots etc., by injecting third party code snippets. + +##### Self-hosted + +Host CourseLit on your own server to claim total data ownership. + +##### Open Source + +Read and modify the source code to build your own variations. + +## Stuck somewhere? + +We are always here for you. Come chat with us in our Discord channel or send a tweet at @CourseLit. diff --git a/apps/docs/src/pages/en/introduction.md b/apps/docs/src/pages/en/introduction.md index f8c849d5..4c364293 100644 --- a/apps/docs/src/pages/en/introduction.md +++ b/apps/docs/src/pages/en/introduction.md @@ -6,18 +6,13 @@ layout: ../../layouts/MainLayout.astro ## What is CourseLit? -CourseLit is a **learning management system** (aka LMS) for everyone who wants to build and sell courses (or digital downloads) on her own branded website. +CourseLit is a **Learning Management System** for modern day creators who want to sell courses and digital downloads from their own websites. -## Key Features +## Features -- **Course Authoring**: Use text, images, videos, downloadable files to create full featured courses. -- **Student Management**: Track your students' progress, restrict access to the platform and more. -- **Integrated Blogs**: Blog on the same website where your courses are hosted. -- **Payment integration**: Collect payments by integrating Stripe. -- **Page Builder**: Customize your website and product pages to your heart's content. -- **Third Party Integrations**: Integrate analytics, chatbots etc., by injecting third party code snippets. -- **Self-hosted**: Host CourseLit on your own server to claim total data ownership. -- **Open Source**: Read and modify the source code to build your own variations. +CourseLit has got everything you'd ever need to successfully run your online teaching business. + +See all the features [here](/en/features). ## Try CourseLit @@ -25,9 +20,9 @@ Visit courselit.app to use t ## Self Hosting -CourseLit is an open-source LMS and can be hosted on a server where you control everything. If data ownership is at center of your business, self-hosting CourseLit is a way to go. +CourseLit is an open-source LMS and can be hosted on a server where you control everything. If data ownership is at the center of your business, self-hosting CourseLit is a way to go. -Follow [our guide](/en/self-hosting) for full, step by step instructions for hosting CourseLit on your server. +Follow [our guide](/en/self-hosting/introduction) for full, step by step instructions for hosting CourseLit on your server. ## Join Our Community diff --git a/apps/docs/src/pages/en/pages/banner.md b/apps/docs/src/pages/en/pages/banner.md new file mode 100644 index 00000000..d260cc64 --- /dev/null +++ b/apps/docs/src/pages/en/pages/banner.md @@ -0,0 +1,44 @@ +--- +title: Banner block +description: Banner block +layout: ../../../layouts/MainLayout.astro +--- + +Banner block is the default block which shows the basic information about the page i.e. on sales page it shows the product's details like its title, description, featured image and pricing and on the homepage it shows your school's details like its name and subtitle. + +## Overriding details + +By default, the banner block shows the details from your product or school depending upon which type of page it is displayed on. + +These details however can be overridden on the block level. Following is how. + +1. Click on the banner to reveal its settings. +2. Change the relevant details from the `Basic` section. + +![Banner basic details](/assets/pages/banner-basic-details.png) + +## Creating a lead magnet + +The banner block can also be used as a lead magnet form. The pricing of your product should be set to `Free email delivery`. Following are the steps. + +### Steps + +1. Add the `Banner` block on your page (if not already). + +![Banner add](/assets/pages/add-banner.png) + +2. In the banner's settings screen, scroll to the `Call to action` (aka CTA) section. + ![Banner call to action](/assets/pages/banner-cta.png) + +3. In the CTA section, put the asset link which you want to share with your audience in the `Success message` text box. + ![Banner call to action download link](/assets/pages/banner-cta-download-link.png) + +> Make sure the link you are sharing here is open to public and can be easily accessed. + +4. Publish the page. + +Now, whenever your users enter their emails and press submit, they will get to see the text you entered in the `Success message` text box. + +## Stuck somewhere? + +We are always here for you. Come chat with us in our Discord channel or send a tweet at @CourseLit. diff --git a/apps/docs/src/pages/en/pages/blocks.md b/apps/docs/src/pages/en/pages/blocks.md new file mode 100644 index 00000000..8016320f --- /dev/null +++ b/apps/docs/src/pages/en/pages/blocks.md @@ -0,0 +1,45 @@ +--- +title: Page blocks +description: Page blocks +layout: ../../../layouts/MainLayout.astro +--- + +Every page in CourseLit is made up of various blocks, stacked in a top to down fashion. Each block serves a unique purpose and can be customized. + +The following screenshot shows [Header](/en/pages/header), [Banner](/en/pages/banner), [Content](/en/pages/content) and [Grid](/en/pages/grid) blocks in action. Different blocks are highlighted in different colors. + +![CourseLit page blocks](/assets/pages/page-blocks.png) + +## Types of page blocks + +CourseLit offers a wide range of page block so that you can build all sorts of web pages. + +1. [Header](/en/pages/header) +2. [Rich text](/en/pages/rich-text) +3. [Featured](/en/pages/featured) +4. [Banner](/en/pages/banner) +5. [Hero](/en/pages/hero) +6. [Grid](/en/pages/grid) +7. [Content](/en/pages/content) +8. [Newsletter signup](/en/pages/newsletter-signup) +9. [Footer](/en/pages/footer) + +## Shared blocks + +There are certain page blocks which are shared among all the pages. + +> If you change the styling of these blocks, it will be immediately published (i.e. without even pressing the `Publish` button) and will affect all the pages where these blocks are used. + +Following are the shared page blocks. + +1. [Header](/en/pages/header) +2. [Newsletter signup](/en/pages/newsletter-signup) +3. [Footer](/en/pages/footer) + +## Next steps + +Now that you have learnt about page blocks, it is time to learn how to use those in your pages. See our [edit a page](/en/pages/edit-page) guide for details. + +## Stuck somewhere? + +We are always here for you. Come chat with us in our Discord channel or send a tweet at @CourseLit. diff --git a/apps/docs/src/pages/en/pages/content.md b/apps/docs/src/pages/en/pages/content.md new file mode 100644 index 00000000..48108f0a --- /dev/null +++ b/apps/docs/src/pages/en/pages/content.md @@ -0,0 +1,23 @@ +--- +title: Content block +description: Content block +layout: ../../../layouts/MainLayout.astro +--- + +> This block can only be added to the products' sales pages. + +This block shows the content of your product i.e. Sections and Lessons in your product. Using this, you can show the index of what your product offers. + +Following is how it looks on a page. + +![Content block](/assets/pages/content-block.png) + +There are two sections with two lessons each in the product demonstrated above. + +Your audience can directly click on the lessons to see it on the course viewer. The preview lessons are indicated distinctly so that your audience can easily checkout the free parts of your product. + +![Content block preview](/assets/pages/content-block-preview.gif) + +## Stuck somewhere? + +We are always here for you. Come chat with us in our Discord channel or send a tweet at @CourseLit. diff --git a/apps/docs/src/pages/en/pages/edit.md b/apps/docs/src/pages/en/pages/edit.md new file mode 100644 index 00000000..47382171 --- /dev/null +++ b/apps/docs/src/pages/en/pages/edit.md @@ -0,0 +1,102 @@ +--- +title: Edit a page +description: Edit a page +layout: ../../../layouts/MainLayout.astro +--- + +Lets get acquainted with the user interface for CourseLit's no-code page builder. + +The following controls are highlighted in the screenshot below. + +1. Save status display + +Indicates when the page is getting saved. + +2. Done + +Once you are done with the editing, press this button to go back. + +3. Publish + +A button to promote the changes from draft to the live page. By default, all the changes are saved into a draft. + +4. Font selector + +Select font for your school + +5. Page selector + +Switch between pages to edit + +![CourseLit No-code Page Builder](/assets/pages/courselit-page-builder-controls.png) + +## Opening the page builder + +Before you can edit your page, you need to get to the page editor. Accessing the page editor depends upon what sort of page you are trying to edit. + +Let's see how. + +> All the edits you make to a page will be saved in a draft. In order to see the changes on a live page, you need to publish it. See the [publishing guide](#publish-page). + +### To edit a website page + +From `Dashboard`, go to `Settings` and click on `Edit site` as shown below. + +![Edit home page](/assets/pages/edit-site-page.png) + +### To edit a product's sales page + +From `Dashboard`, go to `Products`, select your product to open its editor, click on the triple dots menu and select `Edit page` as shown below. + +![Edit sales page](/assets/pages/edit-sales-page.png) + +## Add a block + +Adding new blocks to your pages is easy and effortless. Following are the steps. + +1. Once you've identified a place where you would like to add a new block, hover over the block just above it to reveal the `Add widget below` button and click it. + +This will reveal a left side panel displaying a list of blocks. + +2. From the left side panel, select the block you want to add. + +This will add the block to your page and open the block for editing in the left panel. + +Following is an animation showing the steps to add a rich text block to a sales page. + +![Add page block](/assets/pages/add-page-block.gif) + +## Move a block + +Rearranging a block is just a simple click of a button. Following are the steps. + +1. Hover over the block you want to shift up/down to reveal `Move up` and `Move down` buttons. +2. Click the appropriate button to shift your block as shown below. + +![Move a block](/assets/pages/move-block.gif) + +## Edit a block + +Simply click on the block you want to edit to reveal its settings. From there, you can customize its content and design as shown below. + +![Edit a block](/assets/pages/edit-block.gif) + +Once you are happy with the configuration of the block, click the `Done` button to dismiss the settings pane. + +## Delete a block + +Following are the step to delete a block. + +1. Click on the block you want to delete to reveal its settings in a left pane. +2. Scroll down to the very bottom of the settings. +3. Click on the `Delete` button. Click again on the `Sure?` button to delete the block as shown below. + +![Delete a block](/assets/pages/delete-block.gif) + +## Next step + +Explore all the blocks CourseLit has to offer. + +## Stuck somewhere? + +We are always here for you. Come chat with us in our Discord channel or send a tweet at @CourseLit. diff --git a/apps/docs/src/pages/en/pages/featured.md b/apps/docs/src/pages/en/pages/featured.md new file mode 100644 index 00000000..b1aea6ac --- /dev/null +++ b/apps/docs/src/pages/en/pages/featured.md @@ -0,0 +1,24 @@ +--- +title: Featured block +description: Featured block +layout: ../../../layouts/MainLayout.astro +--- + +If you want to show your other products on a page, the featured widget is the one to use. + +Following is how it looks on a page. + +![Featured block](/assets/pages/featured-block.png) + +## Add featured products on your page + +1. Add the `Featured` block on your page. See here for how to [add blocks](/en/pages/edit#add-a-block) to a page. +2. Go to the products section and select the products from the drop down list as shown below. + +![Featured block](/assets/pages/featured.gif) + +3. For deleting an entry from the featured list, click on the delete button against the entry in the products section (also demonstrated in the above screengrab). + +## Stuck somewhere? + +We are always here for you. Come chat with us in our Discord channel or send a tweet at @CourseLit. diff --git a/apps/docs/src/pages/en/pages/footer.md b/apps/docs/src/pages/en/pages/footer.md new file mode 100644 index 00000000..3501584f --- /dev/null +++ b/apps/docs/src/pages/en/pages/footer.md @@ -0,0 +1,13 @@ +--- +title: Footer block +description: Footer block +layout: ../../../layouts/MainLayout.astro +--- + +The footer block serves as the header of a page. It is used for housing secondary but essential stuff like links to terms and conditions, privacy policies etc.. This block **cannot be deleted** from a page. + +> WARNING: This is a [shared block](/en/pages/blocks#shared-page-blocks) so any changes to this block are instantaneously published and will be visible on **all pages** of your school. + +## Stuck somewhere? + +We are always here for you. Come chat with us in our Discord channel or send a tweet at @CourseLit. diff --git a/apps/docs/src/pages/en/pages/grid.md b/apps/docs/src/pages/en/pages/grid.md new file mode 100644 index 00000000..df3cfd18 --- /dev/null +++ b/apps/docs/src/pages/en/pages/grid.md @@ -0,0 +1,50 @@ +--- +title: Grid block +description: Grid block +layout: ../../../layouts/MainLayout.astro +--- + +A grid block comes handy when you want to show some sort of list. For example, features list or advantages etc. The list gets displayed in the grid format as shown below. + +![Grid block](/assets/pages/grid-block.png) + +## Add an item + +1. Click on the grid block to reveal its settings. +2. Scroll down to the `Items` section as shown below. + +![Grid block items](/assets/pages/grid-block-items.png) + +3. Click on the `Add new item` button as shown above. This will open up the item's editor. +4. Change the details as per your likings. See [customizing the call to action button](#customizing-the-call-to-action-button) guide to check how to customise item's call to action button. Once done, click on the `Done` button. + +![Grid block edit item](/assets/pages/grid-add-item.png) + +## Delete an item + +1. Click on the grid block to reveal its settings. +2. Scroll down to the `Items` section as shown below. + +![Grid block items](/assets/pages/grid-block-items.png) + +3. Click on the item you want to remove. This will open up the item's editor. +4. Click on the delete button to delete the item. +5. You will be taken back to the grid block's settings. + +## Customizing the call to action button + +1. Click on the grid block to reveal its settings. +2. Scroll to the `Call to action` section. + +![Grid block CTA](/assets/pages/grid-block-cta.png) + +3. In the button text field, add the text that will be visible on the button. +4. In the button action, enter the URL the user should be taken on upon click. + +a). If the URL is from the own school, use its relative form i.e. `/courses`. + +b). If the URL if from some external website, use the absolute (complete) URL i.e. `https://website.com/courses`. + +## Stuck somewhere? + +We are always here for you. Come chat with us in our Discord channel or send a tweet at @CourseLit. diff --git a/apps/docs/src/pages/en/pages/header.md b/apps/docs/src/pages/en/pages/header.md new file mode 100644 index 00000000..a8e06505 --- /dev/null +++ b/apps/docs/src/pages/en/pages/header.md @@ -0,0 +1,31 @@ +--- +title: Header block +description: Header block +layout: ../../../layouts/MainLayout.astro +--- + +The header block serves as the header of a page. It is used for housing site's navigation etc. This block cannot be deleted from a page. + +> WARNING: This is a [shared block](/en/pages/blocks#shared-page-blocks) so any changes to this block are instantaneously published and will be visible on **all pages** of your school. + +## Adding links + +You can add navigation links by following the steps below. + +1. Click on the header block to reveal its settings side pane. +2. Click on the `Add new link` button in the `Links` section. This will add a new `Link` item as shown below. + ![Header add link](/assets/pages/header-link-add.png) + +You will also see the newly added link on the header itself. + +3. Click on the pencil icon against the newly added link to edit it as shown above. +4. Change the label (displayed at text on the header block) and the URL (where the user should be taken to upon clicking the label on the header) and click `Done` to save. + ![Header edit link](/assets/pages/header-edit-link.png) + +## Design + +The design section gives you access to all the settings to customize the header's look. + +## Stuck somewhere? + +We are always here for you. Come chat with us in our Discord channel or send a tweet at @CourseLit. diff --git a/apps/docs/src/pages/en/pages/hero.md b/apps/docs/src/pages/en/pages/hero.md new file mode 100644 index 00000000..77f3cb82 --- /dev/null +++ b/apps/docs/src/pages/en/pages/hero.md @@ -0,0 +1,31 @@ +--- +title: Hero block +description: Hero block +layout: ../../../layouts/MainLayout.astro +--- + +A hero section of a web page is the section which immediately shows up on screen, just under the header. The hero block helps you in putting the information front and center. + +You can add text, rich text, images and a call to action (CTA) button to the hero block. + +Following is how it looks on a page. + +![Hero block](/assets/pages/hero-block.png) + +## Customizing the call to action button + +1. Click on the hero block to reveal its settings. +2. Scroll to the `Call to action` section. + +![Hero block CTA](/assets/pages/hero-block-cta.png) + +3. In the button text field, add the text that will be visible on the button. +4. In the button action, enter the URL the user should be taken on upon click. + +a). If the URL is from the own school, use its relative form i.e. `/courses`. + +b). If the URL if from some external website, use the absolute (complete) URL i.e. `https://website.com/courses`. + +## Stuck somewhere? + +We are always here for you. Come chat with us in our Discord channel or send a tweet at @CourseLit. diff --git a/apps/docs/src/pages/en/pages/introduction.md b/apps/docs/src/pages/en/pages/introduction.md new file mode 100644 index 00000000..4fc9dcc6 --- /dev/null +++ b/apps/docs/src/pages/en/pages/introduction.md @@ -0,0 +1,41 @@ +--- +title: Pages +description: Pages +layout: ../../../layouts/MainLayout.astro +--- + +CourseLit comes with a powerful page builder. Using the page builder, you can build all sorts of web pages for various use cases like landing pages, sales pages, email list builder etc. + +![CourseLit's Page builder](/assets/pages/page-builder-sections.png) + +## Default pages + +When you create a new school, the following pages are automatically created for you. + +1. Homepage + +This is your school's landing page hosted at `/`. + +2. Blog + +Your blog's homepage hosted at `/blog`. You can add additional blocks to the blog's home page. + +2. Terms + +This is a page for hosting your terms and conditions for your school. This is hosted at `/terms`. + +3. Privacy policy + +This is a page for hosting the privacy policy for your school. This is hosted at `/privacy`. + +## Sales pages + +Each product that you create, gets its own sales page. This comes handy if you want to add additional information about your product for better conversion (and more sales). + +## Next step + +[Learn about page blocks](/en/pages/blocks). + +## Stuck somewhere? + +We are always here for you. Come chat with us in our Discord channel or send a tweet at @CourseLit. diff --git a/apps/docs/src/pages/en/pages/newsletter-signup.md b/apps/docs/src/pages/en/pages/newsletter-signup.md new file mode 100644 index 00000000..a3e52319 --- /dev/null +++ b/apps/docs/src/pages/en/pages/newsletter-signup.md @@ -0,0 +1,28 @@ +--- +title: Newsletter signup block +description: Newsletter signup block +layout: ../../../layouts/MainLayout.astro +--- + +Having a mailing list to sell directly to is a dream of every business, big or small. That's why CourseLit offers a dedicated block that lets you capture emails. It is also a [shared block](/en/pages/blocks#shared-page-blocks). + +Following is how it looks on a page. + +![Newsletter signup block](/assets/pages/newsletter-signup-block.png) + +> WARNING: This is a [shared block](/en/pages/blocks#shared-page-blocks) so any changes to this block are instantaneously published and will be visible on **all pages** of your school. + +## How it works + +1. Your audience will enter their emails in the text box on the Newsletter signup block. +2. A user is created in your school. +3. The user is automatically signed up for your newsletter. +4. You can see the user in the `Users` section from the dashboard. + +Following is an animation that shows the entire flow. + +![Newsletter signup block working](/assets/pages/newsletter-signup-block-working.gif) + +## Stuck somewhere? + +We are always here for you. Come chat with us in our Discord channel or send a tweet at @CourseLit. diff --git a/apps/docs/src/pages/en/pages/rich-text.md b/apps/docs/src/pages/en/pages/rich-text.md new file mode 100644 index 00000000..326d5bbd --- /dev/null +++ b/apps/docs/src/pages/en/pages/rich-text.md @@ -0,0 +1,28 @@ +--- +title: Rich text block +description: Rich text block +layout: ../../../layouts/MainLayout.astro +--- + +The rich text block can be used to add text blocks containing things like hyperlinks etc. + +## Making text bold/italic/underline + +1. Select the text. +2. To make the selected text bold, press Ctrl+B, to make it italic, press Ctrl+I and for underline, press Ctrl+U. + +You can also use the floating controls to do the same as shown below. + +![Stylised text](/assets/pages/rich-text-styling.gif) + +## Creating hyperlinks + +1. Select the text. + > Double clicking the text to select won't work due to a bug. We are working on it. +2. Click on the floating `link` button to reveal a popup text input. +3. In the pop up text input, enter the URL as shown below. + ![Create a hyperlink in rich text block](/assets/pages/rich-text-create-hyperlink.gif) + +## Stuck somewhere? + +We are always here for you. Come chat with us in our Discord channel or send a tweet at @CourseLit. diff --git a/apps/docs/src/pages/en/products/section.md b/apps/docs/src/pages/en/products/section.md new file mode 100644 index 00000000..0d015d0e --- /dev/null +++ b/apps/docs/src/pages/en/products/section.md @@ -0,0 +1,27 @@ +--- +title: Sections +description: Sections +layout: ../../../layouts/MainLayout.astro +--- + +A section is a logical grouping of lessons. It is just a visual clue for you and your students to keep things well structured. + +Here is how it looks on various parts of the platform. + +1. Sections in Product viewer + +![Sections in Course viewer](/assets/products/sections-on-course-viewer.png) + +2. Sections in Product's sales page + +![Sections in sales page](/assets/products/sections-on-sales-page.png) + +3. Sections in Product editor + +![Sections in Product editor](/assets/products/sections-on-product-editor.png) + +## Add section + +## Edit section + +## Delete section diff --git a/apps/docs/src/pages/en/schools/add-custom-domain.md b/apps/docs/src/pages/en/schools/add-custom-domain.md new file mode 100644 index 00000000..8a40b39b --- /dev/null +++ b/apps/docs/src/pages/en/schools/add-custom-domain.md @@ -0,0 +1,41 @@ +--- +title: Add a custom domain to school +description: Add a custom domain to your school +layout: ../../../layouts/MainLayout.astro +--- + +> This guide does not apply if you self-host CourseLit. For the self hosted version, refer to the documentation of the load balancer / reverse proxy / virtual machine. + +By default, your school will be hosted as a subdomain on `courselit.app` i.e. if you have a school called `joe-designs`, it will be available at `joe-designs.courselit.app`. + +If you want to serve it on your own domain as well, you can bind a custom domain to the school. Let's see how. + +_Please note that your school will still be available on the subdomain of courselit.app even after adding a custom domain to your school._ + +## Steps to add a custom domain to a school + +1. In your domain registrar's DNS settings, create an A record and point it to `13.229.190.175`. + +Here is mine. I am using Cloudflare. + +![DNS settings](/assets/schools/dns-settings-custom-domain.png) + +2. In the CourseLit dashboard, select the school you want to add a custom domain to and click on the drop down button to expand its settings. + +![Open custom domain settings](/assets/schools/custom-domain-expand.png) + +3. Enter your custom domain name and click `Update` as shown below. + +![Update custom domain](/assets/schools/update-custom-domain.png) + +4. That's it. + +## Troubleshooting + +### Issue #1: Your connection is not private. + +**Solution**: The problem will eventually resolve once the DNS propagation is complete. If not, close your browser and relauch it again. + +## Stuck somewhere? + +We are always here for you. Come chat with us in our Discord channel or send a tweet at @CourseLit. diff --git a/apps/docs/src/pages/en/schools/create.md b/apps/docs/src/pages/en/schools/create.md new file mode 100644 index 00000000..a2c93109 --- /dev/null +++ b/apps/docs/src/pages/en/schools/create.md @@ -0,0 +1,37 @@ +--- +title: Create a school +description: Create a school +layout: ../../../layouts/MainLayout.astro +--- + +> This concept does not apply if you self-host CourseLit. In the self hosted instance, you get **only one school**. + +Let's get you a free 14 days subscription on CourseLit. + +## Steps to create a school + +1. Go to [courselit.app](https://courselit.app) and click on the top right icon. +2. Enter your email in the form that appears. +3. Click the link you have got in your email to sign into your CourseLit account. +4. Click the `Manage account` button on the mail page. You will be taken to the dashboard which will look the following. + ![New school](/assets/schools/new-school.png) +5. Click on the `Create new school` button (as highlighted above). +6. Enter your school's name. Example: If you name your school joe-designs, it will be available as `joe-designs.courselit.app`. +7. (Optional) If you want to host your school on your own domain (in addition to the subdomain on courselit.app as shown above), enter the domain name in the `Custom domain` text box. +8. Click `Create` to create your school. Once your school is created, you will be redirected to the dashboard and your new shiny school will be listed (as shown below). + ![CourseLit Dashboard](/assets/schools/dashboard.png) +9. Go to your new school by clicking on the `Go to school` link against your school name. + +## Sign into your school as admin + +We set up an admin user i.e. a user having all the privileges automatically while creating your school. Its email ID is the same as the one your are signed in with in CourseLit. + +Your school uses the same mechanics as CourseLit to sign a user in i.e. sending a magic link over email. Click on the top right button on your school's page to sign in. + +## Next step + +[Create your first course under 5 minutes](/en/courses/create) + +## Stuck somewhere? + +We are always here for you. Come chat with us in our Discord channel or send a tweet at @CourseLit. diff --git a/apps/docs/src/pages/en/schools/delete.md b/apps/docs/src/pages/en/schools/delete.md new file mode 100644 index 00000000..1beda91e --- /dev/null +++ b/apps/docs/src/pages/en/schools/delete.md @@ -0,0 +1,31 @@ +--- +title: Delete a school +description: Delete a school +layout: ../../../layouts/MainLayout.astro +--- + +> This concept does not apply if you self-host CourseLit. In the self hosted instance, you get **only one school** which cannot be deleted. + +If a school is no longer required, it can be deleted. + +Keep in mind that this is a destructive action and you will not be able to recover (or restore) the data related to the school afterwards. + +## Steps to delete a school + +1. In the CourseLit dashboard, select the school you want to delete and click on the drop down button to expand its settings. + +![Open delete settings](/assets/schools/custom-domain-expand.png) + +2. Click on the delete button. + +![Click on delete](/assets/schools/delete-button.png) + +3. Type in the school name in the confirmation popup that appears and press `Delete`. + +![Delete school confirmation popup](/assets/schools/delete-school-popup.png) + +4. That's it. + +## Stuck somewhere? + +We are always here for you. Come chat with us in our Discord channel or send a tweet at @CourseLit. diff --git a/apps/docs/src/pages/en/schools/introduction.md b/apps/docs/src/pages/en/schools/introduction.md new file mode 100644 index 00000000..33bbebbd --- /dev/null +++ b/apps/docs/src/pages/en/schools/introduction.md @@ -0,0 +1,21 @@ +--- +title: School +description: School +layout: ../../../layouts/MainLayout.astro +--- + +> This concept does not apply if you self-host CourseLit. In the self hosted instance, you get **only one school**. + +A school is a logical container for all of your content. You can create as many schools as you would like under one subscription. + +Let's understand this with an example. + +Joe is a digital designer who likes to teach designing so he can setup a school called `joe-designs` in CourseLit. This school will be available at `joe-designs.courselit.app`. + +Now, if Joe's also interested in teaching gardening, he can teach it under a separate school to keep things segregated so as to not confused his audience. For his gardening venture, he can create a new school called `jeo-gardening`. + +[Create your school in 2 minutes](/en/schools/create) + +## Stuck somewhere? + +We are always here for you. Come chat with us in our Discord channel or send a tweet at @CourseLit. diff --git a/apps/docs/src/pages/en/self-hosting/introduction.md b/apps/docs/src/pages/en/self-hosting/introduction.md new file mode 100644 index 00000000..80ef3116 --- /dev/null +++ b/apps/docs/src/pages/en/self-hosting/introduction.md @@ -0,0 +1,28 @@ +--- +title: Self Host CourseLit +description: Self Host CourseLit +layout: ../../../layouts/MainLayout.astro +--- + +CourseLit is an open-source software and we make sure that hosting it is as easy as possible. + +If you can, please give us a star on [CourseLit's GitHub repo](https://github.com/codelitdev/courselit) so that it reaches more people. + +## Why self host? + +You should self host CourseLit, if you: + +- want complete control of your data +- want to host it behind a firewall for internal use + +### Self host CourseLit + +See [the self hosting guide](/en/self-hosting/self-host). + +## Hosted version + +If you don't want to self-host, CourseLit's hosted version is available at [CourseLit.app](https://courselit.app). It is managed by the team behind CourseLit. We will take care of everything, just come with your team and content. + +## Stuck somewhere? + +We are always here for you. Come chat with us in our Discord channel or send a tweet at @CourseLit. diff --git a/apps/docs/src/pages/en/self-hosting.md b/apps/docs/src/pages/en/self-hosting/self-host.md similarity index 91% rename from apps/docs/src/pages/en/self-hosting.md rename to apps/docs/src/pages/en/self-hosting/self-host.md index 8fa12f0e..9b2d3aee 100644 --- a/apps/docs/src/pages/en/self-hosting.md +++ b/apps/docs/src/pages/en/self-hosting/self-host.md @@ -1,7 +1,7 @@ --- -title: Self Hosting CourseLit -description: Hosting CourseLit on your own server -layout: ../../layouts/MainLayout.astro +title: CourseLit Self Hosting Guide +description: CourseLit Self Hosting Guide +layout: ../../../layouts/MainLayout.astro --- We offer two ways to self-host CourseLit, which are as follows. @@ -19,7 +19,7 @@ To quickly spin up an instance of CourseLit on Vercel, click the following butto ## Hosting on a VPS using Docker -We offer a Docker image which you can easily host in any environment where Docker is supported. We recommend [docker-compose](https://docs.docker.com/compose/) for hosting CourseLit. +If you want to harness the full capabilities of CourseLit, you can deploy it via Docker. We recommend [docker-compose](https://docs.docker.com/compose/) for hosting CourseLit. Run the following commands in order. @@ -173,6 +173,12 @@ docker compose up That's it! You now have a fully functioning LMS powered by CourseLit. +## Hosted version + +If this is too technical for you to handle, CourseLit's hosted version is available at [CourseLit.app](https://courselit.app). + +It is managed by the team behind CourseLit. We will take care of everything, just come with your team and content. + ## Stuck somewhere? We are always here for you. Come chat with us in our Discord channel or send a tweet at @CourseLit. diff --git a/apps/docs/src/pages/en/users/introduction.md b/apps/docs/src/pages/en/users/introduction.md new file mode 100644 index 00000000..f6c41291 --- /dev/null +++ b/apps/docs/src/pages/en/users/introduction.md @@ -0,0 +1,38 @@ +--- +title: Users +description: Users +layout: ../../../layouts/MainLayout.astro +--- + +CourseLit has a powerful user management using which you can manage not only your students but also your team members and newsletter subscribers. + +## Viewing your users + +Log in to your admin account and from the `Dashboard`, click on the `Users` menu item from the left side bar to get to users area. + +![Users](/assets/users/users.png) + +## Filtering users + +You can filter the users by the following two ways. + +1. By email +2. By permissions + + CourseLit categorises users into four categories. + + - [**Customer**](/en/users/permissions#team-and-customer-users) - Everyone who has signed up for an account on your school + - [**Team**](/en/users/permissions#team-and-customer-users) - Users who have atleast one of the admin permissions + - **Subscriber** - Users who are subscribed to your newsletter + - **Everyone** - All the users in your school + + This makes it easy for you to quickly search for people. The following screenshot shows the users filtered by team members permissions. + ![Filtered by permissions](/assets/users/user-filtering-by-permissions.png) + +## Next step + +See how to [manage users](/en/users/manage). + +## Stuck somewhere? + +We are always here for you. Come chat with us in our Discord channel or send a tweet at @CourseLit. diff --git a/apps/docs/src/pages/en/users/manage.md b/apps/docs/src/pages/en/users/manage.md new file mode 100644 index 00000000..50837049 --- /dev/null +++ b/apps/docs/src/pages/en/users/manage.md @@ -0,0 +1,39 @@ +--- +title: Manage users +description: Manage users +layout: ../../../layouts/MainLayout.astro +--- + +## View user's details + +From the users list in the User's area, click on the user whose details you want to see. Following is how it looks. + +![User's details](/assets/users/user-details.png) + +On the left side, you see user's basic details and on the right side you see CourseLit's [permissions editor](/en/users/persmissions) using which you can control what a user can do on your school. + +If the user has not yet updated their name from their `Profile`, it will be indicated as `--`. + +## Ban a user + +If you don't want to a user to log into your school, you can restrict their account. Following are the steps. + +1. Select on the user from the users list to open its editor. +2. Flip the `Account active` toggle off as shown below. + +![Ban user](/assets/users/ban-user.png) + +Now when the user tries to generate a login link, they will get an error stating that there is some problem. They won't know that they have been banned. + +## Change user's permission + +Before changing user's permissions, read our [permissions](/en/users/permissions) guide so that you understand what you are doing. + +To change user's permissions, follow the steps. + +1. Select on the user from the users list to open its editor. +2. On the permissions pane on the right, tick the boxes against the permissions to want to provide to the user. + +## Stuck somewhere? + +We are always here for you. Come chat with us in our Discord channel or send a tweet at @CourseLit. diff --git a/apps/docs/src/pages/en/users/permissions.md b/apps/docs/src/pages/en/users/permissions.md new file mode 100644 index 00000000..651e0fbd --- /dev/null +++ b/apps/docs/src/pages/en/users/permissions.md @@ -0,0 +1,36 @@ +--- +title: User permissions +description: User permissions +layout: ../../../layouts/MainLayout.astro +--- + +CourseLit offers a powerful user permissions system so that you can control who can do what in your school. + +You can bring your entire team including designers, content creators, editors etc. and provide fine-grained access to them. + +Following is how it looks (indicated in the red box). + +![User's permission editor](/assets/users/user-permission-editor.png) + +## Team and Customer users + +If the user has the following permission, they are categorised as a `Customer`. + +- Enroll in courses + +If they have any of the following permissions, they are categorised as a `Team` member. + +- Create content +- Manage all content +- Publish content +- View files +- Upload files +- Manage files +- Manage all files +- Edit site +- Edit settings +- Edit users + +## Stuck somewhere? + +We are always here for you. Come chat with us in our Discord channel or send a tweet at @CourseLit. diff --git a/apps/docs/src/styles/index.css b/apps/docs/src/styles/index.css index a116c993..02e56735 100644 --- a/apps/docs/src/styles/index.css +++ b/apps/docs/src/styles/index.css @@ -380,3 +380,33 @@ h2.heading { :target { scroll-margin: calc(var(--theme-sidebar-offset, 5rem) + 2rem) 0 2rem; } + +.card-container { + display: flex; + gap: 2%; + flex-wrap: wrap; +} + +.card { + border: 1px solid rgb(235, 235, 235); + border-radius: 4px; + padding: 0.8rem; + flex-basis: 48%; + margin-bottom: 2%; +} + +.card > a > header { + font-size: 1.1rem; + margin-bottom: 0.8rem; +} + +.card > a { + text-decoration: none; + color: inherit; + font-size: 0.8rem; +} + +.card:hover { + border: 1px solid rgb(223, 223, 223); + box-shadow: 0 1px 2px #f6f2f2; +} diff --git a/apps/web/graphql/pages/logic.ts b/apps/web/graphql/pages/logic.ts index f508e008..34ebd4c4 100644 --- a/apps/web/graphql/pages/logic.ts +++ b/apps/web/graphql/pages/logic.ts @@ -78,6 +78,18 @@ async function initSharedWidgets(ctx: GQLContext) { shared: true, deleteable: false, widgetId: generateUniqueId(), + settings: { + links: [ + { label: "Courses", href: "/courses" }, + { label: "Blog", href: "/blog" }, + ], + appBarBackground: "#000000", + loginBtnBgColor: "#ffffff", + loginBtnColor: "#000000", + linkColor: "#ffffff", + linkAlignment: "right", + logoColor: "#ffffff", + }, }; subdomainChanged = true; } diff --git a/apps/web/middlewares/verify-domain.ts b/apps/web/middlewares/verify-domain.ts index 36476dbe..cde356b5 100644 --- a/apps/web/middlewares/verify-domain.ts +++ b/apps/web/middlewares/verify-domain.ts @@ -101,12 +101,13 @@ export default async function verifyDomain( domain = await DomainModel.create({ name: domainNameForSingleTenancy, email: process.env.SUPER_ADMIN_EMAIL, + firstRun: true, }); } } - if (!domain!.settings) { - domain!.settings = {}; + if (domain!.firstRun) { + domain!.firstRun = false; await createUser({ domain: domain!, email: domain!.email, diff --git a/apps/web/models/Domain.ts b/apps/web/models/Domain.ts index 09fc2116..683bc7b4 100644 --- a/apps/web/models/Domain.ts +++ b/apps/web/models/Domain.ts @@ -24,6 +24,7 @@ export interface Domain { featureFlags: string[]; typefaces: Typeface[]; draftTypefaces: Typeface[]; + firstRun: boolean; } export const defaultTypeface: Typeface = { @@ -51,6 +52,7 @@ const DomainSchema = new mongoose.Schema( default: [defaultTypeface], }, draftTypefaces: { type: [TypefaceSchema], default: [defaultTypeface] }, + firstRun: { type: Boolean, required: true, default: false }, }, { timestamps: true, diff --git a/packages/common-widgets/src/content/widget.tsx b/packages/common-widgets/src/content/widget.tsx index 7f4c601c..2c1cc64b 100644 --- a/packages/common-widgets/src/content/widget.tsx +++ b/packages/common-widgets/src/content/widget.tsx @@ -123,7 +123,7 @@ export default function Widget({ return (
-
- + + setButtonAction(e.target.value)} fullWidth /> - - setButtonBackground(value) - } - /> - - setButtonForeground(value) - } - /> - - + + + setButtonBackground(value) + } + /> + + setButtonForeground(value) + } + /> +
diff --git a/packages/common-widgets/src/header/widget.tsx b/packages/common-widgets/src/header/widget.tsx index e4b3b952..3779986f 100644 --- a/packages/common-widgets/src/header/widget.tsx +++ b/packages/common-widgets/src/header/widget.tsx @@ -74,11 +74,12 @@ export default function Widget({ state, settings }: WidgetProps) { backgroundColor: settings.loginBtnBgColor, }} > - {settings.links.map((link) => ( - - {link.label} - - ))} + {settings.links && + (settings.links as Link[]).map((link: Link) => ( + + {link.label} + + ))} {state.profile.fetched && checkPermission(state.profile.permissions, [ UIConstants.permissions.enrollInCourse, diff --git a/packages/common-widgets/src/hero/admin-widget.tsx b/packages/common-widgets/src/hero/admin-widget.tsx index de28f241..d5af383f 100644 --- a/packages/common-widgets/src/hero/admin-widget.tsx +++ b/packages/common-widgets/src/hero/admin-widget.tsx @@ -157,8 +157,8 @@ export default function AdminWidget({
-
- + + setButtonAction(e.target.value)} /> - - setButtonBackground(value) - } - /> - - setButtonForeground(value) - } - /> - - + + + setButtonBackground(value) + } + /> + + setButtonForeground(value) + } + /> +
diff --git a/packages/common-widgets/src/hero/widget.tsx b/packages/common-widgets/src/hero/widget.tsx index 417700d3..a441df80 100644 --- a/packages/common-widgets/src/hero/widget.tsx +++ b/packages/common-widgets/src/hero/widget.tsx @@ -21,22 +21,22 @@ export default function Widget({ }, }: WidgetProps) { const hasHeroGraphic = youtubeLink || (media && media.mediaId); - let direction: "row" | "row-reverse"; + let direction: "md:!flex-row" | "md:!flex-row-reverse"; switch (alignment) { case "left": - direction = "row"; + direction = "md:!flex-row"; break; case "right": - direction = "row-reverse"; + direction = "md:!flex-row-reverse"; break; default: - direction = "row"; + direction = "md:!flex-row"; } return (
{hasHeroGraphic && ( @@ -81,18 +80,10 @@ export default function Widget({ className="w-full text-center" style={{ borderRadius: `${mediaRadius}px`, + width: "100%", }} > - +
)}
@@ -124,7 +115,7 @@ export default function Widget({
)} {buttonAction && buttonCaption && ( -
+