Skip to content
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

blog: the database app #55

Closed
wants to merge 0 commits into from
Closed

blog: the database app #55

wants to merge 0 commits into from

Conversation

fhur
Copy link
Collaborator

@fhur fhur commented Oct 9, 2024

SynthQL pull request template

Why

Motivation an context for the change.

What changed

Brief summary of the changes.

Important

Mention important points that require special attention or that might surprise
reviewers.

Summary by CodeRabbit

  • New Features
    • Introduced a new blog post titled "What are database apps? and why SynthQL?" discussing the role and components of database applications.
  • Updates
    • Updated the author image for Fernando Hurtado in the authors' section.

Copy link

vercel bot commented Oct 9, 2024

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

Name Status Preview Comments Updated (UTC)
docs ✅ Ready (Inspect) Visit Preview 💬 Add feedback Oct 10, 2024 8:30pm

Copy link
Contributor

coderabbitai bot commented Oct 9, 2024

Walkthrough

This pull request introduces a new blog post titled "What are database apps? and why SynthQL?" authored by Fernando Hurtado. The post explores the functionalities and components of database applications, critiques existing solutions, and presents SynthQL as a proposed tool for simplifying database app development. Additionally, the author's image URL in the authors.yml file has been updated to a new Gravatar link.

Changes

File Change Summary
packages/docs/blog/2024-10-09-the-database-app/index.md New blog post added discussing database applications and SynthQL.
packages/docs/blog/authors.yml Updated image_url field for author Fernando Hurtado with a new Gravatar URL.

Possibly related PRs

  • fix: add composite type support #46: The author of the main PR, fhur, is the same as the one who submitted this PR, indicating a potential connection in terms of the author's focus on SynthQL and database applications. However, the content of the changes in fix: add composite type support #46 does not directly relate to the blog post about database apps.

Poem

In the land of data, where queries play,
A new blog post hops in, brightening the day.
With SynthQL's magic, CRUD operations flow,
A rabbit's delight in the database show!
So gather 'round, friends, and take a look,
At the wonders of apps in this new storybook! 🐇📚


Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Outside diff range and nitpick comments (3)
packages/docs/blog/2024-10-09-the-database-app/index.md (3)

8-66: Improve grammar and style in the introduction

The introduction and concept explanation are informative and well-structured. However, there are some areas for improvement:

  1. Line 12: Use "an" instead of "a" before "interesting pattern".
  2. Line 37: "believe" should be "belief".
  3. Line 44: Change "its" to "it's" in "backend it's full of".
  4. Consider removing some instances of "very" to strengthen the writing (e.g., lines 34 and 59).

Here's a diff with suggested changes:

-In my +12y journey as a software developer, I've "re-discovered" a interesting pattern:
+In my +12y journey as a software developer, I've "re-discovered" an interesting pattern:

-It is also my believe that Postgres has solved the database problem.
+It is also my belief that Postgres has solved the database problem.

-If you look at the typical backend its full of "data fetching" code
+If you look at the typical backend it's full of "data fetching" code

-but it's a very good abstraction for building complex UIs.
+but it's an excellent abstraction for building complex UIs.

-A very big and important layer that often gets neglected,
+A crucial layer that often gets neglected,
🧰 Tools
🪛 LanguageTool

[misspelling] ~12-~12: Use “an” instead of ‘a’ if the following word starts with a vowel sound, e.g. ‘an article’, ‘an hour’.
Context: ...oftware developer, I've "re-discovered" a interesting pattern: a surprising numbe...

(EN_A_VS_AN)


[formatting] ~14-~14: If the ‘because’ clause is essential to the meaning, do not use a comma before the clause.
Context: ...nipulate that data. I say re-discovered, because it's hardly a discovery at all. We've k...

(COMMA_BEFORE_BECAUSE)


[uncategorized] ~16-~16: Possible missing comma found.
Context: ...ried to solve this pattern in a generic way such as Airtable, Notion, Retool, and o...

(AI_HYDRA_LEO_MISSING_COMMA)


[typographical] ~16-~16: Consider adding a comma here.
Context: ...c way such as Airtable, Notion, Retool, and of course the venerable Excel. I call these **"...

(OF_COURSE_COMMA)


