├── .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 | [](https://github.com/webvijayi/cookfast/blob/main/LICENSE)
4 | [](https://github.com/webvijayi/cookfast/stargazers)
5 | [](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! ****
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 |
19 | );
20 |
21 | // GitHub Icon
22 | const GitHubIcon = () => (
23 |
26 | );
27 |
28 | // Social Media Icons
29 | const TwitterIcon = () => (
30 |
33 | );
34 |
35 | // Document Icons for Animation
36 | const DocumentIcon = ({ className = "", rotate = 0 }: { className?: string, rotate?: number }) => (
37 |
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 |
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 |
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 |
129 |
130 |
131 |
132 |
Frequently Asked Questions
133 |
134 | Get answers to common questions about CookFast.
135 |
Use proper arrow syntax with spacing: A-{'>'}{'>'} B: Message
51 |
Use activate/deactivate to show active periods: activate A
52 |
53 |
54 |
55 | {`\`\`\`mermaid
56 | sequenceDiagram
57 | participant A as System A
58 | participant B as System B
59 |
60 | A->>B: Request
61 | activate B
62 | B->>A: Response
63 | deactivate B
64 | \`\`\``}
65 |
66 |
67 |
68 |
69 |
State Diagrams
70 |
71 |
72 |
Start with stateDiagram-v2
73 |
Use [*] for start/end states
74 |
Add transition descriptions with colons: StateA --{'>'} StateB: Action
75 |
For composite states, use curly braces: state StateA {'{'} ... {'}'}