Skip to main content

Roadmap

Critical features

Critical and necessary features that are crucial for the project to be used internally.

Parser

Parse .anv files to .anvp files(anvil processed files). Theses files will be the resolved value of the .anv file, with all the standard rules that we apply to the schemas.

Generator gRPC

Generates a proto file for your project.

It replaces the whole protofile, so you can't make changes to it directly.

Generator Golang Project

Generates a Golang project.

Structure:

| internal/
| -- models/
| -- -- implementations/
| -- -- -- example.go
| -- -- example.go
| -- repositories/
| -- -- implementations/
| -- -- -- {domain}/
| -- -- -- -- {domain}.go
| -- -- -- -- {method}.go
| -- -- {domain}.go
| -- usecases/
| -- -- implementations/
| -- -- -- {domain}/
| -- -- -- -- {domain}.go
| -- -- -- -- {method}.go
| -- -- {domain}.go

The models represents data pof your domain, it includes database tables and events. They are 100% controlled by the generator.

The repositories are the way that you interact with your database, it uses the context to get the transaction / db client. The function name, input and output are controlled by the generator, fell free to change everything else.

The usecases is were your business logic stays. The function name, input and output are controlled by the generator, fell free to change everything else.

Generator Golang gRPC delivery

Generates a Golang gRPC delivery.

The delivery is 100% controlled by the generator, so you don't have to write anything, it handles everything for you.

It relies on the usecase pattern created by the Generator Golang Project.

Structure:

| internal/
| -- delivery/
| -- -- {delivery method, like grpc or http}/
| -- -- -- {domain}/
| -- -- -- -- {domain}.go
| -- -- -- -- {route}.go

Generator Golang Pkg gRPC client

Generates a package to make requests to the gRPC API.

It puts all the code in a single file.

Structure:

| pkg/
| -- {domain}-api.go

Generator Atlas

Generate Atlas.io schema for postgres

Extras

Very helpful and necessary features, but that aren't critical for the project internal operation.

Way to track changes

A git-like way to save changes on the functions and know what has changed.

Generator changelog with SemVer

Generates a CHANGELOG.md with the changes in the .anv files

Add a more robust authentication

Implement all authentication forms supported by OpenApi and more, like AWS Credentials / IAM.

Allow the schema to get properties from the authentication, like the UserId.

Online platform - v1

  • A way to facilitate how you monitor and visualize your system
  • Has a list of all your projects
  • You can see which project depends on each other
  • If we already have CHANGELOGs implemented, see which version of the project it's using

Three Shaking

Remove unused things from relationships.

Currently, If something has a relationship, we import THE WHOLE FILE and not only the used things. We must find a way to three shake it and generate a smaller file.

CLI Warnings

  • Add warning like "Type Foo is unused, maybe you should remove it."