<commit_before># go-nano

A framework for writting web services in Go.

## Design

### Rational

Developers should focus on writing the business logic.

### Highlight

- Transport agnostic (TCP, HTTP, AMQP ...)
- Protocol agnostic (JSON-RPC, ProtocolBuffer, ...)
- Plain Old Go Struct for business logic
- Handle boilerplate for setting up a service
- Convention over configuration
- RPC.

### Components

                                        +------------ +     +---------+
                                        | Middlewares | <-> | Handler |
                                        +------------ +     +---------+
    +-----------+     +----------+
    | Transport | <-> | Protocol | <->
    +-----------+     +----------+
                                        +------------ +     +---------+
                                        | Extensions  | <-> | Client  |
                                        +------------ +     +---------+


## Features

Transports:

- [X] AMQP Transport (Minimal)
- [ ] HTTP2 Transport
- [X] HTTP Transport

Protocols:

- [X] JSON-RPC Protocol (Minimal)
- [ ] ProtocolBuffer
- [X] Lymph Protocol (https://github.com/mouadino/go-lymph)

Client:

- [X] Client
- [ ] Command line
- [X] Circuit Breaker
- [X] Timeout
- [X] Retry
- [ ] Remote errors
- [X] Async

Server:

- [ ] Multiple services namespaces (a la net/rpc)
- [X] Tracing middleware
- [ ] Rate limit middleware
- [ ] Registration

Misc:

- [ ] Configuration
- [ ] Logging
- [ ] Context
- [ ] Metrics
- [X] Discovery
- [ ] Testing tools
- [ ] Protocol/Transport negotiation
- [ ] Notification (a.k.a One way message)
- [ ] Add to travis/circleCI ...
- [ ] GoDoc
- [ ] More complete example (e.g. user service)

## Examples

Please check [examples] folder

[examples]: https://github.com/mouadino/go-nano/tree/master/examples<commit_msg>Mark namespace + registration as done<commit_after># go-nano

A framework for writting web services in Go.

## Design

### Rational

Developers should focus on writing the business logic.

### Highlight

- Transport agnostic (TCP, HTTP, AMQP ...)
- Protocol agnostic (JSON-RPC, ProtocolBuffer, ...)
- Plain Old Go Struct for business logic
- Handle boilerplate for setting up a service
- Convention over configuration
- RPC.

### Components

                                        +------------ +     +---------+
                                        | Middlewares | <-> | Handler |
                                        +------------ +     +---------+
    +-----------+     +----------+
    | Transport | <-> | Protocol | <->
    +-----------+     +----------+
                                        +------------ +     +---------+
                                        | Extensions  | <-> | Client  |
                                        +------------ +     +---------+


## Features

Transports:

- [X] AMQP Transport (Minimal)
- [ ] HTTP2 Transport
- [X] HTTP Transport

Protocols:

- [X] JSON-RPC Protocol (Minimal)
- [ ] ProtocolBuffer
- [X] Lymph Protocol (https://github.com/mouadino/go-lymph)

Client:

- [X] Client
- [ ] Command line
- [X] Circuit Breaker
- [X] Timeout
- [X] Retry
- [ ] Remote errors
- [X] Async

Server:

- [X] Multiple services namespaces (a la net/rpc)
- [X] Tracing middleware
- [ ] Rate limit middleware
- [X] Registration

Misc:

- [ ] Configuration
- [ ] Logging
- [ ] Context
- [ ] Metrics
- [X] Discovery
- [ ] Testing tools
- [ ] Protocol/Transport negotiation
- [ ] Notification (a.k.a One way message)
- [ ] Add to travis/circleCI ...
- [ ] GoDoc
- [ ] More complete example (e.g. user service)

## Examples

Please check [examples] folder

[examples]: https://github.com/mouadino/go-nano/tree/master/examples
{'fraction_non_alphanumeric': 0.19074675324675325, 'fraction_numerical': 0.0005411255411255411, 'mean_word_length': 1.4613848202396804, 'pattern_counts': {'":': 0, '<': 11, '<?xml version=': 0, '>': 11, 'https://': 4, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 18, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6732133', 'n_tokens_mistral': 1084, 'n_tokens_neox': 1021, 'n_words': 283}