# RANO Reliable And Nonstop Operations ## Prerequisites - [deno](https://docs.deno.com/runtime/) to manage node modules - [go-task](https://taskfile.dev/installation/) to run tasks ```bash go install github.com/go-task/task/v3/cmd/task@latest ``` - [golang-migrate](https://github.com/golang-migrate/migrate) for manual migrations. To install [follow instructions](https://github.com/golang-migrate/migrate/tree/master/cmd/migrate) ## Use RANO as your new project template to use "rano" as your new project template first install `gonew` ```bash go install golang.org/x/tools/cmd/gonew@latest ``` now run gonew in your new project’s parent directory with two arguments: first, the path to the template you wish to copy, and second, the module name of the project you are creating.\ For example: ```bash gonew gitserver.in/patialtech/rano example.com/mynewapp cd ./mynewapp ``` ## Project Structure - `cmd` dir contains quick commands or scripts we need in app - `config` app configurations depends .env.\ file\ for development we have .env.development file - `db` databse schema and migrations - `graph` is [gqlgen](https://gqlgen.com/) graph server - `mailer` to send emails and contains mail message templates - `pkg` folder is home for most of the business logic for your go app - `util` shared utilities - `web`single page web app built using [SvelteKit](https://svelte.dev/docs/kit/introduction) - `assets` keep images and icons used in app init - `lib` client lib - `public` files of frontend app - `routes` svelte app pages ## Go packages that are in use - [gqlgen](https://gqlgen.com/) - [mux](https://gitserver.in/patialtech/mux) - [ent. Go](https://entgo.io/docs/tutorial-setup) ORM - ## Web modules - [SvelteKit](https://svelte.dev/docs/kit/introduction) - [Tailwind](https://tailwindcss.com/docs/installation) - [daisyui](https://daisyui.com/docs/install/) - [urql](https://commerce.nearform.com/open-source/urql/docs/basics/svelte/) - [GraphQL Codegen](https://the-guild.dev/graphql/codegen) - [short unique identifiers from numbers](https://sqids.org/go)