1.1.8 ⢠Published 5 years ago
desolid-admin v1.1.8
š¤ Desolid: Single file BaaS
Open source, single file, self hosted, Backend as a service.
Documentation: https://desolid.netlify.app/
Blog: https://dev.to/desolid
Features
- GraphQL API: CRUDs
- Authentication & Authorization: inline definition
- File storage: Local and S3 support
- Database agnostic: SQLite, MariaDB, PostgreSQL, MS SQL Server
Quick start
Let's create an api for a blog service:
- Install NodeJS
- Create a desolid schema file: - schema.graphql- extend enum UserGroup { Editor Author } extend type User @model @authorization( CREATE: [Admin, Editor] READ: [Admin, "$user.id == {{id}}"] UPDATE: [Admin, "$user.id == {{id}}"] DELETE: [Admin] # ) { avatar: File @upload(accept: ["image/jpeg"], size: { max: "5", min: "0.1" }) } """ This is a description of a Post """ type Post @model @authorization( READ: [Admin, Editor, "{{published}} || $user.id == {{author.id}}"] CREATE: [Admin, Editor, "$user.group == 'Author' && !$input.published"] UPDATE: [Admin, Editor, "$user.id == {{author.id}} && !$input.published"] DELETE: [Admin, Editor, "!{{published}} && $user.id == {{author.id}}"] # ) { id: ID! createdAt: DateTime! updatedAt: DateTime! author: User! title: String! content: String! published: Boolean! categories: [Category] } """ This is a description of a Category """ type Category @model @authorization( CREATE: [Admin, Editor] UPDATE: [Admin, Editor] DELETE: [Admin, Editor] # ) { id: ID! createdAt: DateTime! updatedAt: DateTime! name: String! posts: [Post] }
- Run this command on your terminal - npx desolid- Compiles the schema and creates CRUDs
- Creates and uses by default a SQLite database on the root ./database.sqlite
- Stores files under ./uploaddirectory
- Logs errors and warnings on ./desolid.logfile
- Must output something like this:
 
____                         _   _       _
|  _ \    ___   ___    ___   | | (_)   __| |
| | | |  / _ \ / __|  / _ \  | | | |  / _` |
| |_| | |  __/ \__ \ | (_) | | | | | | (_| |
|____/   \___| |___/  \___/  |_| |_|  \__,_|
š¤ Desolid: Single file self hosted backend as a service
š„ v0.2.11 running in "win32" on "./home/user/app"
[2020-05-20 10:38:57]  INFO  Compiling Schema ...
[2020-05-20 10:38:57]  WARN  Authentication Secret value didn't set into configuration file. the genrated JWT tokens will expire on every restart.
[2020-05-20 10:38:57]  INFO  Connecting to database ...
[2020-05-20 10:38:57]  INFO  Connected to "sqlite://./databse.sqlite"
[2020-05-20 10:38:57]  INFO  Starting server ...
[2020-05-20 10:38:57]  INFO  Server is running on http://localhost:3000
[2020-05-20 10:38:57]  INFO  š in 488ms- Open http://localhost:3000/ on your browser.
Acknowledgement
This project is based On these cool stuffs:
- TypeScript: https://github.com/Microsoft/TypeScript
- Sequlize: https://github.com/sequelize/sequelize
- Nexus Schema: https://github.com/graphql-nexus/schema
- GraphQL Yoga: https://github.com/prisma-labs/graphql-yoga
- FlyDrive: https://github.com/Slynova-Org/flydrive