Skip to content

Latest commit

 

History

History
145 lines (117 loc) · 5.1 KB

README.md

File metadata and controls

145 lines (117 loc) · 5.1 KB

💡 Idea



Form an Idea   •   Transform an Idea   •   Code Extension   •   Plugins

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

$ npm i -D @ossph/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.
  • 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.

//my.idea
model Product @label("Product" "Products") @suggested("[name]") @icon("gift") {
  name        String   @label("Name") 
                       @field.text
                       @is.required("Name is required")
                       @list.detail @view.text

  image       String   @label("Image") 
                       @field.image
                       @list.image({ width 20 height 20 }) 
                       @view.image({ width 100 height 100 })

  description String   @label("Description") 
                       @field.textarea
                       @list.none @view.text
  
  currency    String   @label("Currency")
                       @filterable @default("USD")
                       @field.currency
                       @is.ceq(3 "Should be valid currency prefix")
                       @list.text @view.text
  
  srp         Float?   @label("SRP")
                       @min(0.00) @step(0.01)
                       @field.number({ min 0.00 step 0.01 })
                       @list.price @view.price
  
  price       Float?   @label("Offer Price")
                       @min(0.00) @step(0.01)
                       @field.number({ min 0.00 step 0.01 })
                       @list.price @view.price
}

"Ideas are worthless without execution" - Many People

To transform an idea, you need to plugin a transformer like the following example.

//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.

//my.idea
use "./another.idea"
// ... your idea ...
// model Product ...

To execute an idea, you just need to run the following command.

$ npx idea -i my.idea

Learn more: