Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/kislerdm/diagramastext

Application to streamline diagram generation using plain English instructions instead of code
https://github.com/kislerdm/diagramastext

c4model chatgpt-api diagram go golang openai-api plantuml

Last synced: about 1 month ago
JSON representation

Application to streamline diagram generation using plain English instructions instead of code

Awesome Lists containing this project

README

        

# Diagram As Text

The tool to generate diagram based on textual description. Although it takes quite some effort to make a diagram, LLM is
here for the rescue! 🤖🦾

🚀🚀🚀 _Mission_: to enable anyone to explain complex system, or process in a simple way.

🚀🚀 _Objective_: to streamline knowledge sharing through diagrams.

🚀 _MVP_: plain english to [C4 container](http://c4model.com/) diagrams.

🔔 **Wanted**: founding contributors 🔔

The project is purely community driven - we need your support:

- Please give the project a _star_.
- Join us as _contributor_: we need software engineers, data scientists, analysts, designers.

If you are excited about the project, feel comfortable with our [ways of work](#ways-of-work), and want to contribute,
please [get in touch](#contacts) for further details.

Thank you! 🙏

## Contacts

- Submit
your [request](https://github.com/kislerdm/diagramastext/issues/new?assignee=kislerdm&labels=feedback&title=PLEASE%20DEFINE%20YOUR%20REQUEST&body=%23%23%20What%0APlease%20describe%20your%20proposal.%0A%0A%23%23%20Why%0APlease%20clarify%20the%20context.%0A%0A%23%23%20How%0A%0A(optional)%20Please%20sketch%20execution%20paths.)
- Join us on [Slack](https://join.slack.com/t/diagramastextdev/shared_invite/zt-1onedpbsz-ECNIfwjIj02xzBjWNGOllg)
- Write us: [email protected]
- Get in touch on [LinkedIn](https://www.linkedin.com/in/dkisler/)

Outlook

* [Ways of work](#ways-of-work)
+ [Manifesto](#manifesto)
+ [Process](#process)
+ [Bets/Panning/Commitment](#betspanningcommitment)
* [Tech details](#tech-details)
+ [Architecture](#architecture)
+ [Local setup](#local-setup)
* [License](#license)
+ [Codebase](#codebase)
+ [Images and diagrams](#images-and-diagrams)

## Ways of work

### Manifesto

- We are driven by the mission
- We respect one another and the community
- We deliver in lean iterations
- We work async with pairing programming sessions
- We share the work openly, see the [license details](#license)

### Process

- We follow [TDD](https://www.guru99.com/test-driven-development.html)
- We follow [RDD](https://tom.preston-werner.com/2010/08/23/readme-driven-development.html)
- We maintain flat modules structure whether possible
- We embrace clean architecture inspired by Alistair
Cockburn's [port-adapter approach](https://web.archive.org/web/20180822100852/http://alistair.cockburn.us/Hexagonal+architecture)
and Martin Fowler's [inversion of control](https://martinfowler.com/bliki/InversionOfControl.html), see a great
write-up [here](https://jmgarridopaz.github.io/content/hexagonalarchitecture.html#tc2-3) on the subjects matter
- We aim for simplicity with the least external dependencies
- We follow conventional _comments_ [guideline](https://conventionalcomments.org/) for code reviews
- We follow conventional _commits_ [guideline](https://www.conventionalcommits.org/en/v1.0.0/):
- `feat`: for features
- `fix`: for defect fix
- `chore`: for infra, ci, or docs adjustments; or refactoring
- We follow the [monorepo](https://monorepo.tools/) approach
- We follow [trunk-based development](https://trunkbaseddevelopment.com/) model
- We follow the release [guideline](https://keepachangelog.com/en/1.0.0/) and [semantic versioning](https://semver.org/)

### Bets/Panning/Commitment

- [Issues Board](https://github.com/users/kislerdm/projects/5/views/)

## Tech details

Tech stack

- Languages:
- Go 1.19
- TypeScript, ES2020:
- [vite](https://vitejs.dev)
- [vitest](https://vitest.dev/)
- Python 3.9
- Markup:
- Markdown
- HTML5
- CSS3
- CI:
- GitHub Actions
- Infra:
- GCP
- IAM
- SecretsManager
- CloudRun
- IdentityPlatform
- AWS (infra deprecated as of 2023-03)
- GitHub Pages
- [Neon](https://neon.tech/)
- Cloudflare
- namecheap
- godaddy
- Tools:
- gnuMake
- Docker
- terraform
- Logic:
- PlantUML
- OpenAI

### Architecture

#### C4 Context Level

![architecture-context](architecture_c4_l1.svg)

### Local setup

#### Requirements

- git
- gnuMake
- docker ~> 20.10

#### Steps

Follow the steps to provision local development environment.

1. Clone the repo

```commandline
git clone [email protected]:kislerdm/diagramastext.git
```

2. Export OpenAI access [token](https://platform.openai.com/docs/api-reference/authentication) as the environment
variable `OPENAI_API_KEY`:

```commandline
export OPENAI_API_KEY=##TOKEN##
```

3. Run to provision the local environment:

```commandline
make localenv
```

**Note**:
- The webclient will be available on http://localhost:9001
- The database webclient will be available on http://localhost:9081

4. Run to clean the local environment:

```commandline
make localenv-teardown
```

## License

### Codebase

The codebase is distributed under the [Apache 2.0 licence](LICENSE).

### Images and diagrams

Creative Commons Licence

This work
by
diagramastext.dev
is licensed under a
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License
.
Based on a work at [https://github.com/kislerdm/diagramastext](https://github.com/kislerdm/diagramastext).
Permissions beyond the scope of this license may be available
at diagramastext.dev.