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...
$ npm i -D @ossph/idea
- Describe your idea in a flexible schema format
my.idea
. - Install plugins to transform your idea to code
make-database
. - Generate your platform using the Idea commandline
$ idea
.
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.
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: