Repository files navigation

Hatchify

OpenSSF Best Practicesnpm versionContributor Covenant

DiscordTwitter Follow

Hatchify is a web application framework designed to accelerate the development of CRUD applications. If all you need is basic app, Hatchify can provide you with a fully functional system straight from a datatype schema. If you have more specialized requirements, Hatchify makes it easy to customize every part of the application to meet your needs.

Hatchify is structured as a number of modular libraries that can be consumed individually to use as much, or as little, as you require. Hatchify provides the speed of low-code development and the extensibility of custom code.

Getting Started

In just a few short steps we will set up a project containing a Hatchify frontend and backend. Our frontend will use React and MUI, and our backend will be using Koa. The project also uses Vite as a dev server which handles much of the React configuration for us.

✏️ Perform all the following steps:

Note: The ✏️ icon indicates when to follow along!

  1. Ensure you’re using node 18 and npm 9 or above

    node -v
    npm -v
  2. Create a new project:

    npm init @hatchifyjs@latest
    • For the backend prompt answer: "Koa"
    • For the database prompt answer: "SQLite"
  3. Change into the project directiory and start the server:

    cd hatchify-app
    npm run dev
  4. Navigate to the Hatchify welcome screen at http://localhost:3000/:

Screenshot 2024-03-06 at 10 35 02 AM

Congrats, you’ve got a seed of something great started!

Schemas

Hatchify’s schemas define your data structure fields and relationships. We share these schemas across our backend and frontend to create database tables, generate REST endpoints, and create React components and data fetchers. Because these schemas are the backbone of our frontend and backend, we will place them in the empty schemas.ts file at the root directory of our project.

✏️ Update schemas.ts file with the following:

// hatchify-app/schemas.tsimport{belongsTo,boolean,dateonly,integer,hasMany,string}from"@hatchifyjs/core"importtype{PartialSchema}from"@hatchifyjs/core"exportconstTodo={name: "Todo",// 👀attributes: {name: string({required: true}),// 👀dueDate: dateonly(),importance: integer(),complete: boolean({default: false}),},relationships: {user: belongsTo("User"),// 👀},}satisfiesPartialSchemaexportconstUser={name: "User",attributes: {name: string({required: true}),},relationships: {todos: hasMany("Todo"),// 👀},}satisfiesPartialSchema

As soon as you save this change, the app will automatically reload to include the new data types you've added:

Screenshot 2024-03-08 at 10 09 20 AM

This defines a Todo and User type, each with some attributes. It also creates a relationship where a Todo belongsTo a User, and each user hasMany Todos.

You can refer to our documentation for more information on how to define schemas.

Seed Data

Hatchify doesn’t currently generate forms (though we are working on it!). To add data, you can use the REST APIs that Hatchify’s middleware provides.

Seeding Sample Data

✏️ Run the following command in a new terminal window to seed some sample data:

npx hatchify-gsg-seed

This command will run a script that uses the REST API to seed some sample data into the database. For more information on the request being made, you can reference the create function in the hatchedKoa.model documentation.

To learn more about the service layer, read the docs regarding our JSON:API implementation

With some data in place, we can now further review the project.

Interact with the UI

Now that data has been seeded the UI should look like:

Screenshot 2024-03-08 at 10 05 44 AM

You can start using this basic app to sort & filter the data:

Screenshot 2024-03-08 at 10 07 58 AM

What you've built is currently bare bones, but read through our guides in the following section to learn how to enhance it to meet your needs.

Guides

Continue learning more about the Hatchify feature set with these guides that continue from the example above:

API Docs

Learn how to make Hatchify match your needs with its technical interface documentation:

Need help or have questions?

This project is supported by Bitovi, a web software consultancy. You can get help or ask questions on our:

Or, you can hire us for training, consulting, or development. Set up a free consultation.

Read more about Hatchify

Gain more insight into Hatchify by checking out our blog posts.

Trying Hatchify Online

You can try Hatchify online on StackBlitz. It runs the Hatchify-based build setup directly in the browser, so it is almost identical to the local setup but doesn't require installing anything on your machine.

About

JavaScript, open source, CRUD app scaffolding that turns schemas into an app quickly, while allowing customization later.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

83 stars

Watchers

22 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

Hatchify

OpenSSF Best Practicesnpm versionContributor Covenant

DiscordTwitter Follow

Hatchify is a web application framework designed to accelerate the development of CRUD applications. If all you need is basic app, Hatchify can provide you with a fully functional system straight from a datatype schema. If you have more specialized requirements, Hatchify makes it easy to customize every part of the application to meet your needs.

Hatchify is structured as a number of modular libraries that can be consumed individually to use as much, or as little, as you require. Hatchify provides the speed of low-code development and the extensibility of custom code.

Getting Started

In just a few short steps we will set up a project containing a Hatchify frontend and backend. Our frontend will use React and MUI, and our backend will be using Koa. The project also uses Vite as a dev server which handles much of the React configuration for us.

✏️ Perform all the following steps:

Note: The ✏️ icon indicates when to follow along!

  1. Ensure you’re using node 18 and npm 9 or above

    node -v
    npm -v
  2. Create a new project:

    npm init @hatchifyjs@latest
    • For the backend prompt answer: "Koa"
    • For the database prompt answer: "SQLite"
  3. Change into the project directiory and start the server:

    cd hatchify-app
    npm run dev
  4. Navigate to the Hatchify welcome screen at http://localhost:3000/:

Screenshot 2024-03-06 at 10 35 02 AM

Congrats, you’ve got a seed of something great started!

Schemas

Hatchify’s schemas define your data structure fields and relationships. We share these schemas across our backend and frontend to create database tables, generate REST endpoints, and create React components and data fetchers. Because these schemas are the backbone of our frontend and backend, we will place them in the empty schemas.ts file at the root directory of our project.

✏️ Update schemas.ts file with the following:

// hatchify-app/schemas.tsimport{belongsTo,boolean,dateonly,integer,hasMany,string}from"@hatchifyjs/core"importtype{PartialSchema}from"@hatchifyjs/core"exportconstTodo={name: "Todo",// 👀attributes: {name: string({required: true}),// 👀dueDate: dateonly(),importance: integer(),complete: boolean({default: false}),},relationships: {user: belongsTo("User"),// 👀},}satisfiesPartialSchemaexportconstUser={name: "User",attributes: {name: string({required: true}),},relationships: {todos: hasMany("Todo"),// 👀},}satisfiesPartialSchema

As soon as you save this change, the app will automatically reload to include the new data types you've added:

Screenshot 2024-03-08 at 10 09 20 AM

This defines a Todo and User type, each with some attributes. It also creates a relationship where a Todo belongsTo a User, and each user hasMany Todos.

You can refer to our documentation for more information on how to define schemas.

Seed Data

Hatchify doesn’t currently generate forms (though we are working on it!). To add data, you can use the REST APIs that Hatchify’s middleware provides.

Seeding Sample Data

✏️ Run the following command in a new terminal window to seed some sample data:

npx hatchify-gsg-seed

This command will run a script that uses the REST API to seed some sample data into the database. For more information on the request being made, you can reference the create function in the hatchedKoa.model documentation.

To learn more about the service layer, read the docs regarding our JSON:API implementation

With some data in place, we can now further review the project.

Interact with the UI

Now that data has been seeded the UI should look like:

Screenshot 2024-03-08 at 10 05 44 AM

You can start using this basic app to sort & filter the data:

Screenshot 2024-03-08 at 10 07 58 AM

What you've built is currently bare bones, but read through our guides in the following section to learn how to enhance it to meet your needs.

Guides

Continue learning more about the Hatchify feature set with these guides that continue from the example above:

API Docs

Learn how to make Hatchify match your needs with its technical interface documentation:

Need help or have questions?

This project is supported by Bitovi, a web software consultancy. You can get help or ask questions on our:

Or, you can hire us for training, consulting, or development. Set up a free consultation.

Read more about Hatchify

Gain more insight into Hatchify by checking out our blog posts.

Trying Hatchify Online

You can try Hatchify online on StackBlitz. It runs the Hatchify-based build setup directly in the browser, so it is almost identical to the local setup but doesn't require installing anything on your machine.

About

JavaScript, open source, CRUD app scaffolding that turns schemas into an app quickly, while allowing customization later.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

83 stars

Watchers

22 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Hatchify

OpenSSF Best Practicesnpm versionContributor Covenant

DiscordTwitter Follow

Hatchify is a web application framework designed to accelerate the development of CRUD applications. If all you need is basic app, Hatchify can provide you with a fully functional system straight from a datatype schema. If you have more specialized requirements, Hatchify makes it easy to customize every part of the application to meet your needs.

Hatchify is structured as a number of modular libraries that can be consumed individually to use as much, or as little, as you require. Hatchify provides the speed of low-code development and the extensibility of custom code.

Getting Started

In just a few short steps we will set up a project containing a Hatchify frontend and backend. Our frontend will use React and MUI, and our backend will be using Koa. The project also uses Vite as a dev server which handles much of the React configuration for us.

✏️ Perform all the following steps:

Note: The ✏️ icon indicates when to follow along!

  1. Ensure you’re using node 18 and npm 9 or above

    node -v
    npm -v
  2. Create a new project:

    npm init @hatchifyjs@latest
    • For the backend prompt answer: "Koa"
    • For the database prompt answer: "SQLite"
  3. Change into the project directiory and start the server:

    cd hatchify-app
    npm run dev
  4. Navigate to the Hatchify welcome screen at http://localhost:3000/:

Screenshot 2024-03-06 at 10 35 02 AM

Congrats, you’ve got a seed of something great started!

Schemas

Hatchify’s schemas define your data structure fields and relationships. We share these schemas across our backend and frontend to create database tables, generate REST endpoints, and create React components and data fetchers. Because these schemas are the backbone of our frontend and backend, we will place them in the empty schemas.ts file at the root directory of our project.

✏️ Update schemas.ts file with the following:

// hatchify-app/schemas.tsimport{belongsTo,boolean,dateonly,integer,hasMany,string}from"@hatchifyjs/core"importtype{PartialSchema}from"@hatchifyjs/core"exportconstTodo={name: "Todo",// 👀attributes: {name: string({required: true}),// 👀dueDate: dateonly(),importance: integer(),complete: boolean({default: false}),},relationships: {user: belongsTo("User"),// 👀},}satisfiesPartialSchemaexportconstUser={name: "User",attributes: {name: string({required: true}),},relationships: {todos: hasMany("Todo"),// 👀},}satisfiesPartialSchema

As soon as you save this change, the app will automatically reload to include the new data types you've added:

Screenshot 2024-03-08 at 10 09 20 AM

This defines a Todo and User type, each with some attributes. It also creates a relationship where a Todo belongsTo a User, and each user hasMany Todos.

You can refer to our documentation for more information on how to define schemas.

Seed Data

Hatchify doesn’t currently generate forms (though we are working on it!). To add data, you can use the REST APIs that Hatchify’s middleware provides.

Seeding Sample Data

✏️ Run the following command in a new terminal window to seed some sample data:

npx hatchify-gsg-seed

This command will run a script that uses the REST API to seed some sample data into the database. For more information on the request being made, you can reference the create function in the hatchedKoa.model documentation.

To learn more about the service layer, read the docs regarding our JSON:API implementation

With some data in place, we can now further review the project.

Interact with the UI

Now that data has been seeded the UI should look like:

Screenshot 2024-03-08 at 10 05 44 AM

You can start using this basic app to sort & filter the data:

Screenshot 2024-03-08 at 10 07 58 AM

What you've built is currently bare bones, but read through our guides in the following section to learn how to enhance it to meet your needs.

Guides

Continue learning more about the Hatchify feature set with these guides that continue from the example above:

API Docs

Learn how to make Hatchify match your needs with its technical interface documentation:

Need help or have questions?

This project is supported by Bitovi, a web software consultancy. You can get help or ask questions on our:

Or, you can hire us for training, consulting, or development. Set up a free consultation.

Read more about Hatchify

Gain more insight into Hatchify by checking out our blog posts.

Trying Hatchify Online

You can try Hatchify online on StackBlitz. It runs the Hatchify-based build setup directly in the browser, so it is almost identical to the local setup but doesn't require installing anything on your machine.

About

JavaScript, open source, CRUD app scaffolding that turns schemas into an app quickly, while allowing customization later.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

83 stars

Watchers

22 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Hatchify

OpenSSF Best Practicesnpm versionContributor Covenant

DiscordTwitter Follow

Hatchify is a web application framework designed to accelerate the development of CRUD applications. If all you need is basic app, Hatchify can provide you with a fully functional system straight from a datatype schema. If you have more specialized requirements, Hatchify makes it easy to customize every part of the application to meet your needs.

Hatchify is structured as a number of modular libraries that can be consumed individually to use as much, or as little, as you require. Hatchify provides the speed of low-code development and the extensibility of custom code.

Getting Started

In just a few short steps we will set up a project containing a Hatchify frontend and backend. Our frontend will use React and MUI, and our backend will be using Koa. The project also uses Vite as a dev server which handles much of the React configuration for us.

✏️ Perform all the following steps:

Note: The ✏️ icon indicates when to follow along!

  1. Ensure you’re using node 18 and npm 9 or above

    node -v
    npm -v
  2. Create a new project:

    npm init @hatchifyjs@latest
    • For the backend prompt answer: "Koa"
    • For the database prompt answer: "SQLite"
  3. Change into the project directiory and start the server:

    cd hatchify-app
    npm run dev
  4. Navigate to the Hatchify welcome screen at http://localhost:3000/:

Screenshot 2024-03-06 at 10 35 02 AM

Congrats, you’ve got a seed of something great started!

Schemas

Hatchify’s schemas define your data structure fields and relationships. We share these schemas across our backend and frontend to create database tables, generate REST endpoints, and create React components and data fetchers. Because these schemas are the backbone of our frontend and backend, we will place them in the empty schemas.ts file at the root directory of our project.

✏️ Update schemas.ts file with the following:

// hatchify-app/schemas.tsimport{belongsTo,boolean,dateonly,integer,hasMany,string}from"@hatchifyjs/core"importtype{PartialSchema}from"@hatchifyjs/core"exportconstTodo={name: "Todo",// 👀attributes: {name: string({required: true}),// 👀dueDate: dateonly(),importance: integer(),complete: boolean({default: false}),},relationships: {user: belongsTo("User"),// 👀},}satisfiesPartialSchemaexportconstUser={name: "User",attributes: {name: string({required: true}),},relationships: {todos: hasMany("Todo"),// 👀},}satisfiesPartialSchema

As soon as you save this change, the app will automatically reload to include the new data types you've added:

Screenshot 2024-03-08 at 10 09 20 AM

This defines a Todo and User type, each with some attributes. It also creates a relationship where a Todo belongsTo a User, and each user hasMany Todos.

You can refer to our documentation for more information on how to define schemas.

Seed Data

Hatchify doesn’t currently generate forms (though we are working on it!). To add data, you can use the REST APIs that Hatchify’s middleware provides.

Seeding Sample Data

✏️ Run the following command in a new terminal window to seed some sample data:

npx hatchify-gsg-seed

This command will run a script that uses the REST API to seed some sample data into the database. For more information on the request being made, you can reference the create function in the hatchedKoa.model documentation.

To learn more about the service layer, read the docs regarding our JSON:API implementation

With some data in place, we can now further review the project.

Interact with the UI

Now that data has been seeded the UI should look like:

Screenshot 2024-03-08 at 10 05 44 AM

You can start using this basic app to sort & filter the data:

Screenshot 2024-03-08 at 10 07 58 AM

What you've built is currently bare bones, but read through our guides in the following section to learn how to enhance it to meet your needs.

Guides

Continue learning more about the Hatchify feature set with these guides that continue from the example above:

API Docs

Learn how to make Hatchify match your needs with its technical interface documentation:

Need help or have questions?

This project is supported by Bitovi, a web software consultancy. You can get help or ask questions on our:

Or, you can hire us for training, consulting, or development. Set up a free consultation.

Read more about Hatchify

Gain more insight into Hatchify by checking out our blog posts.

Trying Hatchify Online

You can try Hatchify online on StackBlitz. It runs the Hatchify-based build setup directly in the browser, so it is almost identical to the local setup but doesn't require installing anything on your machine.

About

JavaScript, open source, CRUD app scaffolding that turns schemas into an app quickly, while allowing customization later.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

83 stars

Watchers

22 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

Hatchify

OpenSSF Best Practicesnpm versionContributor Covenant

DiscordTwitter Follow

Hatchify is a web application framework designed to accelerate the development of CRUD applications. If all you need is basic app, Hatchify can provide you with a fully functional system straight from a datatype schema. If you have more specialized requirements, Hatchify makes it easy to customize every part of the application to meet your needs.

Hatchify is structured as a number of modular libraries that can be consumed individually to use as much, or as little, as you require. Hatchify provides the speed of low-code development and the extensibility of custom code.

Getting Started

In just a few short steps we will set up a project containing a Hatchify frontend and backend. Our frontend will use React and MUI, and our backend will be using Koa. The project also uses Vite as a dev server which handles much of the React configuration for us.

✏️ Perform all the following steps:

Note: The ✏️ icon indicates when to follow along!

  1. Ensure you’re using node 18 and npm 9 or above

    node -v
    npm -v
  2. Create a new project:

    npm init @hatchifyjs@latest
    • For the backend prompt answer: "Koa"
    • For the database prompt answer: "SQLite"
  3. Change into the project directiory and start the server:

    cd hatchify-app
    npm run dev
  4. Navigate to the Hatchify welcome screen at http://localhost:3000/:

Screenshot 2024-03-06 at 10 35 02 AM

Congrats, you’ve got a seed of something great started!

Schemas

Hatchify’s schemas define your data structure fields and relationships. We share these schemas across our backend and frontend to create database tables, generate REST endpoints, and create React components and data fetchers. Because these schemas are the backbone of our frontend and backend, we will place them in the empty schemas.ts file at the root directory of our project.

✏️ Update schemas.ts file with the following:

// hatchify-app/schemas.tsimport{belongsTo,boolean,dateonly,integer,hasMany,string}from"@hatchifyjs/core"importtype{PartialSchema}from"@hatchifyjs/core"exportconstTodo={name: "Todo",// 👀attributes: {name: string({required: true}),// 👀dueDate: dateonly(),importance: integer(),complete: boolean({default: false}),},relationships: {user: belongsTo("User"),// 👀},}satisfiesPartialSchemaexportconstUser={name: "User",attributes: {name: string({required: true}),},relationships: {todos: hasMany("Todo"),// 👀},}satisfiesPartialSchema

As soon as you save this change, the app will automatically reload to include the new data types you've added:

Screenshot 2024-03-08 at 10 09 20 AM

This defines a Todo and User type, each with some attributes. It also creates a relationship where a Todo belongsTo a User, and each user hasMany Todos.

You can refer to our documentation for more information on how to define schemas.

Seed Data

Hatchify doesn’t currently generate forms (though we are working on it!). To add data, you can use the REST APIs that Hatchify’s middleware provides.

Seeding Sample Data

✏️ Run the following command in a new terminal window to seed some sample data:

npx hatchify-gsg-seed

This command will run a script that uses the REST API to seed some sample data into the database. For more information on the request being made, you can reference the create function in the hatchedKoa.model documentation.

To learn more about the service layer, read the docs regarding our JSON:API implementation

With some data in place, we can now further review the project.

Interact with the UI

Now that data has been seeded the UI should look like:

Screenshot 2024-03-08 at 10 05 44 AM

You can start using this basic app to sort & filter the data:

Screenshot 2024-03-08 at 10 07 58 AM

What you've built is currently bare bones, but read through our guides in the following section to learn how to enhance it to meet your needs.

Guides

Continue learning more about the Hatchify feature set with these guides that continue from the example above:

API Docs

Learn how to make Hatchify match your needs with its technical interface documentation:

Need help or have questions?

This project is supported by Bitovi, a web software consultancy. You can get help or ask questions on our:

Or, you can hire us for training, consulting, or development. Set up a free consultation.

Read more about Hatchify

Gain more insight into Hatchify by checking out our blog posts.

Trying Hatchify Online

You can try Hatchify online on StackBlitz. It runs the Hatchify-based build setup directly in the browser, so it is almost identical to the local setup but doesn't require installing anything on your machine.

About

JavaScript, open source, CRUD app scaffolding that turns schemas into an app quickly, while allowing customization later.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

83 stars

Watchers

22 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Hatchify

OpenSSF Best Practicesnpm versionContributor Covenant

DiscordTwitter Follow

Hatchify is a web application framework designed to accelerate the development of CRUD applications. If all you need is basic app, Hatchify can provide you with a fully functional system straight from a datatype schema. If you have more specialized requirements, Hatchify makes it easy to customize every part of the application to meet your needs.

Hatchify is structured as a number of modular libraries that can be consumed individually to use as much, or as little, as you require. Hatchify provides the speed of low-code development and the extensibility of custom code.

Getting Started

In just a few short steps we will set up a project containing a Hatchify frontend and backend. Our frontend will use React and MUI, and our backend will be using Koa. The project also uses Vite as a dev server which handles much of the React configuration for us.

✏️ Perform all the following steps:

Note: The ✏️ icon indicates when to follow along!

  1. Ensure you’re using node 18 and npm 9 or above

    node -v
    npm -v
  2. Create a new project:

    npm init @hatchifyjs@latest
    • For the backend prompt answer: "Koa"
    • For the database prompt answer: "SQLite"
  3. Change into the project directiory and start the server:

    cd hatchify-app
    npm run dev
  4. Navigate to the Hatchify welcome screen at http://localhost:3000/:

Screenshot 2024-03-06 at 10 35 02 AM

Congrats, you’ve got a seed of something great started!

Schemas

Hatchify’s schemas define your data structure fields and relationships. We share these schemas across our backend and frontend to create database tables, generate REST endpoints, and create React components and data fetchers. Because these schemas are the backbone of our frontend and backend, we will place them in the empty schemas.ts file at the root directory of our project.

✏️ Update schemas.ts file with the following:

// hatchify-app/schemas.tsimport{belongsTo,boolean,dateonly,integer,hasMany,string}from"@hatchifyjs/core"importtype{PartialSchema}from"@hatchifyjs/core"exportconstTodo={name: "Todo",// 👀attributes: {name: string({required: true}),// 👀dueDate: dateonly(),importance: integer(),complete: boolean({default: false}),},relationships: {user: belongsTo("User"),// 👀},}satisfiesPartialSchemaexportconstUser={name: "User",attributes: {name: string({required: true}),},relationships: {todos: hasMany("Todo"),// 👀},}satisfiesPartialSchema

As soon as you save this change, the app will automatically reload to include the new data types you've added:

Screenshot 2024-03-08 at 10 09 20 AM

This defines a Todo and User type, each with some attributes. It also creates a relationship where a Todo belongsTo a User, and each user hasMany Todos.

You can refer to our documentation for more information on how to define schemas.

Seed Data

Hatchify doesn’t currently generate forms (though we are working on it!). To add data, you can use the REST APIs that Hatchify’s middleware provides.

Seeding Sample Data

✏️ Run the following command in a new terminal window to seed some sample data:

npx hatchify-gsg-seed

This command will run a script that uses the REST API to seed some sample data into the database. For more information on the request being made, you can reference the create function in the hatchedKoa.model documentation.

To learn more about the service layer, read the docs regarding our JSON:API implementation

With some data in place, we can now further review the project.

Interact with the UI

Now that data has been seeded the UI should look like:

Screenshot 2024-03-08 at 10 05 44 AM

You can start using this basic app to sort & filter the data:

Screenshot 2024-03-08 at 10 07 58 AM

What you've built is currently bare bones, but read through our guides in the following section to learn how to enhance it to meet your needs.

Guides

Continue learning more about the Hatchify feature set with these guides that continue from the example above:

API Docs

Learn how to make Hatchify match your needs with its technical interface documentation:

Need help or have questions?

This project is supported by Bitovi, a web software consultancy. You can get help or ask questions on our:

Or, you can hire us for training, consulting, or development. Set up a free consultation.

Read more about Hatchify

Gain more insight into Hatchify by checking out our blog posts.

Trying Hatchify Online

You can try Hatchify online on StackBlitz. It runs the Hatchify-based build setup directly in the browser, so it is almost identical to the local setup but doesn't require installing anything on your machine.

About

JavaScript, open source, CRUD app scaffolding that turns schemas into an app quickly, while allowing customization later.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

83 stars

Watchers

22 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Hatchify

OpenSSF Best Practicesnpm versionContributor Covenant

DiscordTwitter Follow

Hatchify is a web application framework designed to accelerate the development of CRUD applications. If all you need is basic app, Hatchify can provide you with a fully functional system straight from a datatype schema. If you have more specialized requirements, Hatchify makes it easy to customize every part of the application to meet your needs.

Hatchify is structured as a number of modular libraries that can be consumed individually to use as much, or as little, as you require. Hatchify provides the speed of low-code development and the extensibility of custom code.

Getting Started

In just a few short steps we will set up a project containing a Hatchify frontend and backend. Our frontend will use React and MUI, and our backend will be using Koa. The project also uses Vite as a dev server which handles much of the React configuration for us.

✏️ Perform all the following steps:

Note: The ✏️ icon indicates when to follow along!

  1. Ensure you’re using node 18 and npm 9 or above

    node -v
    npm -v
  2. Create a new project:

    npm init @hatchifyjs@latest
    • For the backend prompt answer: "Koa"
    • For the database prompt answer: "SQLite"
  3. Change into the project directiory and start the server:

    cd hatchify-app
    npm run dev
  4. Navigate to the Hatchify welcome screen at http://localhost:3000/:

Screenshot 2024-03-06 at 10 35 02 AM

Congrats, you’ve got a seed of something great started!

Schemas

Hatchify’s schemas define your data structure fields and relationships. We share these schemas across our backend and frontend to create database tables, generate REST endpoints, and create React components and data fetchers. Because these schemas are the backbone of our frontend and backend, we will place them in the empty schemas.ts file at the root directory of our project.

✏️ Update schemas.ts file with the following:

// hatchify-app/schemas.tsimport{belongsTo,boolean,dateonly,integer,hasMany,string}from"@hatchifyjs/core"importtype{PartialSchema}from"@hatchifyjs/core"exportconstTodo={name: "Todo",// 👀attributes: {name: string({required: true}),// 👀dueDate: dateonly(),importance: integer(),complete: boolean({default: false}),},relationships: {user: belongsTo("User"),// 👀},}satisfiesPartialSchemaexportconstUser={name: "User",attributes: {name: string({required: true}),},relationships: {todos: hasMany("Todo"),// 👀},}satisfiesPartialSchema

As soon as you save this change, the app will automatically reload to include the new data types you've added:

Screenshot 2024-03-08 at 10 09 20 AM

This defines a Todo and User type, each with some attributes. It also creates a relationship where a Todo belongsTo a User, and each user hasMany Todos.

You can refer to our documentation for more information on how to define schemas.

Seed Data

Hatchify doesn’t currently generate forms (though we are working on it!). To add data, you can use the REST APIs that Hatchify’s middleware provides.

Seeding Sample Data

✏️ Run the following command in a new terminal window to seed some sample data:

npx hatchify-gsg-seed

This command will run a script that uses the REST API to seed some sample data into the database. For more information on the request being made, you can reference the create function in the hatchedKoa.model documentation.

To learn more about the service layer, read the docs regarding our JSON:API implementation

With some data in place, we can now further review the project.

Interact with the UI

Now that data has been seeded the UI should look like:

Screenshot 2024-03-08 at 10 05 44 AM

You can start using this basic app to sort & filter the data:

Screenshot 2024-03-08 at 10 07 58 AM

What you've built is currently bare bones, but read through our guides in the following section to learn how to enhance it to meet your needs.

Guides

Continue learning more about the Hatchify feature set with these guides that continue from the example above:

API Docs

Learn how to make Hatchify match your needs with its technical interface documentation:

Need help or have questions?

This project is supported by Bitovi, a web software consultancy. You can get help or ask questions on our:

Or, you can hire us for training, consulting, or development. Set up a free consultation.

Read more about Hatchify

Gain more insight into Hatchify by checking out our blog posts.

Trying Hatchify Online

You can try Hatchify online on StackBlitz. It runs the Hatchify-based build setup directly in the browser, so it is almost identical to the local setup but doesn't require installing anything on your machine.

About

JavaScript, open source, CRUD app scaffolding that turns schemas into an app quickly, while allowing customization later.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

83 stars

Watchers

22 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

Hatchify

OpenSSF Best Practicesnpm versionContributor Covenant

DiscordTwitter Follow

Hatchify is a web application framework designed to accelerate the development of CRUD applications. If all you need is basic app, Hatchify can provide you with a fully functional system straight from a datatype schema. If you have more specialized requirements, Hatchify makes it easy to customize every part of the application to meet your needs.

Hatchify is structured as a number of modular libraries that can be consumed individually to use as much, or as little, as you require. Hatchify provides the speed of low-code development and the extensibility of custom code.

Getting Started

In just a few short steps we will set up a project containing a Hatchify frontend and backend. Our frontend will use React and MUI, and our backend will be using Koa. The project also uses Vite as a dev server which handles much of the React configuration for us.

✏️ Perform all the following steps:

Note: The ✏️ icon indicates when to follow along!

  1. Ensure you’re using node 18 and npm 9 or above

    node -v
    npm -v
  2. Create a new project:

    npm init @hatchifyjs@latest
    • For the backend prompt answer: "Koa"
    • For the database prompt answer: "SQLite"
  3. Change into the project directiory and start the server:

    cd hatchify-app
    npm run dev
  4. Navigate to the Hatchify welcome screen at http://localhost:3000/:

Screenshot 2024-03-06 at 10 35 02 AM

Congrats, you’ve got a seed of something great started!

Schemas

Hatchify’s schemas define your data structure fields and relationships. We share these schemas across our backend and frontend to create database tables, generate REST endpoints, and create React components and data fetchers. Because these schemas are the backbone of our frontend and backend, we will place them in the empty schemas.ts file at the root directory of our project.

✏️ Update schemas.ts file with the following:

// hatchify-app/schemas.tsimport{belongsTo,boolean,dateonly,integer,hasMany,string}from"@hatchifyjs/core"importtype{PartialSchema}from"@hatchifyjs/core"exportconstTodo={name: "Todo",// 👀attributes: {name: string({required: true}),// 👀dueDate: dateonly(),importance: integer(),complete: boolean({default: false}),},relationships: {user: belongsTo("User"),// 👀},}satisfiesPartialSchemaexportconstUser={name: "User",attributes: {name: string({required: true}),},relationships: {todos: hasMany("Todo"),// 👀},}satisfiesPartialSchema

As soon as you save this change, the app will automatically reload to include the new data types you've added:

Screenshot 2024-03-08 at 10 09 20 AM

This defines a Todo and User type, each with some attributes. It also creates a relationship where a Todo belongsTo a User, and each user hasMany Todos.

You can refer to our documentation for more information on how to define schemas.

Seed Data

Hatchify doesn’t currently generate forms (though we are working on it!). To add data, you can use the REST APIs that Hatchify’s middleware provides.

Seeding Sample Data

✏️ Run the following command in a new terminal window to seed some sample data:

npx hatchify-gsg-seed

This command will run a script that uses the REST API to seed some sample data into the database. For more information on the request being made, you can reference the create function in the hatchedKoa.model documentation.

To learn more about the service layer, read the docs regarding our JSON:API implementation

With some data in place, we can now further review the project.

Interact with the UI

Now that data has been seeded the UI should look like:

Screenshot 2024-03-08 at 10 05 44 AM

You can start using this basic app to sort & filter the data:

Screenshot 2024-03-08 at 10 07 58 AM

What you've built is currently bare bones, but read through our guides in the following section to learn how to enhance it to meet your needs.

Guides

Continue learning more about the Hatchify feature set with these guides that continue from the example above:

API Docs

Learn how to make Hatchify match your needs with its technical interface documentation:

Need help or have questions?

This project is supported by Bitovi, a web software consultancy. You can get help or ask questions on our:

Or, you can hire us for training, consulting, or development. Set up a free consultation.

Read more about Hatchify

Gain more insight into Hatchify by checking out our blog posts.

Trying Hatchify Online

You can try Hatchify online on StackBlitz. It runs the Hatchify-based build setup directly in the browser, so it is almost identical to the local setup but doesn't require installing anything on your machine.

About

JavaScript, open source, CRUD app scaffolding that turns schemas into an app quickly, while allowing customization later.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

83 stars

Watchers

22 watching

Forks

Releases

Packages

Used by

Contributors

Languages