![ZAPP](https://storage.googleapis.com/zapp-bucket/img/ZAPP-logo.jpeg)
# Zapp
Rust Serverless Framework
The Zapp project was launched with the goal of reducing software development, operation and maintenance costs.
Build Serverless Apps faster.
Powered by Rust, Aysnc-GraphQL, SeaORM, Axum, and Google Cloud.
- Focus on business logic in serverless environment
- Maximize development efficiency with CI / CD standard schema-driven Scaffold
- Achieve global scale with lower management costs
## Dependency
- [Google SDK](https://cloud.google.com/sdk/docs)
- [Docker](https://www.docker.com/)
- [Github CLI](https://cli.github.com/)
- [SeaORM](https://www.sea-ql.org/SeaORM/)
- [Axum](https://github.com/tokio-rs/axum)
- [Async GraphQL](https://github.com/async-graphql/async-graphql)
## Cloud Infrastructure
- [Google Cloud Run](https://cloud.google.com/run)
- [Google Cloud SQL](https://cloud.google.com/sql)
- [Google Cloud IAM](https://cloud.google.com/iam)
- [Google Cloud Container Registry](https://cloud.google.com/container-registry)
- [Google Cloud VPC](https://cloud.google.com/vpc)
- [Google Cloud Nat](https://cloud.google.com/nat)
- [Github Actions](https://github.com/features/actions)
## Document
- [Document](https://zapp.epics.dev/)
## Installation
```bash
$ cargo install zapp
```
```bash
$ zapp --help
zapp 0.5.6
EpicsDAO
Rust Serverless Framework
USAGE:
zapp
OPTIONS:
-h, --help Print help information
-V, --version Print version information
SUBCOMMANDS:
compute
db
docker
g
gcloud
gh
help Print this message or the help of the given subcommand(s)
iam
init
new
run
sql
```
## QuickStart
Create your application with zapp CLI.
```bash
$ zapp new YOURAPP
███████╗ █████╗ ██████╗ ██████╗
╚══███╔╝██╔══██╗██╔══██╗██╔══██╗
███╔╝ ███████║██████╔╝██████╔╝
███╔╝ ██╔══██║██╔═══╝ ██╔═══╝
███████╗██║ ██║██║ ██║
╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝
💃 💃 💃 💃 💃 💃 💃 💃 💃 💃 💃 💃
Rust Serverless Framework
$ cd YOURAPP
$ zapp docker psql
$ cargo run
Go to : http://localhost:3000/api/graphql
```
Create Docker PostgreSQL
```bash
$ zapp docker psql
✅ PostgreSQL Container Created: 4619cfc047f3cad6c9db8d255aff841fbfe34bbef0e2661fa3a02db5d5ec5d91
```
Run GraphQL Local Server
```bash
$ cargo run
```
Now go to
[http://localhost:3000/api/graphql](http://localhost:3000/api/graphql)
## GraphQL Mutation/Query Scaffold
Create Model
```bash
$ zapp g model user
✅ Successfully created migration file: migration/src/m20220613_102512_create_user_table.rs
✅ Successfully added route to `migration/src/lib.rs`
✅ Successfully created entity file: entity/src/user.rs
✅ Successfully created mutation file: src/graphql/mutation/user.rs
✅ Successfully created query file: src/graphql/query/user.rs
✅ Successfully added route to `entity/src/lib.rs`
✅ Successfully added mutation route: src/graphql/mutation/mod.rs
✅ Successfully added mutation route: src/graphql/query/mod.rs
```
- [Document](https://zapp.epics.dev/)
## Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/EpicsDao/zapp. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
## License
The gem is available as open source under the terms of the [Apache-2.0 License](https://www.apache.org/licenses/LICENSE-2.0).
## Code of Conduct
Everyone interacting in the EpicsDAO project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/EpicsDao/zapp/blob/master/CODE_OF_CONDUCT.md).