diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 6f9a4a5..35934f2 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -1,17 +1,13 @@ -## Description - +## 🔍 Description + -## Type of change -- [ ] Bug fix -- [ ] New feature -- [ ] Breaking change -- [ ] Documentation update +## Type +- [ ] 🐛 Bug Fix +- [ ] ✨ Feature +- [ ] 📚 Documentation +- [ ] 🔧 Other: _____ ## Checklist -- [ ] My code follows the style guidelines of this project -- [ ] I have performed a self-review of my own code -- [ ] I have commented my code, particularly in hard-to-understand areas -- [ ] I have made corresponding changes to the documentation -- [ ] My changes generate no new warnings -- [ ] I have added tests that prove my fix is effective or that my feature works -- [ ] New and existing unit tests pass locally with my changes \ No newline at end of file +- [ ] Tested locally +- [ ] Updated docs (if needed) +- [ ] Added/updated tests (if needed) \ No newline at end of file diff --git a/.github/workflows/update-template.yml b/.github/workflows/update-template.yml new file mode 100644 index 0000000..3186e8c --- /dev/null +++ b/.github/workflows/update-template.yml @@ -0,0 +1,58 @@ +name: Trigger Template Repository Update + +on: + push: + branches: + - main + paths: + - 'packages/create-app/package.json' + +jobs: + trigger-update: + runs-on: ubuntu-latest + permissions: + contents: write + actions: write + + steps: + - uses: actions/checkout@v4 + + - name: Extract Package Version + id: get-version + run: | + VERSION=$(jq -r .version packages/create-app/package.json) + echo "version=$VERSION" >> $GITHUB_OUTPUT + + - name: Check Latest Release + id: check-release + run: | + LATEST_RELEASE=$(curl -s https://api.github.com/repos/${{ github.repository }}/releases/latest | jq -r .tag_name | sed 's/^v//') + CURRENT_VERSION=${{ steps.get-version.outputs.version }} + if [ "$LATEST_RELEASE" == "$CURRENT_VERSION" ]; then + echo "No version change detected. Skipping release." + echo "skip=true" >> $GITHUB_OUTPUT + else + echo "New version detected. Proceeding with release." + echo "skip=false" >> $GITHUB_OUTPUT + fi + + - name: Create Release + if: steps.check-release.outputs.skip != 'true' + uses: softprops/action-gh-release@v1 + with: + tag_name: v${{ steps.get-version.outputs.version }} + name: Release v${{ steps.get-version.outputs.version }} + draft: false + prerelease: false + generate_release_notes: true + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Repository Dispatch + if: steps.check-release.outputs.skip != 'true' + uses: peter-evans/repository-dispatch@v2 + with: + token: ${{ secrets.GITHUB_TOKEN }} + repository: ${{ github.repository_owner }}/akiradocs-template + event-type: update-template + client-payload: '{"ref": "${{ github.ref }}","sha": "${{ github.sha }}","version": "${{ steps.get-version.outputs.version }}"}' \ No newline at end of file diff --git a/.gitignore b/.gitignore index 18ba207..33afb52 100644 --- a/.gitignore +++ b/.gitignore @@ -58,3 +58,5 @@ template/ *node_modules* +million/ +wrangler/ \ No newline at end of file diff --git a/README.md b/README.md index a14bc00..aecf47d 100644 --- a/README.md +++ b/README.md @@ -1,110 +1,95 @@ # AkiraDocs -**Smart documentation platform with AI at its core** - [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) - [![Demo Live](https://img.shields.io/badge/Demo-Live-color.svg)](https://demo.akiradocs.ai) - [![Join Waitlist](https://img.shields.io/badge/Join-Waitlist-orange.svg)](https://forms.gle/KunU4BGhToH4NJ1t7) +

+ If you find AkiraDocs useful, please consider giving it a star! ⭐️
+ Your support helps us continue improving the platform. +

-## 🚀 Get Started -To create a new AkiraDocs project using the OSS template, run: +

+ Star the Repo +

-```bash -npx create-akiradocs -``` - -## 🎯 Why Choose AkiraDocs? -- **For Developers**: - - Keep your existing Markdown/Git workflow - - Full Markdown/MDX support - - Easy custom component development - -- **For Content Teams**: - - User-friendly WYSIWYG editor - - Real-time previews, no coding required - -- **For Enterprises**: - - SSO/SAML integration - - Audit logs and custom deployment options - -## 😟 Common Documentation Challenges -- Keeping documentation in sync across teams -- Managing multiple versions of documents -- Needing better analytics for documentation usage - -## 🎭 Use Cases -- **Developer Documentation**: API references, SDK guides, implementation examples. -- **Product Documentation**: User guides, release notes, tutorials. -- **Enterprise Knowledge**: Internal wikis, process documentation. - -## 🚀 Migrate Existing Docs (Coming Soon) -Easily bring your documentation from various sources: - -```bash -npx akiradocs-migrate import --from=source --to=mydocs +## **Smart documentation platform with AI at its core** - Supported sources: - ✓ Markdown/MDX files - ✓ GitBook - ✓ Docusaurus - ✓ ReadTheDocs - ✓ Confluence - ✓ Notion -``` - -## 📄 SEO Optimized by Default -Every page is automatically optimized for search engines: -- SEO-friendly URLs and auto-generated meta tags -- Mobile-first indexing and fast performance +

