@stackpress/idea
Version:
An open source schema file standard and generator
148 lines (120 loc) • 5.48 kB
Markdown
<div align="center">
<h1>💡 Idea</h1>
<a href="https://www.npmjs.com/package/@stackpress/idea"><img src="https://img.shields.io/npm/v/@stackpress/idea.svg?style=flat" /></a>
<a href="https://github.com/stackpress/idea/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-Apache%202.0-blue.svg?style=flat" /></a>
<a href="https://github.com/stackpress/idea/commits/main/"><img src="https://img.shields.io/github/last-commit/stackpress/idea" /></a>
<a href="https://github.com/stackpress/idea/actions"><img src="https://img.shields.io/github/actions/workflow/status/stackpress/idea/test.yml" /></a>
<a href="https://coveralls.io/github/stackpress/idea?branch=main"><img src="https://coveralls.io/repos/github/stackpress/idea/badge.svg?branch=main" /></a>
<a href="https://github.com/stackpress/idea/blob/main/docs/contribute.md"><img src="https://img.shields.io/badge/PRs-welcome-brightgreen.svg" /></a>
<br />
<br />
<a href="https://github.com/stackpress/idea/blob/main/docs/schema.md">Form an Idea</a>
<span> • </span>
<a href="https://github.com/stackpress/idea/blob/main/docs/transform.md">Transform an Idea</a>
<span> • </span>
<a href="https://marketplace.visualstudio.com/items?itemName=stackpress.idea-schema">Code Extension</a>
<span> • </span>
<a href="https://github.com/stackpress/idea/blob/main/docs/plugins.md">Plugins</a>
<br />
<hr />
</div>
> A meta language to express and transform your ideas to reality.
The purpose of this language is to streamline and automate parts of
software development that follow a common pattern and therefore can be
rendered. Some example code that can be generated using `.idea` files
including the following.
- Database calls with any ORM
- API, REST, or GraphQL endpoints
- React components
- TypeScript type safety
- Admin pages
- more than 70% of the code you produce
> It all starts with an idea...
## Install
```bash
$ npm i -D /idea
```
## How It Works
1. Describe your idea in a flexible schema format `my.idea`.
2. Install plugins to transform your idea to code `make-database`.
3. Generate your platform using the Idea commandline `$ idea`.
## Benefits
This tool is particularly useful for startups and companies looking
to build scalable and flexible software solutions quickly.
- **Speed and Efficiency**: Dramatically speeds up development time.
What might normally take weeks can be done in minutes, reducing the
cost and time to market.
- **Customization and Flexibility**: Ideas can be highly customized.
This means it can be adapted for a wide range of applications, from
simple to complex data structures.
- **Scalability**: As your needs grow, the system is designed to
scale seamlessly. You can add more ideas or adjust existing ones
with minimal effort.
- **Documentation**: Generate documentation and tech specs based on
your idea file.
- **Error Reduction**: By automating the code generation, we reduce
the chance of human error, ensuring more reliable and stable
software.
- **Modular**: Use ideas from any vendor or source out your own ideas.
- **Pluggable**: Reduce development time significantly by using
existing plugins or publish your own.
- **Closer to AI**: Idea files are perfect training data for AI
projects.
## Usage
This is an example idea schema.
```js
//my.idea
model Product {
name String
.text
.required("Name is required")
.detail .text
image String
.image
.image({ width 20 height 20 })
.image({ width 100 height 100 })
description String
.textarea
.none .text
currency String
.currency
.ceq(3 "Should be valid currency prefix")
.text .text
srp Float?
.number({ min 0.00 step 0.01 })
.price .price
price Float?
.number({ min 0.00 step 0.01 })
.price .price
}
```
> "Ideas are worthless without execution" - Many People
To transform an idea, you need to plugin a transformer like the
following example.
```js
//my.idea
plugin "idea-ts" {
ts true
output "./modules/[name]/types"
}
// ... your idea ...
// model Product ...
```
You can use other ideas, just import them like the following example.
```js
//my.idea
use "./another.idea"
// ... your idea ...
// model Product ...
```
To execute an idea, you just need to run the following command.
```bash
$ npx idea --i my.idea
```
Learn more:
- [Form an Idea](https://github.com/stackpress/idea/blob/main/docs/schema.md)
- [Transform an Idea](https://github.com/stackpress/idea/blob/main/docs/transform.md)
- [Plugins](https://github.com/stackpress/idea/blob/main/docs/plugins.md)