feat: introducing @classroomio/course-app (#490)
* 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>
This commit is contained in:
@@ -0,0 +1,84 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
import { program } from 'commander';
|
||||
import chalk from 'chalk';
|
||||
import inquirer from 'inquirer';
|
||||
import ora from 'ora';
|
||||
import path from 'path';
|
||||
import TEMPLATES from '../templates.json';
|
||||
import { scaffoldTemplate } from '../lib/scaffoldTemplate';
|
||||
|
||||
const spinner = ora();
|
||||
|
||||
const templates = TEMPLATES.map((template) => template.name);
|
||||
|
||||
program.version('0.0.1').description('Courseapp CLI');
|
||||
|
||||
program
|
||||
.argument('[projectName]', 'name of the project')
|
||||
.option('-t, --template <template>', 'name of the template')
|
||||
.option('-c, --courses', 'use demo courses')
|
||||
.action(async (projectName, option) => {
|
||||
let { template, courses } = option;
|
||||
|
||||
if (!projectName) {
|
||||
const answer = await inquirer.prompt([
|
||||
{
|
||||
type: 'input',
|
||||
name: 'projectName',
|
||||
message: 'Enter the project name',
|
||||
default: '.',
|
||||
when: !projectName
|
||||
}
|
||||
]);
|
||||
projectName = answer.projectName;
|
||||
}
|
||||
|
||||
const projectPath =
|
||||
projectName === '.' ? process.cwd() : path.resolve(process.cwd(), projectName);
|
||||
|
||||
if (!template) {
|
||||
const answer = await inquirer.prompt([
|
||||
{
|
||||
type: 'list',
|
||||
name: 'template',
|
||||
message: 'Select a template',
|
||||
choices: templates,
|
||||
default: templates[0]
|
||||
}
|
||||
]);
|
||||
template = answer.template;
|
||||
}
|
||||
|
||||
if (courses === undefined) {
|
||||
const answer = await inquirer.prompt([
|
||||
{
|
||||
type: 'confirm',
|
||||
name: 'course',
|
||||
message: 'Would you like to use our demo courses?',
|
||||
default: true
|
||||
}
|
||||
]);
|
||||
courses = answer.course;
|
||||
}
|
||||
|
||||
spinner.start('Scaffolding project....');
|
||||
|
||||
try {
|
||||
await scaffoldTemplate({ template, courses, projectPath, projectName });
|
||||
|
||||
spinner.succeed(`\n\n${chalk.green('Done! Your project is ready.')}\n\n`);
|
||||
console.log(
|
||||
`To get started:\n\n${chalk.blue(`cd ${projectName}`)}\n${chalk.blue(
|
||||
'pnpm i'
|
||||
)}\n${chalk.blue('pnpm run dev')}`
|
||||
);
|
||||
|
||||
console.log('\n\n', chalk.blue('Happy hacking ;)'));
|
||||
} catch (error) {
|
||||
spinner.fail(chalk.red(`Failed to scaffold the project. ${error}`));
|
||||
process.exit(1);
|
||||
}
|
||||
});
|
||||
|
||||
program.parse(process.argv);
|
||||
Reference in New Issue
Block a user