+ + Live Demo + + + Join Waitlist for Cloud Hosting + +

-## ✍️ Modern Block-Based Editor -Create documentation with ease: -- Rich text blocks, images, diagrams, and code blocks -- Collapsible sections and reusable content blocks +## 🚀 What is AkiraDocs? +AkiraDocs is a modern documentation platform that combines the power of AI with an intuitive authoring experience. Whether you're a developer, content creator, or enterprise team, AkiraDocs provides the tools you need to create, manage, and share documentation effectively. -## 🌐 Multi-Language Support (Coming Soon) -Reach a global audience with: -- AI-powered translation suggestions -- Side-by-side translation editor +## ⚡️ Quick Deploy +Get started in seconds: -## 💪 Setup and Translate -Set up environment variables for translation: +[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2FCloud-Code-AI%2Fakiradocs-template) +Or via CLI: ```bash -ANTHROPIC_API_KEY=sk-ant-api03-... +npx create-akiradocs ``` -Configure target languages in `akiradocs.config.json`: - +## 🎯 Perfect For +- **Developers**: API docs, SDK guides, implementation examples +- **Product Teams**: User guides, release notes, tutorials +- **Enterprises**: Internal wikis, process documentation, knowledge bases + +## ✨ Key Features + +### 🛠 Developer-Friendly +- Keep your existing Markdown/Git workflow +- Full Markdown/MDX support +- Easy custom component development +- SEO optimization out of the box + +### 📝 Content Creator-Friendly +- Modern block-based WYSIWYG editor +- Real-time previews +- Rich media support +- Reusable content blocks + +### 🏢 Enterprise-Ready +- SSO/SAML integration +- Audit logs +- Custom deployment options +- Version control + +## 🌍 Going Global (Coming Soon) +Built-in AI-powered translation: ```json { "translation": { "auto_translate": true, "provider": "anthropic", - "model": "claude-3-sonnet-20240229", - "targetLanguages": ["es", "fr", "de"], - "excludedPaths": ["_meta.json"] + "targetLanguages": ["es", "fr", "de"] } } ``` -Run the translation command: - +## 🔄 Easy Migration (Coming Soon) +Import your existing docs: ```bash -npm run translate +npx akiradocs-migrate import --from=source --to=mydocs +# Supports: GitBook, Docusaurus, ReadTheDocs, Confluence, Notion ``` -## 📄 Licensing -- **MIT License**: Free for open source and personal projects. -- **Commercial License**: Available for enterprise features. - ## 🤝 Join Our Community +- [Live Demo](https://demo.akiradocs.ai) +- [Documentation](https://docs.akiradocs.com) - [Discord Community](https://discord.gg/zvYZukgeH2) - [GitHub Discussions](https://github.com/akiradocs/discussions) -- [Documentation](https://docs.akiradocs.com) -- [Join the Waitlist](https://forms.gle/KunU4BGhToH4NJ1t7) → Early access to upcoming features +- [Join Waitlist](https://forms.gle/KunU4BGhToH4NJ1t7) for early access + +## 📄 Licensing +- Open Source (MIT License) +- Commercial License available for enterprise features --- - [Get Started](https://docs.akiradocs.ai/quickstart) • - [Live Demo](https://demo.akiradocs.ai) • - [Enterprise Trial](https://akiradocs.com/enterprise) (Coming Q1 2025) +[Get Started](https://docs.akiradocs.ai/quickstart) • +[Live Demo](https://demo.akiradocs.ai) • +[Enterprise Trial](https://akiradocs.com/enterprise) (Coming Q1 2025) diff --git a/gifs/star_the_repo.gif b/gifs/star_the_repo.gif new file mode 100644 index 0000000..f6931fc Binary files /dev/null and b/gifs/star_the_repo.gif differ diff --git a/packages/akiradocs/.gitignore b/packages/akiradocs/.gitignore new file mode 100644 index 0000000..33afb52 --- /dev/null +++ b/packages/akiradocs/.gitignore @@ -0,0 +1,62 @@ +# Dependencies +/node_modules/ +.pnp +.pnp.js +.yarn/install-state.gz + +# Build +dist +.next +out + +# Testing +coverage + +# production +/build + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# local env files +.env*.local + +# vercel +.vercel + +# typescript +*.tsbuildinfo +next-env.d.ts + +.env +.env.local +.env.development.local +.env.test.local +.env.production.local + +# IDE +.idea +.vscode +*.sublime-workspace + +.turbo/ +.next/ +**/node_modules/ +**/dist/ +**/dist/ + +.DS_Store +Thumbs.db + +template/ + +*node_modules* + +million/ +wrangler/ \ No newline at end of file diff --git a/packages/create-app/package.json b/packages/create-app/package.json index 06c63f8..07e2af4 100644 --- a/packages/create-app/package.json +++ b/packages/create-app/package.json @@ -1,6 +1,6 @@ { "name": "create-akiradocs", - "version": "1.0.30", + "version": "1.0.33", "description": "Create Akira Docs documentation sites with one command", "main": "./dist/index.js", "type": "module", @@ -21,6 +21,7 @@ "files": [ "dist", "template", + "editor", "README.md", "LICENSE" ], diff --git a/packages/create-app/src/index.ts b/packages/create-app/src/index.ts index 07c7929..647b1bf 100644 --- a/packages/create-app/src/index.ts +++ b/packages/create-app/src/index.ts @@ -77,8 +77,8 @@ async function promptConfigQuestions() { { type: 'confirm', name: 'enableAutoTranslate', - message: 'Would you like to enable automatic translation of content?', - initial: true, + message: 'Would you like to enable automatic translation of content? (SETUP ENV for this)', + initial: false, }, ]); @@ -141,6 +141,20 @@ async function updateEditorDependencies(targetDir: string) { await writeFile(pkgJsonPath, JSON.stringify(pkgJson, null, 2)); } +async function copyEditor(targetDir: string) { + const editorDir = path.join(__dirname, '../../editor'); + const targetEditorDir = path.join(targetDir, 'editor'); + + try { + await copyDir(editorDir, targetEditorDir); + return true; + } catch (error) { + console.warn(chalk.yellow('\nWarning: Editor files not found. Skipping editor installation.')); + console.warn(chalk.yellow('You can install the editor later by following the documentation.\n')); + return false; + } +} + async function main() { const packageJsonPath = path.resolve(__dirname, '../package.json'); const packageJson = await readJson(packageJsonPath); @@ -169,25 +183,25 @@ async function main() { await updateConfig(targetDir, configAnswers); if (editorResponse.includeEditor) { - const editorDir = path.join(__dirname, '../../editor'); - const targetEditorDir = path.join(targetDir, 'editor'); - await copyDir(editorDir, targetEditorDir); - - await updateEditorDependencies(targetDir); - - const pkgJsonPath = path.join(targetDir, 'package.json'); - const pkgJson = JSON.parse(await readFile(pkgJsonPath, 'utf-8')); - pkgJson.scripts = { - ...pkgJson.scripts, - 'dev:editor': 'cd editor && npm run dev', - 'dev:docs': 'npm run dev', - 'dev:all': 'concurrently "npm run dev:docs" "npm run dev:editor"', - }; - pkgJson.devDependencies = { - ...pkgJson.devDependencies, - 'concurrently': '^8.0.0', - }; - await writeFile(pkgJsonPath, JSON.stringify(pkgJson, null, 2)); + const editorCopied = await copyEditor(targetDir); + + if (editorCopied) { + await updateEditorDependencies(targetDir); + + const pkgJsonPath = path.join(targetDir, 'package.json'); + const pkgJson = JSON.parse(await readFile(pkgJsonPath, 'utf-8')); + pkgJson.scripts = { + ...pkgJson.scripts, + 'dev:editor': 'cd editor && npm run dev', + 'dev:docs': 'npm run dev', + 'dev:all': 'concurrently "npm run dev:docs" "npm run dev:editor"', + }; + pkgJson.devDependencies = { + ...pkgJson.devDependencies, + 'concurrently': '^8.0.0', + }; + await writeFile(pkgJsonPath, JSON.stringify(pkgJson, null, 2)); + } } spinner.succeed(chalk.green('Project created successfully!')); diff --git a/packages/create-app/tsup.config.ts b/packages/create-app/tsup.config.ts index 978203a..b60cacf 100644 --- a/packages/create-app/tsup.config.ts +++ b/packages/create-app/tsup.config.ts @@ -2,6 +2,8 @@ import { defineConfig } from 'tsup'; import { chmod } from 'fs/promises'; import { copyDir, updatePackageJsonVersion } from './scripts/copyTemplate'; import { readFile } from 'fs/promises'; +import path from 'path'; + export default defineConfig({ entry: ['src/index.ts'], format: ['esm'], @@ -16,9 +18,22 @@ export default defineConfig({ js: '#!/usr/bin/env node', }, async onSuccess() { - // Copy template before making the dist executable - + // Copy main template await copyDir('../akiradocs', './template'); + + // Copy main README and gifs folder + const rootDir = path.resolve(__dirname, '../..'); + const mainReadmePath = path.join(rootDir, 'README.md'); + const gifsFolder = path.join(rootDir, 'gifs'); + + // Copy main README to template + await copyDir(mainReadmePath, path.join('./template', 'README.md')); + await copyDir(mainReadmePath, path.join('./template', '.gitignore')); + + // Copy gifs folder to template + await copyDir(gifsFolder, path.join('./template', 'gifs')); + + // Update package.json version const templatePackageJson = JSON.parse( await readFile('./package.json', 'utf-8') );