[uncategorized] ~20-~20: Use a comma before ‘so’ if it connects two independent clauses (unless they are closely connected and short).
Context: ... me build database apps ontop of my data so I can build a custom (and hopefully gre...

(COMMA_COMPOUND_SENTENCE)


[style] ~34-~34: As an alternative to the over-used intensifier ‘very’, consider replacing this phrase.
Context: ...t's not that React is perfect, but it's a very good abstraction for building complex UIs. T...

(EN_WEAK_ADJECTIVE)


[grammar] ~37-~37: The word ‘believe’ is a verb. Did you mean the noun “belief”?
Context: ...iences. ### The database It is also my believe that Postgres has solved the database p...

(PREPOSITION_VERB)


[uncategorized] ~40-~40: Possible missing comma found.
Context: ...t data from the DB into the UI. In most environments the DB doesn't fit in the client, so th...

(AI_HYDRA_LEO_MISSING_COMMA)


[typographical] ~40-~40: Consider adding a comma after ‘Usually’ for more clarity.
Context: ...client, so the data needs to be synced. Usually this is done with a REST API. The prob...

(RB_LY_COMMA)


[uncategorized] ~44-~44: Possible missing comma found.
Context: ...generic way. If you look at the typical backend its full of "data fetching" code that c...

(AI_HYDRA_LEO_MISSING_COMMA)


[uncategorized] ~44-~44: “its” (belonging to it) seems less likely than “it’s” (it is)
Context: ...way. If you look at the typical backend its full of "data fetching" code that conve...

(AI_HYDRA_LEO_CPT_ITS_ITIS)


[misspelling] ~46-~46: This word is normally spelled as one.
Context: ...that this data fetching is usually very sub-optimal. Two important problems arise: Over-fet...

(EN_COMPOUNDS_SUB_OPTIMAL)


[uncategorized] ~47-~47: Possible missing comma found.
Context: ...ching becomes less and less performant. Suddenly when you call GET /users/123 you're a...

(AI_HYDRA_LEO_MISSING_COMMA)


[uncategorized] ~51-~51: Possible missing comma found.
Context: ... fetching dependency tree: to fetch the user you first need to fetch the address. Th...

(AI_HYDRA_LEO_MISSING_COMMA)


[uncategorized] ~51-~51: Possible missing comma found.
Context: ...address. This can get quite complicated easily to the point where you often have 3-4 l...

(AI_HYDRA_LEO_MISSING_COMMA)


[typographical] ~51-~51: If specifying a range, consider using an en dash instead of a hyphen.
Context: ...asily to the point where you often have 3-4 levels of dependencies. Now let's ass...

(HYPHEN_TO_EN)


[uncategorized] ~55-~55: Use a comma before ‘and’ if it connects two independent clauses (unless they are closely connected and short).
Context: ...ons get made implicitly by the developer and they result in non-optimal fetching tre...

(COMMA_COMPOUND_SENTENCE)


[style] ~59-~59: As an alternative to the over-used intensifier ‘very’, consider replacing this phrase.
Context: ... the puzzle is the authorization layer. A very big and important layer that often gets neg...

(EN_WEAK_ADJECTIVE)


[style] ~63-~63: To elevate your writing, try using a synonym here.
Context: ...ross the codebase. This makes it really hard to audit and reason about. Even in a sm...

(HARD_TO)


[uncategorized] ~63-~63: Possible missing comma found.
Context: ...audit and reason about. Even in a small app it's impossible to ask a basic question...

(AI_HYDRA_LEO_MISSING_COMMA)

🪛 Markdownlint

16-16: Expected: 0 or 2; Actual: 1
Trailing spaces

(MD009, no-trailing-spaces)


20-20: Expected: 0 or 2; Actual: 1
Trailing spaces

(MD009, no-trailing-spaces)


49-49: Expected: 0 or 2; Actual: 1
Trailing spaces

(MD009, no-trailing-spaces)


51-51: Expected: 0 or 2; Actual: 1
Trailing spaces

(MD009, no-trailing-spaces)


61-61: Expected: 0 or 2; Actual: 1
Trailing spaces

(MD009, no-trailing-spaces)


12-12: Expected: 250; Actual: 335
Line length

(MD013, line-length)


14-14: Expected: 250; Actual: 360
Line length

(MD013, line-length)


34-34: Expected: 250; Actual: 437
Line length

(MD013, line-length)


37-37: Expected: 250; Actual: 351
Line length

(MD013, line-length)


42-42: Expected: 250; Actual: 442
Line length

(MD013, line-length)


44-44: Expected: 250; Actual: 287
Line length

(MD013, line-length)


47-47: Expected: 250; Actual: 285
Line length

(MD013, line-length)


53-53: Expected: 250; Actual: 293
Line length

(MD013, line-length)


61-61: Expected: 250; Actual: 281
Line length

(MD013, line-length)


63-63: Expected: 250; Actual: 339
Line length

(MD013, line-length)


65-65: Expected: 250; Actual: 398
Line length

(MD013, line-length)


33-33: Expected: 1; Actual: 0; Below
Headings should be surrounded by blank lines

(MD022, blanks-around-headings)


36-36: Expected: 1; Actual: 0; Below
Headings should be surrounded by blank lines

(MD022, blanks-around-headings)


39-39: Expected: 1; Actual: 0; Below
Headings should be surrounded by blank lines

(MD022, blanks-around-headings)


8-8: null
Multiple top-level headings in the same document

(MD025, single-title, single-h1)


28-28: Expected: 2; Actual: 1
Spaces after list markers

(MD030, list-marker-space)


29-29: Expected: 2; Actual: 1
Spaces after list markers

(MD030, list-marker-space)


30-30: Expected: 2; Actual: 1
Spaces after list markers

(MD030, list-marker-space)


31-31: Expected: 2; Actual: 1
Spaces after list markers

(MD030, list-marker-space)


47-47: Expected: 2; Actual: 1
Spaces after list markers

(MD030, list-marker-space)


49-49: Expected: 2; Actual: 1
Spaces after list markers

(MD030, list-marker-space)


47-47: null
Lists should be surrounded by blank lines

(MD032, blanks-around-lists)


68-147: Fix grammatical error and LGTM on code examples

The SynthQL explanation and code examples are clear and effective. However, there's a small grammatical error to fix:

Line 107: "you can built" should be "you can build".

Here's the suggested change:

-This means you can built mini-endpoints that are tightly coupled to the frontend,
+This means you can build mini-endpoints that are tightly coupled to the frontend,

The code examples are well-formatted and effectively illustrate SynthQL's usage.

🧰 Tools
🪛 LanguageTool

[style] ~71-~71: To elevate your writing, try using a synonym here.
Context: ...bout any of this complexity. I find it hard to come up with a catchy name for it, b...

(HARD_TO)


[typographical] ~71-~71: Consider adding a comma after ‘lately’ for more clarity.
Context: ... come up with a catchy name for it, but lately I've been thinking of SynthQL as a secu...

(RB_LY_COMMA)


[uncategorized] ~107-~107: Possible missing comma found.
Context: ...example above, ### Frontend ORM With SynthQL you can fetch data from your database d...

(AI_HYDRA_LEO_MISSING_COMMA)


[grammar] ~107-~107: The modal verb ‘can’ requires the verb’s base form.
Context: ...ur React components. This means you can built mini-endpoints that are tightly coupled...

(MD_BASEFORM)


[uncategorized] ~139-~139: This expression is usually spelled with a hyphen.
Context: ...features that set it apart: Declarative role based access controls and query whitelisting....

(BASED_HYPHEN)


[typographical] ~141-~141: The conjunction “so that” does not require a comma.
Context: ... to whitelist the query with the backend, so that the backend can check that the user has...

(SO_THAT_UNNECESSARY_COMMA)

🪛 Markdownlint

103-103: Expected: 0 or 2; Actual: 1
Trailing spaces

(MD009, no-trailing-spaces)


143-143: Expected: 0 or 2; Actual: 1
Trailing spaces

(MD009, no-trailing-spaces)


98-98: Expected: 1; Actual: 2
Multiple consecutive blank lines

(MD012, no-multiple-blanks)


149-157: Clean up formatting issues

There are some minor formatting issues to address:

  1. Remove the multiple consecutive blank lines at the end of the file (lines 149-157).
  2. Consider breaking long lines (e.g., lines 12, 14, 34, 37, 42) to improve readability.
  3. Remove trailing spaces (e.g., lines 16, 20, 49, 51, 61, 103, 143).

You can use a markdown linter or editor with formatting capabilities to automatically fix these issues.

🧰 Tools
🪛 Markdownlint

149-149: Expected: 1; Actual: 2
Multiple consecutive blank lines

(MD012, no-multiple-blanks)


150-150: Expected: 1; Actual: 3
Multiple consecutive blank lines

(MD012, no-multiple-blanks)


151-151: Expected: 1; Actual: 4
Multiple consecutive blank lines

(MD012, no-multiple-blanks)


152-152: Expected: 1; Actual: 5
Multiple consecutive blank lines

(MD012, no-multiple-blanks)


153-153: Expected: 1; Actual: 6
Multiple consecutive blank lines

(MD012, no-multiple-blanks)


154-154: Expected: 1; Actual: 7
Multiple consecutive blank lines

(MD012, no-multiple-blanks)


155-155: Expected: 1; Actual: 8
Multiple consecutive blank lines

(MD012, no-multiple-blanks)


156-156: Expected: 1; Actual: 9
Multiple consecutive blank lines

(MD012, no-multiple-blanks)


157-157: Expected: 1; Actual: 10
Multiple consecutive blank lines

(MD012, no-multiple-blanks)

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Files that changed from the base of the PR and between 5df8937 and 2ab41b1.

📒 Files selected for processing (2)
  • packages/docs/blog/2024-10-09-the-database-app/index.md (1 hunks)
  • packages/docs/blog/authors.yml (1 hunks)
✅ Files skipped from review due to trivial changes (1)
  • packages/docs/blog/authors.yml
🧰 Additional context used
🪛 LanguageTool
packages/docs/blog/2024-10-09-the-database-app/index.md

[misspelling] ~12-~12: Use “an” instead of ‘a’ if the following word starts with a vowel sound, e.g. ‘an article’, ‘an hour’.
Context: ...oftware developer, I've "re-discovered" a interesting pattern: a surprising numbe...

(EN_A_VS_AN)


[formatting] ~14-~14: If the ‘because’ clause is essential to the meaning, do not use a comma before the clause.
Context: ...nipulate that data. I say re-discovered, because it's hardly a discovery at all. We've k...

(COMMA_BEFORE_BECAUSE)


[uncategorized] ~16-~16: Possible missing comma found.
Context: ...ried to solve this pattern in a generic way such as Airtable, Notion, Retool, and o...

(AI_HYDRA_LEO_MISSING_COMMA)


[typographical] ~16-~16: Consider adding a comma here.
Context: ...c way such as Airtable, Notion, Retool, and of course the venerable Excel. I call these **"...

(OF_COURSE_COMMA)


[uncategorized] ~20-~20: Use a comma before ‘so’ if it connects two independent clauses (unless they are closely connected and short).
Context: ... me build database apps ontop of my data so I can build a custom (and hopefully gre...

(COMMA_COMPOUND_SENTENCE)


[style] ~34-~34: As an alternative to the over-used intensifier ‘very’, consider replacing this phrase.
Context: ...t's not that React is perfect, but it's a very good abstraction for building complex UIs. T...

(EN_WEAK_ADJECTIVE)


[grammar] ~37-~37: The word ‘believe’ is a verb. Did you mean the noun “belief”?
Context: ...iences. ### The database It is also my believe that Postgres has solved the database p...

(PREPOSITION_VERB)


[uncategorized] ~40-~40: Possible missing comma found.
Context: ...t data from the DB into the UI. In most environments the DB doesn't fit in the client, so th...

(AI_HYDRA_LEO_MISSING_COMMA)


[typographical] ~40-~40: Consider adding a comma after ‘Usually’ for more clarity.
Context: ...client, so the data needs to be synced. Usually this is done with a REST API. The prob...

(RB_LY_COMMA)


[uncategorized] ~44-~44: Possible missing comma found.
Context: ...generic way. If you look at the typical backend its full of "data fetching" code that c...

(AI_HYDRA_LEO_MISSING_COMMA)


[uncategorized] ~44-~44: “its” (belonging to it) seems less likely than “it’s” (it is)
Context: ...way. If you look at the typical backend its full of "data fetching" code that conve...

(AI_HYDRA_LEO_CPT_ITS_ITIS)


[misspelling] ~46-~46: This word is normally spelled as one.
Context: ...that this data fetching is usually very sub-optimal. Two important problems arise: Over-fet...

(EN_COMPOUNDS_SUB_OPTIMAL)


[uncategorized] ~47-~47: Possible missing comma found.
Context: ...ching becomes less and less performant. Suddenly when you call GET /users/123 you're a...

(AI_HYDRA_LEO_MISSING_COMMA)


[uncategorized] ~51-~51: Possible missing comma found.
Context: ... fetching dependency tree: to fetch the user you first need to fetch the address. Th...

(AI_HYDRA_LEO_MISSING_COMMA)


[uncategorized] ~51-~51: Possible missing comma found.
Context: ...address. This can get quite complicated easily to the point where you often have 3-4 l...

(AI_HYDRA_LEO_MISSING_COMMA)


[typographical] ~51-~51: If specifying a range, consider using an en dash instead of a hyphen.
Context: ...asily to the point where you often have 3-4 levels of dependencies. Now let's ass...

(HYPHEN_TO_EN)


[uncategorized] ~55-~55: Use a comma before ‘and’ if it connects two independent clauses (unless they are closely connected and short).
Context: ...ons get made implicitly by the developer and they result in non-optimal fetching tre...

(COMMA_COMPOUND_SENTENCE)


[style] ~59-~59: As an alternative to the over-used intensifier ‘very’, consider replacing this phrase.
Context: ... the puzzle is the authorization layer. A very big and important layer that often gets neg...

(EN_WEAK_ADJECTIVE)


[style] ~63-~63: To elevate your writing, try using a synonym here.
Context: ...ross the codebase. This makes it really hard to audit and reason about. Even in a sm...

(HARD_TO)


[uncategorized] ~63-~63: Possible missing comma found.
Context: ...audit and reason about. Even in a small app it's impossible to ask a basic question...

(AI_HYDRA_LEO_MISSING_COMMA)


[style] ~71-~71: To elevate your writing, try using a synonym here.
Context: ...bout any of this complexity. I find it hard to come up with a catchy name for it, b...

(HARD_TO)


[typographical] ~71-~71: Consider adding a comma after ‘lately’ for more clarity.
Context: ... come up with a catchy name for it, but lately I've been thinking of SynthQL as a secu...

(RB_LY_COMMA)


[uncategorized] ~107-~107: Possible missing comma found.
Context: ...example above, ### Frontend ORM With SynthQL you can fetch data from your database d...

(AI_HYDRA_LEO_MISSING_COMMA)


[grammar] ~107-~107: The modal verb ‘can’ requires the verb’s base form.
Context: ...ur React components. This means you can built mini-endpoints that are tightly coupled...

(MD_BASEFORM)


[uncategorized] ~139-~139: This expression is usually spelled with a hyphen.
Context: ...features that set it apart: Declarative role based access controls and query whitelisting....

(BASED_HYPHEN)


[typographical] ~141-~141: The conjunction “so that” does not require a comma.
Context: ... to whitelist the query with the backend, so that the backend can check that the user has...

(SO_THAT_UNNECESSARY_COMMA)

🪛 Markdownlint
packages/docs/blog/2024-10-09-the-database-app/index.md

16-16: Expected: 0 or 2; Actual: 1
Trailing spaces

(MD009, no-trailing-spaces)


20-20: Expected: 0 or 2; Actual: 1
Trailing spaces

(MD009, no-trailing-spaces)


49-49: Expected: 0 or 2; Actual: 1
Trailing spaces

(MD009, no-trailing-spaces)


51-51: Expected: 0 or 2; Actual: 1
Trailing spaces

(MD009, no-trailing-spaces)


61-61: Expected: 0 or 2; Actual: 1
Trailing spaces

(MD009, no-trailing-spaces)


103-103: Expected: 0 or 2; Actual: 1
Trailing spaces

(MD009, no-trailing-spaces)


143-143: Expected: 0 or 2; Actual: 1
Trailing spaces

(MD009, no-trailing-spaces)


98-98: Expected: 1; Actual: 2
Multiple consecutive blank lines

(MD012, no-multiple-blanks)


149-149: Expected: 1; Actual: 2
Multiple consecutive blank lines

(MD012, no-multiple-blanks)


150-150: Expected: 1; Actual: 3
Multiple consecutive blank lines

(MD012, no-multiple-blanks)


151-151: Expected: 1; Actual: 4
Multiple consecutive blank lines

(MD012, no-multiple-blanks)


152-152: Expected: 1; Actual: 5
Multiple consecutive blank lines

(MD012, no-multiple-blanks)


153-153: Expected: 1; Actual: 6
Multiple consecutive blank lines

(MD012, no-multiple-blanks)


154-154: Expected: 1; Actual: 7
Multiple consecutive blank lines

(MD012, no-multiple-blanks)


155-155: Expected: 1; Actual: 8
Multiple consecutive blank lines

(MD012, no-multiple-blanks)


156-156: Expected: 1; Actual: 9
Multiple consecutive blank lines

(MD012, no-multiple-blanks)


157-157: Expected: 1; Actual: 10
Multiple consecutive blank lines

(MD012, no-multiple-blanks)


12-12: Expected: 250; Actual: 335
Line length

(MD013, line-length)


14-14: Expected: 250; Actual: 360
Line length

(MD013, line-length)


34-34: Expected: 250; Actual: 437
Line length

(MD013, line-length)


37-37: Expected: 250; Actual: 351
Line length

(MD013, line-length)


42-42: Expected: 250; Actual: 442
Line length

(MD013, line-length)


44-44: Expected: 250; Actual: 287
Line length

(MD013, line-length)


47-47: Expected: 250; Actual: 285
Line length

(MD013, line-length)


53-53: Expected: 250; Actual: 293
Line length

(MD013, line-length)


61-61: Expected: 250; Actual: 281
Line length

(MD013, line-length)


63-63: Expected: 250; Actual: 339
Line length

(MD013, line-length)


65-65: Expected: 250; Actual: 398
Line length

(MD013, line-length)


33-33: Expected: 1; Actual: 0; Below
Headings should be surrounded by blank lines

(MD022, blanks-around-headings)


36-36: Expected: 1; Actual: 0; Below
Headings should be surrounded by blank lines

(MD022, blanks-around-headings)


39-39: Expected: 1; Actual: 0; Below
Headings should be surrounded by blank lines

(MD022, blanks-around-headings)


8-8: null
Multiple top-level headings in the same document

(MD025, single-title, single-h1)


28-28: Expected: 2; Actual: 1
Spaces after list markers

(MD030, list-marker-space)


29-29: Expected: 2; Actual: 1
Spaces after list markers

(MD030, list-marker-space)


30-30: Expected: 2; Actual: 1
Spaces after list markers

(MD030, list-marker-space)


31-31: Expected: 2; Actual: 1
Spaces after list markers

(MD030, list-marker-space)


47-47: Expected: 2; Actual: 1
Spaces after list markers

(MD030, list-marker-space)


49-49: Expected: 2; Actual: 1
Spaces after list markers

(MD030, list-marker-space)


47-47: null
Lists should be surrounded by blank lines

(MD032, blanks-around-lists)

🔇 Additional comments (2)
packages/docs/blog/2024-10-09-the-database-app/index.md (2)

1-6: LGTM: Frontmatter is well-structured

The frontmatter section is correctly formatted and contains all the necessary metadata for the blog post.


1-157: Overall: Informative and well-structured blog post with minor improvements needed

This blog post effectively introduces the concept of database apps and SynthQL. The content is informative, well-structured, and provides clear explanations with illustrative code examples. The minor grammatical and formatting issues identified can be easily addressed to enhance the overall quality of the post.

Key strengths:

  1. Clear explanation of database apps and their components
  2. Effective introduction of SynthQL and its features
  3. Well-formatted code examples

Areas for improvement:

  1. Minor grammatical and style issues
  2. Some formatting inconsistencies

Once these minor issues are addressed, the blog post will be an excellent addition to the documentation.

🧰 Tools
🪛 LanguageTool

[misspelling] ~12-~12: Use “an” instead of ‘a’ if the following word starts with a vowel sound, e.g. ‘an article’, ‘an hour’.
Context: ...oftware developer, I've "re-discovered" a interesting pattern: a surprising numbe...

(EN_A_VS_AN)


[formatting] ~14-~14: If the ‘because’ clause is essential to the meaning, do not use a comma before the clause.
Context: ...nipulate that data. I say re-discovered, because it's hardly a discovery at all. We've k...

(COMMA_BEFORE_BECAUSE)


[uncategorized] ~16-~16: Possible missing comma found.
Context: ...ried to solve this pattern in a generic way such as Airtable, Notion, Retool, and o...

(AI_HYDRA_LEO_MISSING_COMMA)


[typographical] ~16-~16: Consider adding a comma here.
Context: ...c way such as Airtable, Notion, Retool, and of course the venerable Excel. I call these **"...

(OF_COURSE_COMMA)


[uncategorized] ~20-~20: Use a comma before ‘so’ if it connects two independent clauses (unless they are closely connected and short).
Context: ... me build database apps ontop of my data so I can build a custom (and hopefully gre...

(COMMA_COMPOUND_SENTENCE)


[style] ~34-~34: As an alternative to the over-used intensifier ‘very’, consider replacing this phrase.
Context: ...t's not that React is perfect, but it's a very good abstraction for building complex UIs. T...

(EN_WEAK_ADJECTIVE)


[grammar] ~37-~37: The word ‘believe’ is a verb. Did you mean the noun “belief”?
Context: ...iences. ### The database It is also my believe that Postgres has solved the database p...

(PREPOSITION_VERB)


[uncategorized] ~40-~40: Possible missing comma found.
Context: ...t data from the DB into the UI. In most environments the DB doesn't fit in the client, so th...

(AI_HYDRA_LEO_MISSING_COMMA)


[typographical] ~40-~40: Consider adding a comma after ‘Usually’ for more clarity.
Context: ...client, so the data needs to be synced. Usually this is done with a REST API. The prob...

(RB_LY_COMMA)


[uncategorized] ~44-~44: Possible missing comma found.
Context: ...generic way. If you look at the typical backend its full of "data fetching" code that c...

(AI_HYDRA_LEO_MISSING_COMMA)


[uncategorized] ~44-~44: “its” (belonging to it) seems less likely than “it’s” (it is)
Context: ...way. If you look at the typical backend its full of "data fetching" code that conve...

(AI_HYDRA_LEO_CPT_ITS_ITIS)


[misspelling] ~46-~46: This word is normally spelled as one.
Context: ...that this data fetching is usually very sub-optimal. Two important problems arise: Over-fet...

(EN_COMPOUNDS_SUB_OPTIMAL)


[uncategorized] ~47-~47: Possible missing comma found.
Context: ...ching becomes less and less performant. Suddenly when you call GET /users/123 you're a...

(AI_HYDRA_LEO_MISSING_COMMA)


[uncategorized] ~51-~51: Possible missing comma found.
Context: ... fetching dependency tree: to fetch the user you first need to fetch the address. Th...

(AI_HYDRA_LEO_MISSING_COMMA)


[uncategorized] ~51-~51: Possible missing comma found.
Context: ...address. This can get quite complicated easily to the point where you often have 3-4 l...

(AI_HYDRA_LEO_MISSING_COMMA)


[typographical] ~51-~51: If specifying a range, consider using an en dash instead of a hyphen.
Context: ...asily to the point where you often have 3-4 levels of dependencies. Now let's ass...

(HYPHEN_TO_EN)


[uncategorized] ~55-~55: Use a comma before ‘and’ if it connects two independent clauses (unless they are closely connected and short).
Context: ...ons get made implicitly by the developer and they result in non-optimal fetching tre...

(COMMA_COMPOUND_SENTENCE)


[style] ~59-~59: As an alternative to the over-used intensifier ‘very’, consider replacing this phrase.
Context: ... the puzzle is the authorization layer. A very big and important layer that often gets neg...

(EN_WEAK_ADJECTIVE)


[style] ~63-~63: To elevate your writing, try using a synonym here.
Context: ...ross the codebase. This makes it really hard to audit and reason about. Even in a sm...

(HARD_TO)


[uncategorized] ~63-~63: Possible missing comma found.
Context: ...audit and reason about. Even in a small app it's impossible to ask a basic question...

(AI_HYDRA_LEO_MISSING_COMMA)


[style] ~71-~71: To elevate your writing, try using a synonym here.
Context: ...bout any of this complexity. I find it hard to come up with a catchy name for it, b...

(HARD_TO)


[typographical] ~71-~71: Consider adding a comma after ‘lately’ for more clarity.
Context: ... come up with a catchy name for it, but lately I've been thinking of SynthQL as a secu...

(RB_LY_COMMA)


[uncategorized] ~107-~107: Possible missing comma found.
Context: ...example above, ### Frontend ORM With SynthQL you can fetch data from your database d...

(AI_HYDRA_LEO_MISSING_COMMA)


[grammar] ~107-~107: The modal verb ‘can’ requires the verb’s base form.
Context: ...ur React components. This means you can built mini-endpoints that are tightly coupled...

(MD_BASEFORM)


[uncategorized] ~139-~139: This expression is usually spelled with a hyphen.
Context: ...features that set it apart: Declarative role based access controls and query whitelisting....

(BASED_HYPHEN)


[typographical] ~141-~141: The conjunction “so that” does not require a comma.
Context: ... to whitelist the query with the backend, so that the backend can check that the user has...

(SO_THAT_UNNECESSARY_COMMA)

🪛 Markdownlint

16-16: Expected: 0 or 2; Actual: 1
Trailing spaces

(MD009, no-trailing-spaces)


20-20: Expected: 0 or 2; Actual: 1
Trailing spaces

(MD009, no-trailing-spaces)


49-49: Expected: 0 or 2; Actual: 1
Trailing spaces

(MD009, no-trailing-spaces)


51-51: Expected: 0 or 2; Actual: 1
Trailing spaces

(MD009, no-trailing-spaces)


61-61: Expected: 0 or 2; Actual: 1
Trailing spaces

(MD009, no-trailing-spaces)


103-103: Expected: 0 or 2; Actual: 1
Trailing spaces

(MD009, no-trailing-spaces)


143-143: Expected: 0 or 2; Actual: 1
Trailing spaces

(MD009, no-trailing-spaces)


98-98: Expected: 1; Actual: 2
Multiple consecutive blank lines

(MD012, no-multiple-blanks)


149-149: Expected: 1; Actual: 2
Multiple consecutive blank lines

(MD012, no-multiple-blanks)


150-150: Expected: 1; Actual: 3
Multiple consecutive blank lines

(MD012, no-multiple-blanks)


151-151: Expected: 1; Actual: 4
Multiple consecutive blank lines

(MD012, no-multiple-blanks)


152-152: Expected: 1; Actual: 5
Multiple consecutive blank lines

(MD012, no-multiple-blanks)


153-153: Expected: 1; Actual: 6
Multiple consecutive blank lines

(MD012, no-multiple-blanks)


154-154: Expected: 1; Actual: 7
Multiple consecutive blank lines

(MD012, no-multiple-blanks)


155-155: Expected: 1; Actual: 8
Multiple consecutive blank lines

(MD012, no-multiple-blanks)


156-156: Expected: 1; Actual: 9
Multiple consecutive blank lines

(MD012, no-multiple-blanks)


157-157: Expected: 1; Actual: 10
Multiple consecutive blank lines

(MD012, no-multiple-blanks)


12-12: Expected: 250; Actual: 335
Line length

(MD013, line-length)


14-14: Expected: 250; Actual: 360
Line length

(MD013, line-length)


34-34: Expected: 250; Actual: 437
Line length

(MD013, line-length)


37-37: Expected: 250; Actual: 351
Line length

(MD013, line-length)


42-42: Expected: 250; Actual: 442
Line length

(MD013, line-length)


44-44: Expected: 250; Actual: 287
Line length

(MD013, line-length)


47-47: Expected: 250; Actual: 285
Line length

(MD013, line-length)


53-53: Expected: 250; Actual: 293
Line length

(MD013, line-length)


61-61: Expected: 250; Actual: 281
Line length

(MD013, line-length)


63-63: Expected: 250; Actual: 339
Line length

(MD013, line-length)


65-65: Expected: 250; Actual: 398
Line length

(MD013, line-length)


33-33: Expected: 1; Actual: 0; Below
Headings should be surrounded by blank lines

(MD022, blanks-around-headings)


36-36: Expected: 1; Actual: 0; Below
Headings should be surrounded by blank lines

(MD022, blanks-around-headings)


39-39: Expected: 1; Actual: 0; Below
Headings should be surrounded by blank lines

(MD022, blanks-around-headings)


8-8: null
Multiple top-level headings in the same document

(MD025, single-title, single-h1)


28-28: Expected: 2; Actual: 1
Spaces after list markers

(MD030, list-marker-space)


29-29: Expected: 2; Actual: 1
Spaces after list markers

(MD030, list-marker-space)


30-30: Expected: 2; Actual: 1
Spaces after list markers

(MD030, list-marker-space)


31-31: Expected: 2; Actual: 1
Spaces after list markers

(MD030, list-marker-space)


47-47: Expected: 2; Actual: 1
Spaces after list markers

(MD030, list-marker-space)


49-49: Expected: 2; Actual: 1
Spaces after list markers

(MD030, list-marker-space)


47-47: null
Lists should be surrounded by blank lines

(MD032, blanks-around-lists)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant