40 lines
1.9 KiB
Markdown
40 lines
1.9 KiB
Markdown
# Masonry
|
|
|
|
Masonry is a library that provides and implements all the basics necessary to build robust, production ready web applications.
|
|
|
|
## Features
|
|
|
|
- [ ] Authentication via SpartanAuth
|
|
- [ ] Authorization via SpiceDB
|
|
- [x] Database - your pick of Turso, LibSQL, SQLite, MySQL, Postgres
|
|
- [ ] Payments via Stripe with flexible product configurations and pricing
|
|
- [ ] Semantic Search for RAG or application navigation
|
|
- [ ] System Email templates and SMTP integration
|
|
- [ ] Cross-platform, installable apps for mobile, desktop and web
|
|
- [x] Predetermined frontend frameworks and adjustable styles
|
|
- [ ] Built in notification framework
|
|
- [ ] Customizable calls to webhooks for any event
|
|
- [ ] Integrate with an object storage system like S3
|
|
- [ ]
|
|
- [ ]
|
|
|
|
## DSL Features
|
|
|
|
- [x] Indicate values that are based on Environment variables
|
|
- [x] On Entities, we should indicate what CRUD functions should be implemented instead of implementing all, or forcing the user to define each in the Endpoints section
|
|
- [ ] Yaml file to include custom template functions (Otto for JS)
|
|
- [ ] Support multi-file outputs based on a directory+manifest file.
|
|
- [ ] Support multi-step generation. e.g. gen the proto file, use `masonry g` to get the basic server set up, gen `main.go` from a template, then update gorm overrides, etc.
|
|
- [ ] Support field transformations on Entities using a template for `BeforeToORM` in `service.pb.gorm.override.go`
|
|
|
|
|
|
## Design Philosophy (changeable...)
|
|
|
|
The goal of this project is to make building software for web and mobile applications as fast as possible while maintaining
|
|
the highest level of quality and maintainability as possible.
|
|
|
|
* The more that can be derived from configuration the better.
|
|
* Pre-built functionality should be isolated into libraries and modules with *simple* interfaces to minimize manual coding.
|
|
* Composable applications minimizes dependencies and maximizes extensibility.
|
|
*
|