├── .eslintrc.json ├── .github ├── CODEOWNERS ├── CONTRIBUTING.md ├── FUNDING.yml ├── ISSUE_TEMPLATE │ ├── bug_report.md │ └── feature_request.md ├── PULL_REQUEST_TEMPLATE.md └── workflows │ └── branch-protection.yml ├── .gitignore ├── .idx ├── dev.nix └── integrations.json ├── .vscode └── settings.json ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── SECURITY.md ├── browserslist ├── components.json ├── deno.json ├── eslint.config.mjs ├── netlify.toml ├── netlify └── edge-functions │ └── og.tsx ├── next.config.js ├── next.config.ts ├── package-lock.json ├── package.json ├── postcss.config.js ├── postcss.config.mjs ├── public ├── android-chrome-192x192.png ├── android-chrome-512x512.png ├── apple-touch-icon.png ├── cookfast og.png ├── cookfast-og.png ├── favicon-16x16.png ├── favicon-32x32.png ├── favicon.ico ├── file.svg ├── fire.svg ├── globe.svg ├── google2043a05eb370b7b7.html ├── heart.svg ├── lightning.svg ├── llms.txt ├── next.svg ├── robots.txt ├── rocket.svg ├── site.webmanifest ├── sitemap.xml ├── star.svg ├── vercel.svg ├── waving-hand.svg └── window.svg ├── src ├── components │ ├── AnimatedHero.tsx │ ├── DocumentTypeSection.tsx │ ├── EnhancedFooter.tsx │ ├── EnhancedForm.tsx │ ├── FaqSection.tsx │ ├── FeatureCard.tsx │ ├── GenerationLogs.tsx │ ├── GeneratorSection.tsx │ ├── HowItWorksSection.tsx │ ├── MarkdownRenderer.tsx │ ├── MermaidGuide.tsx │ ├── ThemeToggle.tsx │ ├── icons │ │ └── AlertTriangleIcon.tsx │ ├── layout │ │ ├── Header.tsx │ │ └── MainLayout.tsx │ └── ui │ │ ├── accordion.tsx │ │ ├── badge.tsx │ │ ├── button.tsx │ │ ├── card.tsx │ │ ├── checkbox.tsx │ │ ├── document-tabs.tsx │ │ ├── dropdown-menu.tsx │ │ ├── input.tsx │ │ ├── label.tsx │ │ ├── radio-group.tsx │ │ ├── scroll-area.tsx │ │ ├── tabs.tsx │ │ └── textarea.tsx ├── contexts │ └── ThemeContext.tsx ├── lib │ └── utils.ts ├── pages │ ├── _app.tsx │ ├── _document.tsx │ ├── api │ │ ├── check-status.ts │ │ ├── generate-docs.ts │ │ ├── hello.ts │ │ ├── og.tsx │ │ └── validate-key.ts │ └── index.tsx ├── styles │ └── globals.css ├── types │ ├── app.d.ts │ └── mermaid.d.ts └── utils │ ├── aiPrompts.ts │ ├── index.ts │ ├── mermaidPrompts.ts │ ├── rate-limiter.ts │ └── saveResult.ts ├── tailwind.config.js └── tsconfig.json /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "next/core-web-vitals", 3 | "rules": { 4 | "@typescript-eslint/no-unused-vars": "off" 5 | } 6 | } -------------------------------------------------------------------------------- /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | # CODEOWNERS file for CookFast repository 2 | # Owners listed below will be automatically requested for review on pull requests 3 | # See https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners 4 | 5 | # These owners will be the default owners for everything in the repo 6 | * @lmotwani @webvijayi 7 | 8 | # Only lmotwani and webvijayi can approve changes to critical files 9 | /src/ @lmotwani @webvijayi 10 | /.next.config.js @lmotwani @webvijayi 11 | /package.json @lmotwani @webvijayi 12 | /netlify.toml @lmotwani @webvijayi -------------------------------------------------------------------------------- /.github/CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing to CookFast 2 | 3 | Thank you for your interest in contributing to CookFast! This document provides guidelines and instructions for contributing. 4 | 5 | ## Code of Conduct 6 | 7 | By participating in this project, you agree to maintain a respectful and inclusive environment for everyone. 8 | 9 | ## How to Contribute 10 | 11 | ### Reporting Bugs 12 | 13 | - Check if the bug has already been reported in the [Issues](https://github.com/webvijayi/CookFast/issues) section 14 | - If not, create a new issue with a clear description, steps to reproduce, expected and actual behavior 15 | - Include screenshots or error messages if applicable 16 | 17 | ### Suggesting Features 18 | 19 | - Check if the feature has already been suggested in the [Issues](https://github.com/webvijayi/CookFast/issues) section 20 | - If not, create a new issue with a clear description of the feature and why it would be valuable 21 | 22 | ### Pull Request Process 23 | 24 | 1. Fork the repository 25 | 2. Create a new branch for your feature or bugfix: `git checkout -b feature/your-feature-name` or `git checkout -b fix/your-bugfix-name` 26 | 3. Make your changes 27 | 4. Test your changes thoroughly 28 | 5. Commit your changes with clear, descriptive messages 29 | 6. Push to your fork and submit a pull request to the `main` branch 30 | 7. Wait for review from maintainers (@lmotwani or @webvijayi) 31 | 32 | ### Pull Request Requirements 33 | 34 | - Updates should include tests if applicable 35 | - Documentation should be updated for significant changes 36 | - The PR should be focused on a single concern 37 | - Code should follow the project's style and conventions 38 | 39 | ## Repository Permissions 40 | 41 | - Only @lmotwani and @webvijayi have direct push access to the main branch 42 | - All other contributors must submit changes via pull requests 43 | - Pull requests require review and approval before merging 44 | 45 | ## Development Setup 46 | 47 | Please refer to the README.md file for instructions on setting up the development environment. 48 | 49 | ## Questions? 50 | 51 | If you have any questions, feel free to create an issue for discussion or contact the maintainers directly. 52 | 53 | Thank you for contributing to CookFast! -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: [webvijayi, lmotwani] # Replace with up to 4 GitHub usernames 4 | patreon: # Replace with a single Patreon username 5 | open_collective: # Replace with a single Open Collective username 6 | ko_fi: # Replace with a single Ko-fi username 7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel 8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry 9 | liberapay: # Replace with a single Liberapay username 10 | issuehunt: # Replace with a single IssueHunt username 11 | otechie: # Replace with a single Otechie username 12 | lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry 13 | custom: ['https://www.buymeacoffee.com/lokeshmotwani'] # Replace with up to 4 custom sponsorship URLs -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve CookFast 4 | title: '[BUG] ' 5 | labels: bug 6 | assignees: '' 7 | --- 8 | 9 | **Describe the bug** 10 | A clear and concise description of what the bug is. 11 | 12 | **To Reproduce** 13 | Steps to reproduce the behavior: 14 | 1. Go to '...' 15 | 2. Click on '....' 16 | 3. Fill in '....' 17 | 4. See error 18 | 19 | **Expected behavior** 20 | A clear and concise description of what you expected to happen. 21 | 22 | **Screenshots** 23 | If applicable, add screenshots to help explain your problem. 24 | 25 | **Environment (please complete the following information):** 26 | - Device: [e.g. Desktop, iPhone, etc.] 27 | - OS: [e.g. Windows, macOS, iOS] 28 | - Browser: [e.g. Chrome, Safari] 29 | - Version: [e.g. 22] 30 | - AI Provider Used: [e.g. OpenAI, Anthropic, Gemini] 31 | 32 | **Additional context** 33 | Add any other context about the problem here. -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for CookFast 4 | title: '[FEATURE] ' 5 | labels: enhancement 6 | assignees: '' 7 | --- 8 | 9 | **Is your feature request related to a problem? Please describe.** 10 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 11 | 12 | **Describe the solution you'd like** 13 | A clear and concise description of what you want to happen. 14 | 15 | **Describe alternatives you've considered** 16 | A clear and concise description of any alternative solutions or features you've considered. 17 | 18 | **Would this feature benefit:** 19 | - [ ] All users 20 | - [ ] Specific user types (please specify) 21 | - [ ] Specific document types (please specify) 22 | - [ ] Specific AI providers (please specify) 23 | 24 | **Additional context** 25 | Add any other context or screenshots about the feature request here. -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | ## Description 2 | 3 | 4 | ## Type of change 5 | 6 | - [ ] Bug fix 7 | - [ ] New feature 8 | - [ ] Documentation update 9 | - [ ] Code refactoring 10 | - [ ] Other (please describe): 11 | 12 | ## Related Issues 13 | 14 | Fixes # (issue) 15 | 16 | ## How Has This Been Tested? 17 | 18 | 19 | ## Checklist 20 | - [ ] My code follows the code style of this project 21 | - [ ] I have updated the documentation accordingly 22 | - [ ] I have added tests to cover my changes 23 | - [ ] All new and existing tests passed 24 | - [ ] I have checked for and resolved any linting errors 25 | 26 | ## Screenshots (if applicable) 27 | 28 | 29 | ## Additional context 30 | 31 | 32 | -------------------------------------------------------------------------------- /.github/workflows/branch-protection.yml: -------------------------------------------------------------------------------- 1 | name: Branch Protection 2 | 3 | on: 4 | pull_request: 5 | branches: [ main ] 6 | 7 | jobs: 8 | enforce-protection: 9 | runs-on: ubuntu-latest 10 | steps: 11 | - name: Check if PR author is authorized 12 | id: check-author 13 | run: | 14 | if [[ "${{ github.actor }}" == "lmotwani" || "${{ github.actor }}" == "webvijayi" ]]; then 15 | echo "✅ PR author is an authorized user" 16 | echo "authorized=true" >> $GITHUB_OUTPUT 17 | else 18 | echo "⚠️ PR author is not an authorized user. Review required." 19 | echo "authorized=false" >> $GITHUB_OUTPUT 20 | fi 21 | 22 | - name: Require review if not authorized 23 | if: steps.check-author.outputs.authorized == 'false' 24 | run: | 25 | echo "::notice::This PR requires review from lmotwani or webvijayi before merging." 26 | 27 | build: 28 | runs-on: ubuntu-latest 29 | steps: 30 | - uses: actions/checkout@v3 31 | - name: Set up Node.js 32 | uses: actions/setup-node@v3 33 | with: 34 | node-version: '18' 35 | cache: 'npm' 36 | - name: Install dependencies 37 | run: npm ci 38 | - name: Build 39 | run: npm run build 40 | - name: Lint 41 | run: npm run lint || echo "Linting failed but continuing" -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.* 7 | .yarn/* 8 | !.yarn/patches 9 | !.yarn/plugins 10 | !.yarn/releases 11 | !.yarn/versions 12 | 13 | # testing 14 | /coverage 15 | /.nyc_output 16 | 17 | # next.js 18 | /.next/ 19 | /out/ 20 | 21 | # production 22 | /build 23 | /dist 24 | 25 | # misc 26 | .DS_Store 27 | *.pem 28 | .idea/ 29 | .vscode/ 30 | *.sublime-project 31 | *.sublime-workspace 32 | .project 33 | .settings/ 34 | 35 | # debug 36 | npm-debug.log* 37 | yarn-debug.log* 38 | yarn-error.log* 39 | .pnpm-debug.log* 40 | debug.log 41 | 42 | # local env files 43 | .env 44 | .env.local 45 | .env.development.local 46 | .env.test.local 47 | .env.production.local 48 | .env*.local 49 | 50 | # vercel 51 | .vercel 52 | 53 | # typescript 54 | *.tsbuildinfo 55 | next-env.d.ts 56 | 57 | # serverless 58 | .serverless/ 59 | .serverless_nextjs/ 60 | 61 | # PWA files 62 | public/sw.js 63 | public/workbox-*.js 64 | public/worker-*.js 65 | public/sw.js.map 66 | public/workbox-*.js.map 67 | public/worker-*.js.map 68 | 69 | # Storybook 70 | storybook-static/ 71 | 72 | # Sitemap - allow these files to be tracked 73 | # public/sitemap*.xml 74 | # public/robots.txt 75 | 76 | # Editor directories and files 77 | .vscode/* 78 | !.vscode/extensions.json 79 | !.vscode/settings.json 80 | .idea 81 | *.suo 82 | *.ntvs* 83 | *.njsproj 84 | *.sln 85 | *.sw? 86 | .DS_Store 87 | 88 | # Logs 89 | logs 90 | *.log 91 | 92 | # Cursor editor 93 | .cursor/ 94 | 95 | # WindSurf editor 96 | .windsurf/ 97 | .windsurfrules 98 | 99 | # Local dev overrides 100 | *.local 101 | *.dev 102 | 103 | # Cache 104 | .cache/ 105 | .temp/ 106 | .parcel-cache/ 107 | 108 | # AI generated files 109 | .ai/ 110 | .ai/status/ 111 | .idx/ 112 | Updates.md 113 | 114 | # Temporary files 115 | .temp 116 | /tmp 117 | *.tmp 118 | 119 | # Docs folder 120 | /docs/ 121 | /.docs/ 122 | .docs/ 123 | 124 | # Local Netlify folder 125 | .netlify 126 | -------------------------------------------------------------------------------- /.idx/dev.nix: -------------------------------------------------------------------------------- 1 | # To learn more about how to use Nix to configure your environment 2 | # see: https://firebase.google.com/docs/studio/customize-workspace 3 | {pkgs}: { 4 | # Which nixpkgs channel to use. 5 | channel = "stable-24.05"; # or "unstable" 6 | # Use https://search.nixos.org/packages to find packages 7 | packages = [ 8 | pkgs.nodejs_20 9 | pkgs.yarn 10 | pkgs.nodePackages.pnpm 11 | pkgs.bun 12 | ]; 13 | # Sets environment variables in the workspace 14 | env = {}; 15 | idx = { 16 | # Search for the extensions you want on https://open-vsx.org/ and use "publisher.id" 17 | extensions = [ 18 | # "vscodevim.vim" 19 | ]; 20 | workspace = { 21 | # Runs when a workspace is first created with this `dev.nix` file 22 | onCreate = { 23 | npm-install = "npm ci --no-audit --prefer-offline --no-progress --timing"; 24 | # Open editors for the following files by default, if they exist: 25 | default.openFiles = [ 26 | # Cover all the variations of language, src-dir, router (app/pages) 27 | "pages/index.tsx" "pages/index.js" 28 | "src/pages/index.tsx" "src/pages/index.js" 29 | "app/page.tsx" "app/page.js" 30 | "src/app/page.tsx" "src/app/page.js" 31 | ]; 32 | }; 33 | # To run something each time the workspace is (re)started, use the `onStart` hook 34 | }; 35 | # Enable previews and customize configuration 36 | previews = { 37 | enable = true; 38 | previews = { 39 | web = { 40 | command = ["npm" "run" "dev" "--" "--port" "$PORT" "--hostname" "0.0.0.0"]; 41 | manager = "web"; 42 | }; 43 | }; 44 | }; 45 | }; 46 | } -------------------------------------------------------------------------------- /.idx/integrations.json: -------------------------------------------------------------------------------- 1 | { 2 | "gemini_api": {} 3 | } -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "IDX.aI.enableInlineCompletion": true, 3 | "IDX.aI.enableCodebaseIndexing": true 4 | } -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing to CookFast 🍳🚀 2 | 3 | Thank you for your interest in contributing to CookFast! This document provides guidelines and instructions for contributing to the project. We welcome all types of contributions, whether it's bug reports, feature suggestions, code contributions, or documentation improvements. 4 | 5 | ## Table of Contents 6 | 7 | - [Code of Conduct](#code-of-conduct) 8 | - [How Can I Contribute?](#how-can-i-contribute) 9 | - [Reporting Bugs](#reporting-bugs) 10 | - [Suggesting Features](#suggesting-features) 11 | - [Code Contributions](#code-contributions) 12 | - [Development Workflow](#development-workflow) 13 | - [Setting Up the Development Environment](#setting-up-the-development-environment) 14 | - [Making Changes](#making-changes) 15 | - [Submitting a Pull Request](#submitting-a-pull-request) 16 | - [Style Guides](#style-guides) 17 | - [Git Commit Messages](#git-commit-messages) 18 | - [JavaScript/TypeScript Style Guide](#javascripttypescript-style-guide) 19 | - [CSS Style Guide](#css-style-guide) 20 | - [Additional Notes](#additional-notes) 21 | 22 | ## Code of Conduct 23 | 24 | By participating in this project, you are expected to uphold our Code of Conduct, which is to treat all contributors with respect and foster an inclusive and welcoming community. 25 | 26 | ## How Can I Contribute? 27 | 28 | ### Reporting Bugs 29 | 30 | This section guides you through submitting a bug report for CookFast. Following these guidelines helps maintainers understand your report, reproduce the issue, and find related reports. 31 | 32 | - **Use a clear and descriptive title** for the issue to identify the problem. 33 | - **Describe the exact steps which reproduce the problem** in as much detail as possible. 34 | - **Provide specific examples to demonstrate the steps**. Include links to files or GitHub projects, or copy/pasteable snippets, which you use in those examples. 35 | - **Describe the behavior you observed** after following the steps and point out what exactly is the problem with that behavior. 36 | - **Explain which behavior you expected to see instead** and why. 37 | - **Include screenshots and/or animated GIFs** which show you following the described steps and clearly demonstrate the problem. 38 | - **If the problem is related to performance or memory**, include a performance profile capture with your report. 39 | - **If the problem wasn't triggered by a specific action**, describe what you were doing before the problem happened. 40 | 41 | ### Suggesting Features 42 | 43 | This section guides you through submitting an enhancement suggestion for CookFast, including completely new features and minor improvements to existing functionality. 44 | 45 | - **Use a clear and descriptive title** for the issue to identify the suggestion. 46 | - **Provide a step-by-step description of the suggested enhancement** in as much detail as possible. 47 | - **Provide specific examples to demonstrate the steps** or point out the part of CookFast which the suggestion is related to. 48 | - **Describe the current behavior** and **explain which behavior you expected to see instead** and why. 49 | - **Explain why this enhancement would be useful** to most CookFast users. 50 | - **List some other applications where this enhancement exists**, if applicable. 51 | 52 | ### Code Contributions 53 | 54 | - **Follow the [development workflow](#development-workflow)**. 55 | - **Follow the [style guides](#style-guides)**. 56 | - **Document new code** based on the project's documentation style. 57 | - **End all files with a newline**. 58 | 59 | ## Development Workflow 60 | 61 | ### Setting Up the Development Environment 62 | 63 | 1. Fork the repository. 64 | 2. Clone your fork: `git clone https://github.com/your-username/CookFast.git` 65 | 3. Navigate to the project directory: `cd CookFast` 66 | 4. Install dependencies: `npm install` 67 | 5. Start the development server: `npm run dev` 68 | 69 | ### Making Changes 70 | 71 | 1. Create a new branch: `git checkout -b my-branch-name` 72 | 2. Make your changes. 73 | 3. Test your changes. 74 | 4. Commit your changes with a descriptive commit message. 75 | 76 | ### Submitting a Pull Request 77 | 78 | 1. Push to your fork: `git push origin my-branch-name` 79 | 2. Open a pull request from your branch to the main repository. 80 | 3. Follow the pull request template to describe your changes. 81 | 4. Wait for a maintainer to review your pull request. 82 | 83 | ## Style Guides 84 | 85 | ### Git Commit Messages 86 | 87 | - Use the present tense ("Add feature" not "Added feature") 88 | - Use the imperative mood ("Move cursor to..." not "Moves cursor to...") 89 | - Limit the first line to 72 characters or less 90 | - Reference issues and pull requests liberally after the first line 91 | 92 | ### JavaScript/TypeScript Style Guide 93 | 94 | - Use TypeScript for all new code. 95 | - Follow the existing code style in the project. 96 | - Use meaningful variable and function names. 97 | - Document functions and complex code blocks with comments. 98 | - Use async/await instead of promises where possible. 99 | - Write unit tests for new functionality. 100 | 101 | ### CSS Style Guide 102 | 103 | - Use Tailwind CSS for styling. 104 | - Follow the shadcn/ui component patterns for consistency. 105 | - Use CSS variables for theming when needed. 106 | - Ensure responsive design for all new components. 107 | 108 | ## Additional Notes 109 | 110 | Thank you for contributing to CookFast! Your time and effort help make this project better for everyone. -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 Web Vijayi (https://webvijayi.com) a venture of Web Fortuners (https://webfortuners.com) based in Udaipur Rajasthan and Lokesh Motwani (https://lokeshmotwani.com) 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 🍳🚀 CookFast: AI-Powered Project Planning Documents 🛠️ 2 | 3 | [![License](https://img.shields.io/github/license/webvijayi/cookfast)](https://github.com/webvijayi/cookfast/blob/main/LICENSE) 4 | [![GitHub stars](https://img.shields.io/github/stars/webvijayi/cookfast)](https://github.com/webvijayi/cookfast/stargazers) 5 | [![Twitter Follow](https://img.shields.io/twitter/follow/webvijayi?style=social)](https://twitter.com/webvijayi) 6 | 7 | CookFast is an AI-powered tool that automatically generates comprehensive project documentation, templates, and development guides based on your project details. It helps developers quickly convert ideas into structured plans, reducing the initial project setup time significantly. 8 | 9 | ## ✨ Features 10 | 11 | * **Multiple AI Providers:** Choose between Google Gemini, OpenAI, and Anthropic models. 12 | * Currently using: Google `gemini-2.5-pro-exp-03-25` (Experimental), OpenAI `gpt-4.1`, Anthropic `claude-3-7-sonnet-20250219` (models subject to future updates). 13 | * **Extended Context Windows:** Leverage large context windows of the latest AI models: 14 | * OpenAI GPT-4.1: 1,000,000 tokens context window (32,768 output tokens) 15 | * Gemini 2.5 Pro: 1,048,576 tokens context window (65,536 output tokens) 16 | * Claude 3.7 Sonnet: 200,000 tokens context window (64,000 output tokens) 17 | * **Flexible Document Selection:** Select the specific planning documents you need, such as: 18 | * Project Requirements Document 19 | * Frontend Guidelines 20 | * Backend Structure Proposal 21 | * Application Flow Diagram (Mermaid) 22 | * Tech Stack Documentation 23 | * System Prompts (if applicable) 24 | * File Structure Proposal 25 | * **Markdown Output:** Generates documents in Markdown format, suitable for easy integration into your project's documentation. 26 | * **Mermaid Diagram Support:** Automatically suggests and includes Mermaid syntax for diagrams where appropriate (e.g., App Flow, Backend Structure). 27 | * **API Key Validation:** Includes a client-side check to help validate the format and accessibility of your provided API key before generation. 28 | * **Secure API Key Handling:** Your API keys are **never stored** by the application. They are sent directly to the chosen AI provider for the generation request only. The application is open-source for verification. 29 | * **Rate Limiting:** Basic API rate limiting is implemented to prevent abuse. 30 | * **Dark Mode:** Toggle between light and dark themes for comfortable viewing. 31 | * **Built with Modern Tech:** Next.js, React, TypeScript, Tailwind CSS. 32 | * **JSON Export:** Download a structured JSON file with project details and document sections for AI IDE integration (e.g., Cursor, Windsurf, Aider). 33 | * **Stop Generation:** Cancel an ongoing documentation generation process if needed. 34 | * **Retry Generation:** Easily retry the generation process if it fails or if you want to attempt generation again with the same inputs. 35 | 36 | --- 37 | ## 🧑‍🍳 Frequently Asked Questions 38 | 39 | ### 1. What is CookFast? 40 | CookFast is an AI-powered tool that automatically generates comprehensive project documentation, templates, and development guides based on your project details. It helps developers quickly convert ideas into structured plans, reducing the initial project setup time significantly. 41 | 42 | ### 2. What types of projects can CookFast generate documentation for? 43 | CookFast can generate documentation for a wide range of project types including Web Applications, Websites, Mobile Apps, API Services, Libraries/Packages, and Desktop Applications. The tool tailors the documentation based on the specific needs and requirements of each project type. 44 | 45 | ### 3. Why was CookFast created? 46 | We built CookFast because we often had project ideas (like CookFast itself) and wanted to get started quickly, but planning would take considerable time. We needed a tool that could help us jumpstart projects with AI-powered documentation and planning, allowing us to focus more on implementation rather than initial documentation. 47 | 48 | ### 4. Why is it called 'CookFast'? 49 | The name 'CookFast' comes from the idea that it helps you 'cook up' (prepare) the basics of your idea quickly. Just as a chef prepares ingredients before cooking, CookFast helps prepare your project's foundation fast, so you can start building immediately. 50 | 51 | ### 5. Which AI providers does CookFast support? 52 | Currently, CookFast supports multiple AI providers including OpenAI (GPT-4.1), Anthropic (Claude 3.7 Sonnet), and Google (Gemini 2.5 Pro). Each provider offers different capabilities: 53 | - GPT-4.1 supports up to 1,000,000 tokens of context and can generate up to 32,768 output tokens 54 | - Gemini 2.5 Pro allows 1,048,576 input tokens and up to 65,536 output tokens 55 | - Claude 3.7 Sonnet has a 200,000-token context window with 64,000 output tokens 56 | 57 | ### 6. Do I need to provide my own API keys? 58 | Yes, you'll need to provide your own API key for the AI provider you choose to use. This ensures your data security and gives you control over which AI model processes your project information. 59 | 60 | ### 7. What types of documentation can CookFast generate? 61 | CookFast can generate requirements documents, frontend guidelines, backend architecture, application flow, tech stack documentation, system prompts, and file structure documentation. 62 | 63 | ### 8. Can I customize the documentation CookFast generates? 64 | Yes! You can customize the documentation by adjusting your project details and selecting specific document types. After generation, you can also download the documentation as Markdown or JSON and then modify it to suit your specific needs. We're also working on more customization options in future updates. 65 | 66 | ### 9. Is my API key saved? 67 | No. API keys are validated client-side and never stored by CookFast. They are sent directly to the chosen AI provider for the generation request only. 68 | 69 | ## Getting Started 70 | 71 | ### Prerequisites 72 | 73 | * Node.js (Version 20 or later recommended) 74 | * npm, yarn, or pnpm 75 | * An API key for at least one of the supported AI providers: 76 | * [OpenAI API](https://platform.openai.com/) 77 | * [Anthropic API](https://www.anthropic.com/product) 78 | * [Google Gemini API](https://ai.google.dev/) 79 | 80 | ### Installation & Running Locally 81 | 82 | 1. **Clone the repository:** 83 | ```bash 84 | git clone https://github.com/webvijayi/CookFast.git 85 | cd CookFast 86 | ``` 87 | 88 | 2. **Install dependencies:** 89 | ```bash 90 | npm install 91 | # or 92 | yarn install 93 | # or 94 | pnpm install 95 | ``` 96 | 97 | 3. **Run the development server:** 98 | ```bash 99 | npm run dev 100 | ``` 101 | 102 | 4. Open [http://localhost:3000](http://localhost:3000) with your browser to see the application. 103 | 104 | ## 🌐 Live Demo 105 | 106 | **[https://cook-fast.netlify.app/](https://cook-fast.netlify.app/)** 107 | 108 | ### How to Use 109 | 110 | 1. Select your preferred AI Provider (Gemini, OpenAI, or Anthropic). 111 | 2. Enter your corresponding API Key and optionally click "Test" to validate it. 112 | 3. Fill in the details about your project (Name, Type, Goal, Features, Tech Stack). 113 | 4. Select the checkboxes for the document types you want to generate. 114 | 5. Click "Cook Up Docs!". 115 | 6. While generating, a "Stop Generation" button is available if you need to cancel. 116 | 7. The generated Markdown content will appear in the results area below the form. 117 | 8. If the generation fails or you want to try again, a "Retry Generation" button will be available in the results area. 118 | 119 | --- 120 | 121 | ## ❤️ Support & Contribution 122 | 123 | Found CookFast helpful? Here are a few ways you can support the project: 124 | 125 | * ⭐ **Star the Repository:** If you like the project, please star it on [GitHub](https://github.com/webvijayi/CookFast)! It helps with visibility. 126 | * ☕ **Donate:** Support the development by buying me a coffee!
**Buy Me A Coffee** 127 | * 🐞 **Report Bugs / Suggest Features:** Found a bug or have an idea? Open an issue on the [GitHub Issues page](https://github.com/webvijayi/CookFast/issues). 128 | * 🤝 **Contribute Code:** Pull requests are welcome! Feel free to fork the repository and submit your improvements. 129 | * 📧 **Contact:** For other inquiries, you can reach out to **care [at] webvijayi [dot] com**. 130 | 131 | --- 132 | 133 | ## 🚀 Deployment 134 | 135 | This application is configured for deployment on platforms like Netlify or Vercel which support Next.js applications with API routes. The code is designed to be easily deployable on platforms like Vercel, Netlify, or your own server. 136 | 137 | ### Netlify Blobs Integration 138 | 139 | CookFast uses Netlify Blobs for storing generated documents in production environments: 140 | 141 | - **Zero Configuration**: Netlify Blobs is automatically configured when deployed on Netlify 142 | - **Persistent Storage**: Documents are stored persistently even through redeployments 143 | - **Local Development**: In local development, files are stored in the `tmp` directory as a fallback 144 | - **High Availability**: Netlify Blobs provides a highly-available, scalable storage solution 145 | 146 | To work with Netlify Blobs locally, you can use the following commands: 147 | 148 | ```bash 149 | # Start Netlify dev environment 150 | npm run netlify:dev 151 | 152 | # List all blobs in the store 153 | npm run netlify:blobs:list 154 | 155 | # Delete a specific blob 156 | npm run netlify:blobs:delete generationResults/YOUR_REQUEST_ID 157 | ``` 158 | 159 | For more information about Netlify Blobs, see the [documentation](.docs/netlify-blobs.md). 160 | 161 | --- 162 | 163 | ## Learn More (Default Next.js Info) 164 | 165 | To learn more about the underlying Next.js framework, take a look at the following resources: 166 | 167 | - [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. 168 | - [Learn Next.js](https://nextjs.org/learn-pages-router) - an interactive Next.js tutorial. 169 | -------------------------------------------------------------------------------- /SECURITY.md: -------------------------------------------------------------------------------- 1 | # Security Policy 2 | 3 | ## Reporting a Vulnerability 4 | 5 | At CookFast, we take security seriously. We appreciate the work of security researchers in helping us maintain a secure application for our users. 6 | 7 | ### How to Report a Vulnerability 8 | 9 | If you believe you've found a security vulnerability in CookFast, please follow these steps: 10 | 11 | 1. **Use GitHub's Private Vulnerability Reporting**: Go to the "Security" tab on our GitHub repository and click on "Report a vulnerability" 12 | 13 | 2. **Alternatively, contact maintainers directly**: If needed, you can email us at Care[at]webvijayi.com and me[at]lokeshmotwani.com with the subject line "CookFast Security Vulnerability" 14 | 15 | ### What to Include in Your Report 16 | 17 | Please include the following details in your vulnerability report: 18 | 19 | - Description of the vulnerability 20 | - Steps to reproduce the issue 21 | - Potential impact of the vulnerability 22 | - Any potential solutions you've identified (optional) 23 | 24 | ### Our Commitment 25 | 26 | We commit to: 27 | 28 | - Responding to security reports within 48 hours 29 | - Keeping reporters updated as we address the issue 30 | - Giving proper credit to security researchers who help us improve our security (unless they prefer to remain anonymous) 31 | - Not taking legal action against those who report vulnerabilities in good faith 32 | 33 | ## Security Measures 34 | 35 | CookFast implements the following security measures: 36 | 37 | - API keys are never stored by the application 38 | - Keys are sent directly to the chosen AI provider for the generation request only 39 | - API key validation happens client-side before submission 40 | - Basic rate limiting is implemented to prevent abuse 41 | - Regular dependency updates to patch known vulnerabilities 42 | 43 | Thank you for helping keep CookFast and its users safe! 44 | -------------------------------------------------------------------------------- /browserslist: -------------------------------------------------------------------------------- 1 | last 2 versions 2 | > 0.5% 3 | not dead 4 | not IE 11 5 | -------------------------------------------------------------------------------- /components.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://ui.shadcn.com/schema.json", 3 | "style": "default", 4 | "rsc": false, 5 | "tsx": true, 6 | "tailwind": { 7 | "config": "tailwind.config.js", 8 | "css": "src/styles/globals.css", 9 | "baseColor": "neutral", 10 | "cssVariables": true, 11 | "prefix": "" 12 | }, 13 | "aliases": { 14 | "components": "@/components", 15 | "utils": "@/lib/utils", 16 | "ui": "@/components/ui", 17 | "lib": "@/lib", 18 | "hooks": "@/hooks" 19 | }, 20 | "iconLibrary": "lucide" 21 | } -------------------------------------------------------------------------------- /deno.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "jsx": "react-jsx", 4 | "jsxImportSource": "https://esm.sh/react@18.2.0" 5 | }, 6 | "importMap": { 7 | "imports": { 8 | "react": "https://esm.sh/react@18.2.0", 9 | "react/": "https://esm.sh/react@18.2.0/" 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /eslint.config.mjs: -------------------------------------------------------------------------------- 1 | import { dirname } from "path"; 2 | import { fileURLToPath } from "url"; 3 | import { FlatCompat } from "@eslint/eslintrc"; 4 | 5 | const __filename = fileURLToPath(import.meta.url); 6 | const __dirname = dirname(__filename); 7 | 8 | const compat = new FlatCompat({ 9 | baseDirectory: __dirname, 10 | }); 11 | 12 | const eslintConfig = [ 13 | ...compat.extends("next/core-web-vitals", "next/typescript"), 14 | ]; 15 | 16 | export default eslintConfig; 17 | -------------------------------------------------------------------------------- /netlify.toml: -------------------------------------------------------------------------------- 1 | # Netlify build configuration for a Next.js project 2 | 3 | [build] 4 | # Command to build the Next.js application and ensure static assets are properly copied 5 | command = "npm run build && cp -r public/* .next/static/ && cp public/cookfast-og.png .next/" 6 | 7 | # Explicitly set the publish directory for Next.js builds 8 | # Next.js uses .next for its build, but we need to make sure 9 | # static assets from public are also included 10 | publish = ".next" 11 | 12 | # Directory containing serverless functions (API routes) 13 | # Netlify's Next.js runtime automatically detects functions in pages/api. 14 | # functions = "netlify/functions" # Typically not needed for Next.js API routes 15 | 16 | [dev] 17 | # Optional: Settings for local development using Netlify Dev CLI 18 | command = "npm run dev" # Command to start your dev server 19 | port = 3000 # Port your dev server runs on 20 | publish = ".next" # Dev server build directory (if applicable) 21 | 22 | # Plugin for essential Next.js features on Netlify 23 | [[plugins]] 24 | package = "@netlify/plugin-nextjs" 25 | 26 | # Configure paths for functions 27 | [functions] 28 | # Next.js API routes are stored in src/pages/api, but Netlify expects them in netlify/functions 29 | directory = "src/pages/api" 30 | node_bundler = "esbuild" 31 | # Note: Node.js version is set via environment variable in Netlify UI 32 | included_files = ["public/**/*"] # Include public directory for static assets 33 | 34 | # Configure generate-docs as a background function 35 | [functions."generate-docs"] 36 | node_bundler = "esbuild" 37 | background = true 38 | timeout = "900" # 15 minutes for background functions 39 | memory = 1024 # 1GB memory 40 | included_files = ["!node_modules/**/*", "public/**/*"] # Exclude node_modules to reduce bundle size, include public directory 41 | 42 | # Environment variables configuration 43 | [build.environment] 44 | # Set Netlify Blobs context - This variable is automatically set by Netlify but defining it here ensures it's available 45 | NETLIFY_BLOBS_CONTEXT = "production" 46 | # Node version 47 | NODE_VERSION = "18" 48 | 49 | # Edge Function configuration for Open Graph image generation 50 | [[edge_functions]] 51 | function = "og" 52 | path = "/api/og" 53 | 54 | # Handle OPTIONS requests for the OG endpoint (needed for some crawlers) 55 | [[headers]] 56 | for = "/api/og" 57 | [headers.values] 58 | Access-Control-Allow-Origin = "*" 59 | Access-Control-Allow-Methods = "GET, OPTIONS" 60 | Access-Control-Allow-Headers = "Accept-Encoding, Content-Type" 61 | X-Frame-Options = "DENY" 62 | X-Content-Type-Options = "nosniff" 63 | Content-Type = "image/png" 64 | Cache-Control = "public, max-age=300, s-maxage=3600" 65 | 66 | # Fallback rules for OG images if Edge Function fails 67 | [[redirects]] 68 | from = "/api/og-fallback" 69 | to = "/cookfast-og.png" 70 | status = 200 71 | force = true 72 | 73 | # Ensure proper handling of OpenGraph image requests 74 | [[headers]] 75 | for = "/cookfast-og.png" 76 | [headers.values] 77 | Cache-Control = "public, max-age=86400, s-maxage=31536000" 78 | Content-Type = "image/png" 79 | -------------------------------------------------------------------------------- /netlify/edge-functions/og.tsx: -------------------------------------------------------------------------------- 1 | /// 2 | 3 | // Disable TypeScript checking for dynamic URL imports in Edge Functions 4 | // @ts-nocheck 5 | 6 | // For production stability, pin to specific versions 7 | const REACT_VERSION = "18.2.0"; 8 | 9 | // We need to use dynamic import for ESM modules in Edge Functions 10 | import React from 'https://esm.sh/react@18.2.0?dts'; 11 | import { ImageResponse } from "https://deno.land/x/og_edge/mod.ts"; 12 | 13 | // Define the URL for the fallback image - using a local file instead of external URL 14 | // Removed space from filename for better URL compatibility 15 | const FALLBACK_IMAGE_URL = "/cookfast-og.png"; 16 | 17 | // Cache settings - use shorter cache to help with debugging 18 | const CACHE_CONTROL_HEADER = "public, max-age=300, s-maxage=3600"; // 5 min browser cache, 1 hour CDN cache 19 | 20 | /** 21 | * Netlify Edge Function handler for generating OpenGraph images 22 | * This function generates dynamic OG images for social media with appropriate caching 23 | * @param {Request} req - The incoming request object 24 | * @returns {Response} - The generated image or fallback 25 | */ 26 | export default async function handler(req: Request) { 27 | try { 28 | // Check for Accept-Encoding header to determine if client supports compression 29 | const acceptEncoding = req.headers.get('Accept-Encoding') || ''; 30 | const supportsCompression = acceptEncoding.includes('gzip') || acceptEncoding.includes('deflate'); 31 | 32 | const url = new URL(req.url); 33 | 34 | // Get optional customization parameters 35 | const title = url.searchParams.get("title") || "🍳🚀 CookFast"; 36 | const subtitle = url.searchParams.get("subtitle") || "AI-Powered Documentation Generator"; 37 | const theme = url.searchParams.get("theme") || "light"; 38 | 39 | // Define colors based on theme 40 | const bgColor = theme === "dark" ? "#09090B" : "#FFFFFF"; 41 | const textColor = theme === "dark" ? "#FFFFFF" : "#09090B"; 42 | 43 | // Generate the dynamic image with optimized response headers 44 | const imageResponse = new ImageResponse( 45 | ( 46 |
63 | {/* Simple Background */} 64 |
78 | 79 | {/* Content Container - Simplified for better compatibility */} 80 |
94 | {/* Logo Text */} 95 |
102 | 🍳 103 | 🚀 104 | 111 | CookFast 112 | 113 |
114 | 115 | {/* Subtitle */} 116 |
125 | {subtitle} 126 |
127 |
128 | 129 | {/* Decorative Elements */} 130 |
139 | cook-fast.webvijayi.com 140 |
141 |
142 | ), 143 | { 144 | width: 1200, 145 | height: 630, 146 | // Optimize for better compatibility 147 | emoji: "twemoji", 148 | debug: false, 149 | }, 150 | ); 151 | 152 | // Get the image data as an array buffer 153 | const imageData = await imageResponse.arrayBuffer(); 154 | 155 | // Create a properly formatted response with explicit content-type and length 156 | return new Response(imageData, { 157 | status: 200, 158 | headers: { 159 | "Content-Type": "image/png", 160 | "Content-Length": imageData.byteLength.toString(), 161 | "Cache-Control": CACHE_CONTROL_HEADER, 162 | "Accept-Encoding": "gzip, deflate", // Tell proxies what we accept 163 | "Vary": "Accept-Encoding", // Indicate that response varies based on Accept-Encoding 164 | "Access-Control-Allow-Origin": "*", 165 | "X-Content-Type-Options": "nosniff", 166 | "X-Netlify-Og": "edge-function" // Debugging header 167 | }, 168 | }); 169 | } catch (e: any) { 170 | console.error(`Error generating OG image: ${e.message}. Attempting to serve fallback.`); 171 | 172 | try { 173 | // Get the origin from the request URL to build the absolute fallback URL 174 | const { origin } = new URL(req.url); 175 | // Fetch the static fallback image from our own domain 176 | const fallbackResponse = await fetch(`${origin}${FALLBACK_IMAGE_URL}`); 177 | 178 | if (!fallbackResponse.ok) { 179 | // Log if fallback fetch fails 180 | console.error(`Failed to fetch fallback image: ${fallbackResponse.status} ${fallbackResponse.statusText}`); 181 | // Return a simple error response with proper headers 182 | return new Response("Failed to generate image", { 183 | status: 500, 184 | headers: { 185 | "Content-Type": "text/plain", 186 | "Cache-Control": "no-cache" 187 | } 188 | }); 189 | } 190 | 191 | // Get the fallback image data 192 | const imageBuffer = await fallbackResponse.arrayBuffer(); 193 | 194 | // Return the fallback image with proper headers 195 | return new Response(imageBuffer, { 196 | status: 200, 197 | headers: { 198 | "Content-Type": "image/png", 199 | "Content-Length": imageBuffer.byteLength.toString(), 200 | "Cache-Control": CACHE_CONTROL_HEADER, 201 | "Accept-Encoding": "gzip, deflate", // Tell proxies what we accept 202 | "Vary": "Accept-Encoding", // Indicate that response varies based on Accept-Encoding 203 | "Access-Control-Allow-Origin": "*", 204 | "X-Content-Type-Options": "nosniff", 205 | "X-Fallback-Image": "true" // Debugging header to indicate fallback was used 206 | }, 207 | }); 208 | } catch (fallbackError: any) { 209 | // Log if there's an error during the fallback fetch process 210 | console.error(`Error fetching fallback image: ${fallbackError.message}`); 211 | // Return a simple error response 212 | return new Response("Failed to generate image", { 213 | status: 500, 214 | headers: { 215 | "Content-Type": "text/plain", 216 | "Cache-Control": "no-cache" 217 | } 218 | }); 219 | } 220 | } 221 | } -------------------------------------------------------------------------------- /next.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('next').NextConfig} */ 2 | const nextConfig = { 3 | reactStrictMode: true, 4 | eslint: { 5 | // Warning: This allows production builds to successfully complete even if 6 | // your project has ESLint errors. 7 | ignoreDuringBuilds: true, 8 | }, 9 | // Add external packages for server components 10 | serverExternalPackages: [], 11 | // Disable TypeScript type checking during build to allow Edge Function imports 12 | typescript: { 13 | // !! WARN !! 14 | // This allows production builds to successfully complete even if 15 | // your project has TypeScript errors. 16 | ignoreBuildErrors: true, 17 | }, 18 | }; 19 | 20 | module.exports = nextConfig; -------------------------------------------------------------------------------- /next.config.ts: -------------------------------------------------------------------------------- 1 | import type { NextConfig } from "next"; 2 | 3 | const nextConfig: NextConfig = { 4 | reactStrictMode: true, 5 | // Add this experimental block to allow the development server origin 6 | experimental: { 7 | allowedDevOrigins: [ 8 | // Add the specific origin from the warning message 9 | "http://3000-idx-docs-generator-1744546436209.cluster-mwrgkbggpvbq6tvtviraw2knqg.cloudworkstations.dev" 10 | // You might add other origins if needed, e.g., for Codespaces 11 | ], 12 | }, 13 | }; 14 | 15 | export default nextConfig; 16 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "out", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "dev": "next dev --turbopack", 7 | "build": "next build", 8 | "start": "next start", 9 | "lint": "next lint", 10 | "netlify:dev": "netlify dev", 11 | "netlify:blobs:list": "netlify blobs:list", 12 | "netlify:blobs:delete": "netlify blobs:delete" 13 | }, 14 | "dependencies": { 15 | "@anthropic-ai/sdk": "^0.39.0", 16 | "@google/generative-ai": "^0.24.0", 17 | "@heroicons/react": "^2.2.0", 18 | "@mermaid-js/parser": "^0.4.0", 19 | "@netlify/blobs": "^8.2.0", 20 | "@netlify/edge-functions": "^2.11.1", 21 | "@netlify/functions": "^3.0.4", 22 | "@radix-ui/react-accordion": "^1.2.7", 23 | "@radix-ui/react-checkbox": "^1.2.2", 24 | "@radix-ui/react-dropdown-menu": "^2.1.10", 25 | "@radix-ui/react-label": "^2.1.4", 26 | "@radix-ui/react-radio-group": "^1.3.2", 27 | "@radix-ui/react-scroll-area": "^1.2.5", 28 | "@radix-ui/react-slot": "^1.2.0", 29 | "@radix-ui/react-tabs": "^1.1.7", 30 | "@types/react-syntax-highlighter": "^15.5.13", 31 | "@vercel/og": "^0.6.8", 32 | "class-variance-authority": "^0.7.1", 33 | "clsx": "^2.1.1", 34 | "cross-fetch": "^4.1.0", 35 | "framer-motion": "^12.7.4", 36 | "lru-cache": "^11.1.0", 37 | "lucide-react": "^0.501.0", 38 | "mermaid": "^11.6.0", 39 | "next": "15.2.5", 40 | "next-themes": "^0.4.6", 41 | "node-abort-controller": "^3.1.1", 42 | "openai": "^4.93.0", 43 | "react": "^19.0.0", 44 | "react-dom": "^19.0.0", 45 | "react-markdown": "^10.1.0", 46 | "react-syntax-highlighter": "^15.6.1", 47 | "remark-gfm": "^4.0.1", 48 | "remark-mermaidjs": "^7.0.0", 49 | "tailwind-merge": "^3.2.0", 50 | "tailwindcss-animate": "^1.0.7", 51 | "zod": "^3.24.3" 52 | }, 53 | "devDependencies": { 54 | "@eslint/eslintrc": "^3", 55 | "@types/mermaid": "^9.1.0", 56 | "@types/node": "^20", 57 | "@types/react": "^19", 58 | "@types/react-dom": "^19", 59 | "autoprefixer": "^10.4.21", 60 | "browserslist": "^4.21.10", 61 | "eslint": "^9", 62 | "eslint-config-next": "15.2.5", 63 | "netlify-cli": "^20.0.3", 64 | "postcss": "^8.5.3", 65 | "tailwindcss": "^3.4.17", 66 | "typescript": "^5" 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | } 7 | -------------------------------------------------------------------------------- /postcss.config.mjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | } 7 | -------------------------------------------------------------------------------- /public/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webvijayi/CookFast/d065cb9a1bda176dfbcf1a79af5224e78c85a2b3/public/android-chrome-192x192.png -------------------------------------------------------------------------------- /public/android-chrome-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webvijayi/CookFast/d065cb9a1bda176dfbcf1a79af5224e78c85a2b3/public/android-chrome-512x512.png -------------------------------------------------------------------------------- /public/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webvijayi/CookFast/d065cb9a1bda176dfbcf1a79af5224e78c85a2b3/public/apple-touch-icon.png -------------------------------------------------------------------------------- /public/cookfast og.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webvijayi/CookFast/d065cb9a1bda176dfbcf1a79af5224e78c85a2b3/public/cookfast og.png -------------------------------------------------------------------------------- /public/cookfast-og.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webvijayi/CookFast/d065cb9a1bda176dfbcf1a79af5224e78c85a2b3/public/cookfast-og.png -------------------------------------------------------------------------------- /public/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webvijayi/CookFast/d065cb9a1bda176dfbcf1a79af5224e78c85a2b3/public/favicon-16x16.png -------------------------------------------------------------------------------- /public/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webvijayi/CookFast/d065cb9a1bda176dfbcf1a79af5224e78c85a2b3/public/favicon-32x32.png -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webvijayi/CookFast/d065cb9a1bda176dfbcf1a79af5224e78c85a2b3/public/favicon.ico -------------------------------------------------------------------------------- /public/file.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/fire.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/globe.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/google2043a05eb370b7b7.html: -------------------------------------------------------------------------------- 1 | google-site-verification: google2043a05eb370b7b7.html -------------------------------------------------------------------------------- /public/heart.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/lightning.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/llms.txt: -------------------------------------------------------------------------------- 1 | # CookFast 2 | 3 | > CookFast is an AI-powered tool that automatically generates comprehensive project documentation, templates, and development guides based on your project details. 4 | 5 | CookFast helps developers quickly convert ideas into structured plans, reducing initial project setup time significantly while supporting multiple AI providers (Google Gemini, OpenAI, and Anthropic). The tool leverages large context windows of the latest AI models, including OpenAI GPT-4.1 (1M tokens), Gemini 2.5 Pro (1M+ tokens), and Claude 3.7 Sonnet (200K tokens). 6 | 7 | ## Supported Project Types 8 | CookFast generates tailored documentation for various project types: 9 | 10 | - **Web Applications**: Full-stack web apps with frontend/backend architecture 11 | - **Websites**: Content-focused sites with SEO and performance optimization 12 | - **Mobile Apps**: Native or cross-platform mobile application development 13 | - **API Services**: RESTful or GraphQL API design and implementation 14 | - **Libraries/Packages**: Reusable code modules and development libraries 15 | - **Desktop Applications**: Native desktop software for Windows, macOS, or Linux 16 | 17 | ## Document Types 18 | CookFast can generate the following planning documents: 19 | 20 | - **Project Requirements Document**: Comprehensive breakdown of functional and non-functional requirements, user stories, acceptance criteria, and project scope 21 | - **Frontend Guidelines**: Component architecture, state management strategies, styling conventions, responsive design principles, and accessibility standards 22 | - **Backend Structure Proposal**: API design, database schema, authentication flows, middleware configuration, and service architecture 23 | - **Application Flow Diagram**: Visual Mermaid diagrams showing user journeys, data flows, and system interactions 24 | - **Tech Stack Documentation**: Detailed analysis of selected technologies, libraries, frameworks with justifications and alternatives 25 | - **API Documentation**: Endpoint specifications, request/response formats, authentication methods, and error handling 26 | - **File Structure Proposal**: Recommended project organization with directories and key files explained 27 | - **User Interface Design**: Design system guidelines, component library recommendations, and UI patterns 28 | - **Deployment Guide**: Environment setup, CI/CD pipeline configuration, and hosting recommendations 29 | 30 | ## AI Provider Integration 31 | CookFast seamlessly integrates with multiple AI providers: 32 | 33 | - **OpenAI**: Uses GPT-4.1 with 1,000,000 token context window (32,768 output tokens) 34 | - **Google**: Leverages Gemini 2.5 Pro with 1,048,576 token context window (65,536 output tokens) 35 | - **Anthropic**: Employs Claude 3.7 Sonnet with 200,000 token context window (64,000 output tokens) 36 | 37 | ## Documentation 38 | - [Project Overview](https://github.com/webvijayi/CookFast#-cookfast-ai-powered-project-planning-documents-): Features and capabilities 39 | - [Installation Guide](https://github.com/webvijayi/CookFast#installation--running-locally): Setup and local development 40 | - [API Documentation](https://github.com/webvijayi/CookFast/blob/main/docs/api-documentation.md): API endpoints and usage 41 | 42 | ## Tutorials 43 | - [Getting Started](https://github.com/webvijayi/CookFast#-how-to-use): Basic usage guide 44 | - [Using Different AI Providers](https://github.com/webvijayi/CookFast#1-which-ai-providers-does-cookfast-support): Configuring AI models 45 | - [Document Generation Examples](https://github.com/webvijayi/CookFast#-features): Sample outputs and use cases 46 | 47 | ## Document Type & Project Type Compatibility 48 | 49 | | Document Type | Web Apps | Websites | Mobile Apps | API Services | Libraries | Desktop Apps | 50 | |-----------------------------|:--------:|:--------:|:-----------:|:------------:|:---------:|:------------:| 51 | | Project Requirements | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | 52 | | Frontend Guidelines | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | 53 | | Backend Structure | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | 54 | | Application Flow Diagram | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | 55 | | Tech Stack Documentation | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | 56 | | API Documentation | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | 57 | | File Structure Proposal | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | 58 | | User Interface Design | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | 59 | | Deployment Guide | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | 60 | 61 | ## Optional 62 | - [Contributing Guidelines](https://github.com/webvijayi/CookFast/blob/main/.github/CONTRIBUTING.md): How to contribute 63 | - [Security Policy](https://github.com/webvijayi/CookFast/blob/main/SECURITY.md): Reporting vulnerabilities 64 | - [API Key Setup](https://github.com/webvijayi/CookFast#6-do-i-need-to-provide-my-own-api-keys): Configuring provider keys 65 | - [Deployment Guide](https://github.com/webvijayi/CookFast#-deployment): Deploying to Netlify or Vercel -------------------------------------------------------------------------------- /public/next.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/robots.txt: -------------------------------------------------------------------------------- 1 | # Allow all crawlers 2 | User-agent: * 3 | Allow: / 4 | 5 | # Sitemap location 6 | Sitemap: https://cook-fast.webvijayi.com/sitemap.xml -------------------------------------------------------------------------------- /public/rocket.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/site.webmanifest: -------------------------------------------------------------------------------- 1 | {"name":"CookFast","short_name":"CookFast","icons":[{"src":"https://cook-fast.webvijayi.com/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"https://cook-fast.webvijayi.com/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"} -------------------------------------------------------------------------------- /public/sitemap.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | https://cook-fast.webvijayi.com/ 5 | 2024-10-29 6 | monthly 7 | 1.0 8 | 9 | -------------------------------------------------------------------------------- /public/star.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/vercel.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/waving-hand.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/window.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/components/AnimatedHero.tsx: -------------------------------------------------------------------------------- 1 | 'use client'; 2 | 3 | import React, { useEffect, useState } from 'react'; 4 | import { Button } from "@/components/ui/button"; 5 | 6 | // Animated hero section with sensible document-project type combinations 7 | export default function AnimatedHero() { 8 | // Project types with emojis for the animation 9 | const projectTypes = [ 10 | { 11 | id: 'web-app', 12 | name: 'Web Applications', 13 | emoji: '🌐', 14 | color: 'text-blue-600' 15 | }, 16 | { 17 | id: 'website', 18 | name: 'Websites', 19 | emoji: '🖥️', 20 | color: 'text-purple-600' 21 | }, 22 | { 23 | id: 'mobile', 24 | name: 'Mobile Apps', 25 | emoji: '📱', 26 | color: 'text-green-600' 27 | }, 28 | { 29 | id: 'api', 30 | name: 'API Services', 31 | emoji: '🔌', 32 | color: 'text-amber-600' 33 | }, 34 | { 35 | id: 'library', 36 | name: 'Libraries & Packages', 37 | emoji: '📦', 38 | color: 'text-indigo-600' 39 | }, 40 | { 41 | id: 'desktop', 42 | name: 'Desktop Applications', 43 | emoji: '💻', 44 | color: 'text-rose-600' 45 | }, 46 | ]; 47 | 48 | // Document types with project type compatibility 49 | const documentTypes = [ 50 | { 51 | name: 'Requirements Documents', 52 | emoji: '📝', 53 | color: 'text-blue-500', 54 | compatibleWith: ['web-app', 'website', 'mobile', 'api', 'library', 'desktop'] // All 55 | }, 56 | { 57 | name: 'Frontend Guidelines', 58 | emoji: '🎨', 59 | color: 'text-purple-500', 60 | compatibleWith: ['web-app', 'website', 'mobile', 'desktop'] // UI-focused projects 61 | }, 62 | { 63 | name: 'Backend Architecture', 64 | emoji: '⚙️', 65 | color: 'text-green-500', 66 | compatibleWith: ['web-app', 'api', 'library', 'desktop'] // Backend-focused projects 67 | }, 68 | { 69 | name: 'Application Flow', 70 | emoji: '🔄', 71 | color: 'text-amber-500', 72 | compatibleWith: ['web-app', 'mobile', 'desktop'] // Full applications 73 | }, 74 | { 75 | name: 'Tech Stack Overview', 76 | emoji: '💻', 77 | color: 'text-indigo-500', 78 | compatibleWith: ['web-app', 'website', 'mobile', 'api', 'library', 'desktop'] // All 79 | }, 80 | { 81 | name: 'API Documentation', 82 | emoji: '🤖', 83 | color: 'text-rose-500', 84 | compatibleWith: ['web-app', 'api', 'library'] // API-related projects 85 | }, 86 | { 87 | name: 'File Structure', 88 | emoji: '📁', 89 | color: 'text-teal-500', 90 | compatibleWith: ['web-app', 'website', 'mobile', 'api', 'library', 'desktop'] // All 91 | }, 92 | { 93 | name: 'User Interface Design', 94 | emoji: '🎯', 95 | color: 'text-pink-500', 96 | compatibleWith: ['web-app', 'website', 'mobile', 'desktop'] // UI-focused projects 97 | }, 98 | { 99 | name: 'Deployment Guide', 100 | emoji: '🚀', 101 | color: 'text-orange-500', 102 | compatibleWith: ['web-app', 'website', 'api', 'desktop'] // Deployable projects 103 | }, 104 | ]; 105 | 106 | // Create valid combinations based on compatibility 107 | const combinations: Array<{ 108 | projectId: string; 109 | projectName: string; 110 | projectEmoji: string; 111 | projectColor: string; 112 | docName: string; 113 | docEmoji: string; 114 | docColor: string; 115 | }> = []; 116 | 117 | projectTypes.forEach(project => { 118 | const compatibleDocs = documentTypes.filter(doc => 119 | doc.compatibleWith.includes(project.id) 120 | ); 121 | 122 | compatibleDocs.forEach(doc => { 123 | combinations.push({ 124 | projectId: project.id, 125 | projectName: project.name, 126 | projectEmoji: project.emoji, 127 | projectColor: project.color, 128 | docName: doc.name, 129 | docEmoji: doc.emoji, 130 | docColor: doc.color 131 | }); 132 | }); 133 | }); 134 | 135 | // State variables for animation 136 | const [currentIndex, setCurrentIndex] = useState(0); 137 | const [isVisible, setIsVisible] = useState(true); 138 | const [animationClass, setAnimationClass] = useState('fade-in-up'); 139 | const [particles, setParticles] = useState>([]); 147 | 148 | // Animation effect to cycle through combinations 149 | useEffect(() => { 150 | const interval = setInterval(() => { 151 | // Start fade out animation 152 | setAnimationClass('fade-out-down'); 153 | setIsVisible(false); 154 | 155 | setTimeout(() => { 156 | // Change to next valid combination 157 | setCurrentIndex((prevIndex) => (prevIndex + 1) % combinations.length); 158 | 159 | // Prepare for fade in animation 160 | setAnimationClass('fade-in-up'); 161 | setIsVisible(true); 162 | }, 500); 163 | }, 2500); // Slightly faster animation for better flow 164 | 165 | return () => clearInterval(interval); 166 | }, [combinations.length]); 167 | 168 | // Generate particles on client-side only 169 | useEffect(() => { 170 | const newParticles = Array(20).fill(null).map(() => ({ 171 | top: Math.random() * 100, 172 | left: Math.random() * 100, 173 | width: Math.random() * 10 + 5, 174 | height: Math.random() * 10 + 5, 175 | duration: Math.random() * 5 + 5, 176 | delay: Math.random() * 5 177 | })); 178 | setParticles(newParticles); 179 | }, []); 180 | 181 | // Get current combination 182 | const currentCombination = combinations[currentIndex]; 183 | 184 | return ( 185 |
186 | {/* Background glow effect */} 187 |
188 | 189 |
190 | {/* Floating particles effect */} 191 |
192 | {particles.map((particle, i) => ( 193 |
205 | ))} 206 |
207 | 208 | {/* Main content */} 209 |
210 |
211 | 🍳 212 | 🚀 213 |
214 | 215 |

216 | CookFast 217 |

218 | 219 |
220 | Quickly generate comprehensive AI-powered project planning documents 221 | 222 | {/* Animated document-project combinations with improved mobile styling */} 223 |
224 |
230 | {/* Responsive layout - stacks on mobile with improved spacing */} 231 |
232 | {/* Document type - always show full name with larger font */} 233 |
234 | {currentCombination.docEmoji} 235 | {currentCombination.docName} 236 |
237 | 238 | {/* For word - now in italics */} 239 |
240 | for 241 |
242 | 243 | {/* Project type - with larger font */} 244 |
245 | {currentCombination.projectEmoji} 246 | {currentCombination.projectName} 247 |
248 |
249 |
250 |
251 | 252 | in minutes! 253 |
254 | 255 |
256 | 263 | 264 | 282 |
283 |
284 |
285 |
286 | ); 287 | } -------------------------------------------------------------------------------- /src/components/EnhancedFooter.tsx: -------------------------------------------------------------------------------- 1 | 'use client'; 2 | 3 | import React from 'react'; 4 | import Image from 'next/image'; 5 | import { useTheme } from '@/contexts/ThemeContext'; 6 | import ThemeToggle from '@/components/ThemeToggle'; 7 | 8 | // Logo Component 9 | const WebVijayiLogo = () => ( 10 |
11 | CookFast Logo 18 |
19 | ); 20 | 21 | // GitHub Icon 22 | const GitHubIcon = () => ( 23 | 24 | 25 | 26 | ); 27 | 28 | // Social Media Icons 29 | const TwitterIcon = () => ( 30 | 31 | 32 | 33 | ); 34 | 35 | // Document Icons for Animation 36 | const DocumentIcon = ({ className = "", rotate = 0 }: { className?: string, rotate?: number }) => ( 37 | 45 | 46 | 47 | ); 48 | 49 | // Custom link component with hover effect 50 | const FooterLink = ({ 51 | href, 52 | children, 53 | icon 54 | }: { 55 | href: string; 56 | children: React.ReactNode; 57 | icon?: React.ReactNode 58 | }) => ( 59 | 65 | {icon && ( 66 | 67 | {icon} 68 | 69 | )} 70 | 71 | {children} 72 | 73 | 74 | ); 75 | 76 | export default function EnhancedFooter() { 77 | // We need the theme context for dark mode, but don't need to use the variable directly 78 | useTheme(); 79 | const currentYear = new Date().getFullYear(); 80 | 81 | return ( 82 |
83 | {/* Animated background elements */} 84 |
85 | 86 | 87 |
88 |
89 |
90 | 91 |
92 |
93 | {/* Logo and Description */} 94 |
95 |
96 | 97 |
98 |

Web Vijayi

99 |

AI-Powered Web Solutions

100 |
101 |
102 |

103 | CookFast is an open-source tool for generating comprehensive project planning documents powered by AI. Generate requirements, architecture, and more instantly. 104 |

105 | 125 |
126 | 127 | {/* Links Section */} 128 |
129 |

Quick Links

130 |
    131 |
  • 132 | }> 133 | GitHub Repository 134 | 135 |
  • 136 |
  • 137 | 139 | 140 | 141 | }> 142 | Report an Issue 143 | 144 |
  • 145 |
  • 146 | 148 | 149 | 150 | }> 151 | Documentation 152 | 153 |
  • 154 |
155 |
156 | 157 | {/* Support Section */} 158 |
159 |

Support Us

160 | 177 |
    178 |
  • 179 | 181 | 182 | 183 | }> 184 | Star on GitHub 185 | 186 |
  • 187 |
  • 188 | 190 | 191 | 192 | }> 193 | Fork Repository 194 | 195 |
  • 196 |
197 |
198 |
199 | 200 | {/* Copyright */} 201 |
202 |
203 |

204 | © {currentYear} 210 | Web Vijayi 211 | . All rights reserved. 212 |

213 |
214 | License 215 | 216 | Privacy 217 | 218 | Terms 219 | 220 | 221 |
222 |
223 |
224 |
225 |
226 | ); 227 | } -------------------------------------------------------------------------------- /src/components/FaqSection.tsx: -------------------------------------------------------------------------------- 1 | 'use client'; 2 | 3 | import React from 'react'; 4 | import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from "@/components/ui/accordion"; 5 | import { Button } from "@/components/ui/button"; 6 | import Link from 'next/link'; 7 | import Script from 'next/script'; 8 | 9 | // FAQ section with common questions and answers 10 | export default function FaqSection() { 11 | // FAQ data 12 | const faqData = [ 13 | { 14 | question: "What is CookFast?", 15 | answer: "CookFast is an AI-powered tool that automatically generates comprehensive project documentation, templates, and development guides based on your project details. It helps developers quickly convert ideas into structured plans, reducing the initial project setup time significantly." 16 | }, 17 | { 18 | question: "What types of projects can CookFast generate documentation for?", 19 | answer: "CookFast can generate documentation for a wide range of project types including Web Applications, Websites, Mobile Apps, API Services, Libraries/Packages, and Desktop Applications. The tool tailors the documentation based on the specific needs and requirements of each project type." 20 | }, 21 | { 22 | question: "Why was CookFast created?", 23 | answer: "We built CookFast because we often had project ideas (like CookFast itself) and wanted to get started quickly, but planning would take considerable time. We needed a tool that could help us jumpstart projects with AI-powered documentation and planning, allowing us to focus more on implementation rather than initial documentation." 24 | }, 25 | { 26 | question: "Why is it called 'CookFast'?", 27 | answer: "The name 'CookFast' comes from the idea that it helps you 'cook up' (prepare) the basics of your idea quickly. Just as a chef prepares ingredients before cooking, CookFast helps prepare your project's foundation fast, so you can start building immediately." 28 | }, 29 | { 30 | question: "Which AI providers does CookFast support?", 31 | answer: "CookFast supports multiple AI providers including OpenAI (GPT-4.1), Anthropic (Claude 3.7 Sonnet), and Google (Gemini 2.5 Pro). Each provider offers different capabilities: GPT-4.1 supports up to 1,000,000 tokens of context, Gemini 2.5 Pro allows up to 1,048,576 input tokens, and Claude 3.7 Sonnet has a 200,000-token context window." 32 | }, 33 | { 34 | question: "Do I need to provide my own API keys?", 35 | answer: "Yes, you'll need to provide your own API key for the AI provider you choose to use. This ensures your data security and gives you control over which AI model processes your project information." 36 | }, 37 | { 38 | question: "What types of documentation can CookFast generate?", 39 | answer: "CookFast can generate requirements documents, frontend guidelines, backend architecture, application flow, tech stack documentation, system prompts, and file structure documentation." 40 | }, 41 | { 42 | question: "Can I customize the documentation CookFast generates?", 43 | answer: "Yes! You can customize the documentation by adjusting your project details and selecting specific document types. After generation, you can also download the documentation as Markdown or JSON and then modify it to suit your specific needs. We're also working on more customization options in future updates." 44 | }, 45 | { 46 | question: "How can I self-host CookFast?", 47 | answer: { 48 | jsx: ( 49 | <> 50 | CookFast is completely open-source. You can self-host it by forking the GitHub repository, following the installation instructions in the README, and deploying it to your preferred hosting platform. The code is designed to be easily deployable on platforms like Vercel, Netlify, or your own server. 51 | 52 | ), 53 | text: "CookFast is completely open-source. You can self-host it by forking the GitHub repository, following the installation instructions in the README, and deploying it to your preferred hosting platform. The code is designed to be easily deployable on platforms like Vercel, Netlify, or your own server." 54 | } 55 | }, 56 | { 57 | question: "How can I contribute to CookFast?", 58 | answer: { 59 | jsx: ( 60 | <> 61 | We welcome contributions! You can contribute by reporting issues, suggesting features, or submitting pull requests on our GitHub repository. Check the CONTRIBUTING.md file in the repo for guidelines. 62 | 63 | ), 64 | text: "We welcome contributions! You can contribute by reporting issues, suggesting features, or submitting pull requests on our GitHub repository. Check the CONTRIBUTING.md file in the repo for guidelines." 65 | } 66 | }, 67 | { 68 | question: "How much does CookFast cost?", 69 | answer: { 70 | jsx: ( 71 | <> 72 | CookFast is completely free and open-source. You only pay for the API usage charged by your chosen AI provider (OpenAI, Anthropic, or Google). If you'd like to support the development: 73 |
74 | 75 | Buy Me A Coffee 76 | 77 | 78 | 84 | 85 |
86 | 87 | ), 88 | text: "CookFast is completely free and open-source. You only pay for the API usage charged by your chosen AI provider (OpenAI, Anthropic, or Google)." 89 | } 90 | }, 91 | { 92 | question: "Can I export the generated documentation?", 93 | answer: "Yes! You can export the documentation as Markdown (.md) files or as structured JSON that you can integrate into your development workflow." 94 | }, 95 | { 96 | question: "Where can I get support?", 97 | answer: { 98 | jsx: ( 99 | <> 100 | You can get support by creating an issue on our GitHub repository or reaching out to us on Twitter @webvijayi. We're always happy to help! 101 | 102 | ), 103 | text: "You can get support by creating an issue on our GitHub repository or reaching out to us on Twitter @webvijayi. We're always happy to help!" 104 | } 105 | } 106 | ]; 107 | 108 | // Create schema markup for FAQs 109 | const faqSchema = { 110 | "@context": "https://schema.org", 111 | "@type": "FAQPage", 112 | "mainEntity": faqData.map(faq => ({ 113 | "@type": "Question", 114 | "name": faq.question, 115 | "acceptedAnswer": { 116 | "@type": "Answer", 117 | "text": typeof faq.answer === 'object' ? faq.answer.text : faq.answer 118 | } 119 | })) 120 | }; 121 | 122 | return ( 123 |
124 | {/* Schema.org FAQPage markup */} 125 |