Skip to content

Create llms.txt #1476

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 7 commits into
base: main
Choose a base branch
from
Open

Create llms.txt #1476

wants to merge 7 commits into from

Conversation

masutaka
Copy link
Member

@masutaka masutaka commented Apr 24, 2025

Issue

What was done

🤖 Generated by PR Agent at db284c4

  • Add static API route to generate llms.txt
  • Recursively parse MDX files for title and description
  • Output formatted docs list with links and descriptions
  • Include optional website and GitHub links in output

Detailed Changes

Relevant files
Enhancement
route.ts
Add static route to generate llms.txt from docs content   

frontend/apps/docs/app/docs/llms.txt/route.ts

  • Introduces a new static API route for llms.txt
  • Recursively reads MDX files in content/docs
  • Extracts frontmatter (title, description) from each MDX file
  • Formats and returns a plain text list of docs with links and
    descriptions
  • Appends optional website and GitHub links to the output
  • +99/-0   

    Need help?
  • Type /help how to ... in the comments thread for any questions about Qodo Merge usage.
  • Check out the documentation for more information.
  • @masutaka masutaka self-assigned this Apr 24, 2025
    Copy link

    changeset-bot bot commented Apr 24, 2025

    ⚠️ No Changeset found

    Latest commit: d090766

    Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

    This PR includes no changesets

    When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

    Click here to learn what changesets are, and how to add one.

    Click here if you're a maintainer who wants to add a changeset to this PR

    Copy link

    supabase bot commented Apr 24, 2025

    This pull request has been ignored for the connected project vsdfxfkorhtkxqcpczyr due to reaching the limit of concurrent preview branches.
    Go to Project Integrations Settings ↗︎ if you wish to update this limit.


    Preview Branches by Supabase.
    Learn more about Supabase Branching ↗︎.

    Copy link

    vercel bot commented Apr 24, 2025

    The latest updates on your projects. Learn more about Vercel for Git ↗︎

    Name Status Preview Comments Updated (UTC)
    liam-app ✅ Ready (Inspect) Visit Preview 💬 Add feedback Apr 25, 2025 4:15am
    liam-docs ✅ Ready (Inspect) Visit Preview 💬 Add feedback Apr 25, 2025 4:15am
    liam-erd-sample ✅ Ready (Inspect) Visit Preview 💬 Add feedback Apr 25, 2025 4:15am

    Copy link
    Contributor

    qodo-merge-pro-for-open-source bot commented Apr 24, 2025

    CI Feedback 🧐

    (Feedback updated until commit fff6119)

    A test triggered by this PR failed. Here is an AI-generated analysis of the failure:

    Action: e2e-tests (chromium)

    Failed stage: [❌]

    Failure summary:

    The action failed because it was canceled during the Playwright installation process. The error
    message on line 1415 states "##[error]The operation was canceled." This occurred while installing
    system dependencies for Playwright (lines 1400-1414 show package installation in progress). The
    cancellation might have been triggered by a timeout or manual intervention.

    Relevant error logs:
    1:  ##[group]Operating System
    2:  Ubuntu
    ...
    
    184:  CI: true
    185:  URL: https://liam-hdk983sey-route-06-core.vercel.app
    186:  ENVIRONMENT: Preview – liam-app
    187:  PNPM_HOME: /home/runner/setup-pnpm/node_modules/.bin
    188:  ##[endgroup]
    189:  Node version file is not JSON file
    190:  Resolved ./.node-version as 22.14.0
    191:  Found in cache @ /opt/hostedtoolcache/node/22.14.0/x64
    192:  ##[group]Environment details
    193:  node: v22.14.0
    194:  npm: 10.9.2
    195:  yarn: 1.22.22
    196:  ##[endgroup]
    197:  [command]/home/runner/setup-pnpm/node_modules/.bin/pnpm store path --silent
    198:  /home/runner/setup-pnpm/node_modules/.bin/store/v10
    199:  ##[warning]Failed to restore: Failed to GetCacheEntryDownloadURL: Received non-retryable error: Failed request: (403) Forbidden: unable to access resource in current scope
    200:  pnpm cache is not found
    ...
    
    213:  Packages: +1564
    214:  ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    215:  Progress: resolved 1564, reused 0, downloaded 178, added 168
    216:  Progress: resolved 1564, reused 0, downloaded 312, added 256
    217:  Progress: resolved 1564, reused 0, downloaded 492, added 473
    218:  Progress: resolved 1564, reused 0, downloaded 565, added 536
    219:  Progress: resolved 1564, reused 0, downloaded 621, added 575
    220:  Progress: resolved 1564, reused 0, downloaded 770, added 686
    221:  Progress: resolved 1564, reused 0, downloaded 924, added 786
    222:  Progress: resolved 1564, reused 0, downloaded 1192, added 1192
    223:  Progress: resolved 1564, reused 0, downloaded 1350, added 1356
    224:  Progress: resolved 1564, reused 0, downloaded 1549, added 1562
    225:  Progress: resolved 1564, reused 0, downloaded 1550, added 1562
    226:  Progress: resolved 1564, reused 0, downloaded 1550, added 1563
    227:  Progress: resolved 1564, reused 0, downloaded 1551, added 1564, done
    228:  WARN  Failed to create bin at /home/runner/work/liam/liam/node_modules/.pnpm/node_modules/.bin/supabase. ENOENT: no such file or directory, open '/home/runner/work/liam/liam/node_modules/.pnpm/node_modules/supabase/bin/supabase'
    229:  WARN  Failed to create bin at /home/runner/work/liam/liam/node_modules/.pnpm/supabase@2.22.2/node_modules/supabase/node_modules/.bin/supabase. ENOENT: no such file or directory, open '/home/runner/work/liam/liam/node_modules/.pnpm/supabase@2.22.2/node_modules/supabase/bin/supabase'
    230:  .../node_modules/supabase postinstall$ node scripts/postinstall.js
    231:  .../node_modules/supabase postinstall: Downloading https://github.com/supabase/cli/releases/download/v2.22.2/supabase_2.22.2_checksums.txt
    232:  .../node_modules/supabase postinstall: Downloading https://github.com/supabase/cli/releases/download/v2.22.2/supabase_linux_amd64.tar.gz
    233:  .../node_modules/supabase postinstall: Checksum verified.
    234:  .../node_modules/supabase postinstall: Installed Supabase CLI successfully
    235:  .../node_modules/supabase postinstall: Done
    236:  WARN  Failed to create bin at /home/runner/work/liam/liam/frontend/apps/erd-sample/node_modules/.bin/liam. ENOENT: no such file or directory, open '/home/runner/work/liam/liam/frontend/packages/cli/dist-cli/bin/cli.js'
    237:  devDependencies:
    ...
    
    250:  │                                                                              │
    251:  │   Ignored build scripts: @biomejs/biome, @bundled-es-modules/glob,           │
    252:  │   @depot/cli, @prisma/client, @prisma/engines, @sentry/cli, core-js-pure,    │
    253:  │   esbuild, protobufjs, sharp, style-dictionary.                              │
    254:  │   Run "pnpm approve-builds" to pick which dependencies should be allowed     │
    255:  │   to run scripts.                                                            │
    256:  │                                                                              │
    257:  ╰──────────────────────────────────────────────────────────────────────────────╯
    258:  frontend/apps/docs postinstall$ fumadocs-mdx
    259:  frontend/packages/jobs postinstall$ cp ../db-structure/node_modules/@ruby/prism/src/prism.wasm prism.wasm
    260:  frontend/packages/jobs postinstall: Done
    261:  frontend/apps/docs postinstall: [MDX] types generated
    262:  frontend/apps/docs postinstall: Done
    263:  frontend/apps/app postinstall$ cp ../../packages/db-structure/node_modules/@ruby/prism/src/prism.wasm prism.wasm
    264:  frontend/apps/app postinstall: Done
    265:  WARN  Failed to create bin at /home/runner/work/liam/liam/frontend/apps/erd-sample/node_modules/.bin/liam. ENOENT: no such file or directory, open '/home/runner/work/liam/liam/frontend/apps/erd-sample/node_modules/@liam-hq/cli/dist-cli/bin/cli.js'
    266:  Done in 17.7s using pnpm v10.8.0
    ...
    
    268:  with:
    269:  path: ~/.cache/ms-playwright
    270:  key: playwright-Linux-0659f9b6a03eb0e9da6d41ce7e23584771c84d6557bb707995714bedc56bdc88
    271:  restore-keys: playwright-Linux-
    272:  
    273:  enableCrossOsArchive: false
    274:  fail-on-cache-miss: false
    275:  lookup-only: false
    276:  save-always: false
    277:  env:
    278:  CI: true
    279:  URL: https://liam-hdk983sey-route-06-core.vercel.app
    280:  ENVIRONMENT: Preview – liam-app
    281:  PNPM_HOME: /home/runner/setup-pnpm/node_modules/.bin
    282:  ##[endgroup]
    283:  [warning]Event Validation Error: The event type deployment_status is not supported because it's not tied to a branch or tag ref.
    284:  ##[group]Run pnpm exec playwright install --with-deps
    ...
    
    1400:  Setting up libinstpatch-1.0-2:amd64 (1.1.6-1build2) ...
    1401:  Setting up xfonts-scalable (1:1.0.3-1.3) ...
    1402:  Setting up libswscale7:amd64 (7:6.1.1-3ubuntu5) ...
    1403:  Setting up libavif16:amd64 (1.0.4-1ubuntu3) ...
    1404:  Setting up libpulse0:amd64 (1:16.1+dfsg1-2ubuntu10.1) ...
    1405:  Setting up libavformat60:amd64 (7:6.1.1-3ubuntu5) ...
    1406:  Setting up libsphinxbase3t64:amd64 (0.8+5prealpha+1-17build2) ...
    1407:  Setting up libsdl2-2.0-0:amd64 (2.30.0+dfsg-1build3) ...
    1408:  Setting up libfluidsynth3:amd64 (2.3.4-1build3) ...
    1409:  Setting up libpocketsphinx3:amd64 (0.8.0+real5prealpha+1-15ubuntu5) ...
    1410:  Setting up libavfilter9:amd64 (7:6.1.1-3ubuntu5) ...
    1411:  Setting up gstreamer1.0-libav:amd64 (1.24.1-1build1) ...
    1412:  Processing triggers for fontconfig (2.15.0-1.1ubuntu2) ...
    1413:  Processing triggers for libc-bin (2.39-0ubuntu8.4) ...
    1414:  Processing triggers for man-db (2.12.0-4build2) ...
    1415:  ##[error]The operation was canceled.
    1416:  Post job cleanup.
    

    Copy link
    Contributor

    qodo-merge-pro-for-open-source bot commented Apr 24, 2025

    PR Reviewer Guide 🔍

    (Review updated until commit 996a682)

    Here are some key observations to aid the review process:

    🎫 Ticket compliance analysis ✅

    1452 - Fully compliant

    Compliant requirements:

    • Create llms.txt file similar to the existing llms-full.txt
    • The URL for llms.txt is required for registration at llmstxthub.com
    • Should follow the pattern established in the existing llms-full.txt implementation
    ⏱️ Estimated effort to review: 2 🔵🔵⚪⚪⚪
    🧪 No relevant tests
    🔒 No security concerns identified
    ⚡ Recommended focus areas for review

    Error Handling

    The code lacks error handling for file system operations. If reading directories or files fails, the application might crash without a meaningful error message.

    const getContents = (dirPath: string): MDXFile[] => {
      const results: MDXFile[] = []
      const list = fs.readdirSync(dirPath, { withFileTypes: true })
      const baseUrl = process.env.NEXT_PUBLIC_BASE_URL || 'http://localhost:3002'
    
      for (const file of list) {
        const filePath = path.resolve(dirPath, file.name)
    
        if (file.isDirectory()) {
          results.push(...getContents(filePath))
        } else if (file.name.endsWith('.mdx')) {
          const content = fs.readFileSync(filePath, 'utf8')
          const frontmatter = extractFrontmatter(content)
    
          if (!frontmatter) {
            continue
          }
    
          const relativePath = path
            .relative(path.resolve(process.cwd(), 'content/docs'), filePath)
            .replace(/(\/?index)?\.mdx$/, '')
          const url = `${baseUrl}/docs/${relativePath}`
    
          results.push({
            path: relativePath,
            title: frontmatter.title,
            url,
            ...(frontmatter.description && {
              description: frontmatter.description,
            }),
          })
        }
      }
    
      return results.sort((a, b) =>
        a.path.localeCompare(b.path, 'en', { numeric: true }),
      )
    }
    Environment Variable

    The code uses process.env.NEXT_PUBLIC_BASE_URL without validation. If this environment variable is not set in production, it will default to localhost which is incorrect.

    const baseUrl = process.env.NEXT_PUBLIC_BASE_URL || 'http://localhost:3002'

    Copy link
    Contributor

    Failed to generate code suggestions for PR

    @MH4GF
    Copy link
    Member

    MH4GF commented Apr 24, 2025

    @MH4GF
    Copy link
    Member

    MH4GF commented Apr 24, 2025

    @masutaka If possible, it would be desirable to maintain this hierarchical structure, but is it difficult here?

    Screenshot 2025-04-24 at 17 09 13

    @masutaka
    Copy link
    Member Author

    @MH4GF OK. I’ll try it!

    @masutaka masutaka marked this pull request as draft April 24, 2025 08:14
    @masutaka
    Copy link
    Member Author

    masutaka commented Apr 24, 2025

    @MH4GF Just to be sure, are you expecting the following?

    Expected?
    # Liam ERD
    
    ## Docs
    
    - [Welcome to Liam ERD](http://localhost:3002/docs/index): Liam ERD is a tool that effortlessly generates beautiful and easy-to-read ER diagrams.
    - [UI Features](http://localhost:3002/docs/ui-features)
        - [Browsing Your Schema](http://localhost:3002/docs/ui-features/browsing-your-schema): Explains the interactive diagram features that help users drill down into their schema, including panning, zooming, filtering, and highlighting.
        - [Sharing & Query Parameters](http://localhost:3002/docs/ui-features/sharing-and-query-params)
    - [Liam ERD Web](http://localhost:3002/docs/web)
        - [Troubleshooting Web Version](http://localhost:3002/docs/web/troubleshooting)
    - [Liam ERD CLI](http://localhost:3002/docs/cli)
        - [CI/CD Integration](http://localhost:3002/docs/cli/ci-cd)
    - [Parser](http://localhost:3002/docs/parser)
        - [Supported Formats](http://localhost:3002/docs/parser/supported-formats)
            - [BigQuery](http://localhost:3002/docs/parser/supported-formats/bigquery)
            - [Django ORM](http://localhost:3002/docs/parser/supported-formats/django)
            - [Drizzle](http://localhost:3002/docs/parser/supported-formats/drizzle)
            - [Microsoft SQL Server](http://localhost:3002/docs/parser/supported-formats/mssql)
            - [MySQL](http://localhost:3002/docs/parser/supported-formats/mysql)
            - [PostgreSQL](http://localhost:3002/docs/parser/supported-formats/postgresql)
            - [Prisma](http://localhost:3002/docs/parser/supported-formats/prisma)
            - [schema.rb (Ruby on Rails)](http://localhost:3002/docs/parser/supported-formats/rails)
            - [SQLite](http://localhost:3002/docs/parser/supported-formats/sqlite)
            - [tbls](http://localhost:3002/docs/parser/supported-formats/tbls)
        - [Troubleshooting Parser](http://localhost:3002/docs/parser/troubleshooting)
    - [Contributing](http://localhost:3002/docs/contributing): Learn how to contribute to Liam ERD
        - [Repository Architecture](http://localhost:3002/docs/contributing/repository-architecture): This document provides a detailed overview of our repository structure, architecture, and development workflow.
        - [Architecture Decision Records](http://localhost:3002/docs/contributing/adr): Documented architecture decisions for the Liam project
            - [20241003 - Use CSS Modules for Styling](http://localhost:3002/docs/contributing/adr/20241003-use-css-modules-for-styling)
            - [20241112 - Use React Flow for ERD Visualization](http://localhost:3002/docs/contributing/adr/20241112-use-react-flow-for-erd-visualization)
            - [20241128 - Use Fumadocs for Documentation Site](http://localhost:3002/docs/contributing/adr/20241128-use-fumadocs-for-documentation-site)
            - [20241128 - Use libpg-query for PostgreSQL SQL Parsing](http://localhost:3002/docs/contributing/adr/20241128-use-libpg-query-for-postgresql-sql-parsing)
            - [20241203 - Use Prism for schema.rb Parsing](http://localhost:3002/docs/contributing/adr/20241203-use-prism-for-schema-rb-parsing)
            - [20241206 - Node.js-Based Unified DB Schema Parsing](http://localhost:3002/docs/contributing/adr/20241206-node-js-based-unified-db-schema-parsing)
            - [20250116 - Use DMMF for Prisma Schema Parsing](http://localhost:3002/docs/contributing/adr/20250116-use-dmmf-for-prisma-schema-parsing)
            - [20250205 - Use fuse.js](http://localhost:3002/docs/contributing/adr/20250205-use-fuse-js)
            - [20250421 - Apply RLS to All Tables with Organization-based Policies](http://localhost:3002/docs/contributing/adr/20250421-apply-rls-to-all-tables-with-organization-based-policies)
            - [ADR Template](http://localhost:3002/docs/contributing/adr/template)
    - [Community Resources](http://localhost:3002/docs/community-resources): A collection of community-created resources and articles about Liam ERD
    
    ## Optional
    
    - [Website](https://liambx.com/)
    - [Open Source](https://github.com/liam-hq/liam)

    @MH4GF
    Copy link
    Member

    MH4GF commented Apr 24, 2025

    @masutaka Yeah!! LGTM, I think it will be easier for LLMs to understand the hierarchical structure!

    Copy link
    Contributor

    qodo-merge-pro-for-open-source bot commented Apr 25, 2025

    PR Code Suggestions ✨

    Latest suggestions up to d090766

    CategorySuggestion                                                                                                                                    Impact
    General
    Fix URL path construction

    The URL construction might fail if baseUrl doesn't end with a trailing slash and
    the path doesn't start with one. Consider ensuring that the base URL always has
    a trailing slash when constructing the full URL.

    frontend/apps/docs/app/docs/llms.txt/route.ts [39]

    -const baseUrl = process.env.NEXT_PUBLIC_BASE_URL || 'http://localhost:3002'
    +const baseUrl = (process.env.NEXT_PUBLIC_BASE_URL || 'http://localhost:3002').replace(/\/?$/, '/')
    • Apply this suggestion
    Suggestion importance[1-10]: 7

    __

    Why: The suggestion correctly identifies a potential issue with URL construction where missing trailing slashes could lead to incorrect path resolution. Ensuring the base URL has a trailing slash is a good practice that prevents subtle navigation bugs.

    Medium
    Possible issue
    Add URL error handling

    The URL constructor might throw an error if baseUrl is not a valid URL. Consider
    adding error handling to prevent potential runtime errors.

    frontend/apps/docs/app/docs/llms.txt/route.ts [57]

    -const url = new URL(`docs/${relativePath}`, baseUrl).toString()
    +let url;
    +try {
    +  url = new URL(`docs/${relativePath}`, baseUrl).toString();
    +} catch (error) {
    +  console.error(`Invalid URL construction: ${error.message}`);
    +  url = `${baseUrl}/docs/${relativePath}`;
    +}
    • Apply this suggestion
    Suggestion importance[1-10]: 6

    __

    Why: This suggestion adds valuable error handling for the URL constructor which could throw if baseUrl is invalid. The fallback mechanism provides graceful degradation rather than crashing, though the issue might be rare in a controlled environment.

    Low
    • More

    Previous suggestions

    ✅ Suggestions up to commit 996a682
    CategorySuggestion                                                                                                                                    Impact
    General
    Fix URL construction

    The URL construction doesn't handle potential double slashes that could occur if
    baseUrl ends with a slash. Use a proper URL joining method to ensure correct URL
    formation.

    frontend/apps/docs/app/docs/llms.txt/route.ts [57]

    -const url = `${baseUrl}/docs/${relativePath}`
    +const url = new URL(`docs/${relativePath}`, baseUrl).toString()

    [Suggestion has been applied]

    Suggestion importance[1-10]: 8

    __

    Why: This suggestion addresses a significant issue in URL construction by using the URL constructor, which properly handles path joining and prevents double slashes. This is more robust than string concatenation and follows best practices for URL handling in JavaScript/TypeScript.

    Medium
    Improve URL handling

    Consider using a more secure approach for URL construction. The current
    implementation might lead to incorrect URLs if the base URL contains a trailing
    slash. Use URL constructor or path.join to properly handle URL concatenation.

    frontend/apps/docs/app/docs/llms.txt/route.ts [39]

    -const baseUrl = process.env.NEXT_PUBLIC_BASE_URL || 'http://localhost:3002'
    +const baseUrl = (process.env.NEXT_PUBLIC_BASE_URL || 'http://localhost:3002').replace(/\/$/, '')
    Suggestion importance[1-10]: 7

    __

    Why: The suggestion correctly identifies a potential issue with trailing slashes in the base URL that could lead to malformed URLs. The fix ensures consistent URL formatting by removing any trailing slash, which is important for proper URL construction.

    Medium

    @masutaka
    Copy link
    Member Author

    @MH4GF

    I've given a hierarchical structure to llms.txt.
    I haven't made the list order the same, referring to meta.json. Please let me know if you need it.

    Detail
    # Liam ERD
    
    ## Docs
    
    - [Welcome to Liam ERD](http://localhost:3002/docs/): Liam ERD is a tool that effortlessly generates beautiful and easy-to-read ER diagrams.
    - [Liam ERD CLI](http://localhost:3002/docs/cli)
        - [CI/CD Integration](http://localhost:3002/docs/cli/ci-cd)
    - [Community Resources](http://localhost:3002/docs/community-resources): A collection of community-created resources and articles about Liam ERD
    - [Contributing](http://localhost:3002/docs/contributing): Learn how to contribute to Liam ERD
        - [Architecture Decision Records](http://localhost:3002/docs/contributing/adr): Documented architecture decisions for the Liam project
            - [20241003 - Use CSS Modules for Styling](http://localhost:3002/docs/contributing/adr/20241003-use-css-modules-for-styling)
            - [20241112 - Use React Flow for ERD Visualization](http://localhost:3002/docs/contributing/adr/20241112-use-react-flow-for-erd-visualization)
            - [20241128 - Use Fumadocs for Documentation Site](http://localhost:3002/docs/contributing/adr/20241128-use-fumadocs-for-documentation-site)
            - [20241128 - Use libpg-query for PostgreSQL SQL Parsing](http://localhost:3002/docs/contributing/adr/20241128-use-libpg-query-for-postgresql-sql-parsing)
            - [20241203 - Use Prism for schema.rb Parsing](http://localhost:3002/docs/contributing/adr/20241203-use-prism-for-schema-rb-parsing)
            - [20241206 - Node.js-Based Unified DB Schema Parsing](http://localhost:3002/docs/contributing/adr/20241206-node-js-based-unified-db-schema-parsing)
            - [20250116 - Use DMMF for Prisma Schema Parsing](http://localhost:3002/docs/contributing/adr/20250116-use-dmmf-for-prisma-schema-parsing)
            - [20250205 - Use fuse.js](http://localhost:3002/docs/contributing/adr/20250205-use-fuse-js)
            - [20250421 - Apply RLS to All Tables with Organization-based Policies](http://localhost:3002/docs/contributing/adr/20250421-apply-rls-to-all-tables-with-organization-based-policies)
            - [ADR Template](http://localhost:3002/docs/contributing/adr/template)
        - [Repository Architecture](http://localhost:3002/docs/contributing/repository-architecture): This document provides a detailed overview of our repository structure, architecture, and development workflow.
    - [Parser](http://localhost:3002/docs/parser)
        - [Supported Formats](http://localhost:3002/docs/parser/supported-formats)
            - [BigQuery](http://localhost:3002/docs/parser/supported-formats/bigquery)
            - [Django ORM](http://localhost:3002/docs/parser/supported-formats/django)
            - [Drizzle](http://localhost:3002/docs/parser/supported-formats/drizzle)
            - [Microsoft SQL Server](http://localhost:3002/docs/parser/supported-formats/mssql)
            - [MySQL](http://localhost:3002/docs/parser/supported-formats/mysql)
            - [PostgreSQL](http://localhost:3002/docs/parser/supported-formats/postgresql)
            - [Prisma](http://localhost:3002/docs/parser/supported-formats/prisma)
            - [schema.rb (Ruby on Rails)](http://localhost:3002/docs/parser/supported-formats/rails)
            - [SQLite](http://localhost:3002/docs/parser/supported-formats/sqlite)
            - [tbls](http://localhost:3002/docs/parser/supported-formats/tbls)
        - [Troubleshooting Parser](http://localhost:3002/docs/parser/troubleshooting)
    - [UI Features](http://localhost:3002/docs/ui-features)
        - [Browsing Your Schema](http://localhost:3002/docs/ui-features/browsing-your-schema): Explains the interactive diagram features that help users drill down into their schema, including panning, zooming, filtering, and highlighting.
        - [Sharing & Query Parameters](http://localhost:3002/docs/ui-features/sharing-and-query-params)
    - [Liam ERD Web](http://localhost:3002/docs/web)
        - [Troubleshooting Web Version](http://localhost:3002/docs/web/troubleshooting)
    
    ## Optional
    
    - [Website](https://liambx.com/)
    - [Open Source](https://github.com/liam-hq/liam)

    Co-authored-by: qodo-merge-pro-for-open-source[bot] <189517486+qodo-merge-pro-for-open-source[bot]@users.noreply.github.com>
    Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
    Projects
    None yet
    Development

    Successfully merging this pull request may close these issues.

    Create llms.txt
    2 participants