Roche is a Code Generator and Web Framework, makes web development super concise with Go, CleanArch

Overview

roche

It is still under development, so please do not use it. We plan to release v.1.0.0 in the summer.

roche is a web framework optimized for microservice architecture using go. It prioritizes schema-first and quick development over lightweight. It is currently in the development concept stage and should not be used in production.

It is inspired by Ruby on Rails, grapi and protoeasy. And roche relies on grapi heavily.

Roche is named after the Roche limit and Roche radius.

The Roche limit is the critical satellite orbital radius at which the satellite will break apart due to tidal destruction if the satellite is approximated to be a self-gravitating fluid, ignoring its material strength. The Roche radius is the size of the region where the mutual gravity of two celestial bodies orbiting around the central body exceeds the gravity of the central body.

In a microservices architecture, each service pulls together as if it has universal gravitation. However, if they are too close together (i.e., too dense), they will break, hence the name.

Getting Started

Framework

go get github.com/riita10069/roche

CLI tool

go get github.com/riita10069/roche/cmd/roche

Getting Started

roche init . To Initialize project like create-react-app

roche toml Generate roche.toml which is needed roche command.

roche g scaffold-service NAME Generate .proto and server

roche scaffold all NAME Generate CRUD template for NAME service

roche manifest app APPNAME Generate k8s manifest template, APPNAME is app name.

roche server Run api server

if you want to use roche server

Currently, this feature is not supported. Sorry.

func Run() error {
+     defer roche.Close()
+
      s := grapiserver.New(
+               rocheserver.WithDefaultLogger(),
-               grapiserver.WithDefaultLogger(),
                grapiserver.WithServers(
                // TODO: Add server implementations
  	),
        )
        return s.Serve()
}

core maintainers

Issues
  • Domain objects are not created properly from proto file

    Domain objects are not created properly from proto file

    Describe the bug Running roche scaffold domain NAME after editing a Proto file creates a domain object with fields that are not the edited ones.

    for example user.proto

    message User {
      string id = 1;
      string name = 2;
    }
    

    but

    domain/entity/user.go

    type User struct {
    	UserId string
    	XXX_NoUnkeyedLiteral
    	XXX_unrecognized
    	XXX_sizecache int32
    }
    

    Expected behavior domain/entity/user.go

    type User struct {
    	Id string
    	name string
    }
    
    bug 
    opened by hourglasshoro 5
  • Generate scaffold-service faild fail when there are no dependent libraries

    Generate scaffold-service faild fail when there are no dependent libraries

    Describe the bug When executing roche g scaffold-service NAME command, an error is displayed under the following conditions

    1. missing github.com/izumin5210/grapi/cmd/grapi-gen-scaffold-service
    2. missing github.com/golang/protobuf
    3. missing github.com/grpc-ecosystem/grpc-gateway
    4. missing github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway/[email protected]

    To Reproduce Steps to reproduce the behavior: execute roche g scaffold-service NAME

    Expected behavior After initialization, the dependent libraries are listed in go.mod and are ready for go mod download.

    opened by hourglasshoro 1
  • Adding Migration Tools

    Adding Migration Tools

    Is your feature request related to a problem? Please describe. I've only managed to generate the migration files, so I'll work on integrating the migration tools.

    Describe the solution you'd like Use the following tools https://github.com/golang-migrate/migrate

    I want to add docker-compose.yaml and makefile for the local environment.

    opened by hourglasshoro 0
  • To be implemented a FileSystem Abstraction System  github.com/spf13/afero

    To be implemented a FileSystem Abstraction System github.com/spf13/afero

    Currently, the default file system is used. It is not abstracted. As a Code Generator, it is a challenge to be able to test the entire system in an integrated manner.

    I want to implement the following good tools https://github.com/spf13/afero

    opened by riita10069 0
Owner
Riita
Tokyo Tech 18-5
Riita
Goal is a toolkit for high productivity web development in Go language in the spirit of Revel Framework that is built around the concept of code generation.

Goal Goal is a set of tools for high productivity web development in Go language. Goal, being mostly inspired by Revel Framework and its discussions,

null 88 Sep 27, 2021
go-zero is a web and rpc framework written in Go. It's born to ensure the stability of the busy sites with resilient design. Builtin goctl greatly improves the development productivity.

go-zero English | 简体中文 0. what is go-zero go-zero is a web and rpc framework that with lots of engineering practices builtin. It’s born to ensure the

好未来技术 17.5k May 15, 2022
based on go lang build WEB development framework for go lang beginners .

based on go lang build WEB development framework for go lang beginners .

zhenfan.yu 1 Oct 31, 2021
Flamingo Framework and Core Library. Flamingo is a go based framework for pluggable web projects. It is used to build scalable and maintainable (web)applications.

Flamingo Framework Flamingo is a web framework based on Go. It is designed to build pluggable and maintainable web projects. It is production ready, f

Flamingo 295 May 7, 2022
GoFrame is a modular, powerful, high-performance and enterprise-class application development framework of Golang.

GoFrame English | 简体中文 GoFrame is a modular, powerful, high-performance and enterprise-class application development framework of Golang. If you're a

GoFrame 7.4k May 20, 2022
Golanger Web Framework is a lightweight framework for writing web applications in Go.

/* Copyright 2013 Golanger.com. All rights reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except

golanger 299 Mar 3, 2022
The jin is a simplified version of the gin web framework that can help you quickly understand the core principles of a web framework.

jin About The jin is a simplified version of the gin web framework that can help you quickly understand the core principles of a web framework. If thi

null 8 Dec 27, 2021
Hexya business application development framework

Hexya Hexya is an open source ERP and a business application development framework written in Go. This repository houses the business application deve

Hexya 347 May 10, 2022
GoFarm is an Application Development Framework for especially Backend Developer with Golang

What is GoFarm GoFarm is an Application Development Framework for especially Backend Developer with Golang. Our goal is to develop easier, standardize

Alvin Leonardo 2 Dec 9, 2021
Rapid Web Development w/ Go

Buffalo A Go web development eco-system, designed to make your project easier. Buffalo helps you to generate a web project that already has everything

Buffalo - The Go Web Eco-System 6.7k May 14, 2022
Simple Janet web development platform in Go, à la PHP

Spinnerette Simple Janet web development platform in Go, à la PHP Building make This will handle pulling submodules, building Janet, and then building

Steven vanZyl 11 Jan 30, 2022
⚡ Rux is an simple and fast web framework. support middleware, compatible http.Handler interface. 简单且快速的 Go web 框架,支持中间件,兼容 http.Handler 接口

Rux Simple and fast web framework for build golang HTTP applications. NOTICE: v1.3.x is not fully compatible with v1.2.x version Fast route match, sup

Gookit 77 Apr 16, 2022
A powerful go web framework for highly scalable and resource efficient web application

webfr A powerful go web framework for highly scalable and resource efficient web application Installation: go get -u github.com/krishpranav/webfr Exa

Krisna Pranav 13 Nov 28, 2021
A powerful go web framework for highly scalable and resource efficient web application

A powerful go web framework for highly scalable and resource efficient web application

null 20 Feb 2, 2022
Boilerplate API template includes all the common packages and setup used for API development in this Company

Boilerplate API Boilerplate API template includes all the common packages and setup used for API development in this Company. Development Copy .env.ex

null 11 Feb 19, 2022
A web app built using Go Buffalo web framework

Welcome to Buffalo Thank you for choosing Buffalo for your web development needs. Database Setup It looks like you chose to set up your application us

Mike Okoth 0 Feb 7, 2022
laravel for golang,goal,fullstack framework,api framework

laravel for golang,goal,fullstack framework,api framework

桥边红药 17 Feb 24, 2022
Gerasimos (Makis) Maropoulos 22.3k May 16, 2022
hiboot is a high performance web and cli application framework with dependency injection support

Hiboot - web/cli application framework About Hiboot is a cloud native web and cli application framework written in Go. Hiboot is not trying to reinven

hidevops.io 169 May 10, 2022