2023-12-08 19:27:00 +01:00
|
|
|
## About
|
|
|
|
|
2024-05-04 19:48:58 +02:00
|
|
|
Twenty is a standalone web application with a practical
|
|
|
|
purpose. But it's also a place where I can experiment with
|
|
|
|
a different stack for the development of [web] applications
|
|
|
|
in Ruby. See **Design** for more info.
|
2023-12-08 19:27:00 +01:00
|
|
|
|
2024-01-14 22:48:27 +01:00
|
|
|
## Design
|
|
|
|
|
2024-08-01 03:48:00 +02:00
|
|
|
* The [server/](server/) is powered by Ruby
|
|
|
|
- [rack](https://github.com/rack/rack#readmne),
|
|
|
|
[graphql-ruby](https://github.com/rmosolgo/graphql-ruby#readme),
|
|
|
|
and [puma](https://github.com/puma/puma#readme)
|
|
|
|
- The server provides the /graphql endpoint for client <-> server communication
|
|
|
|
- The server serves static files (HTML, JS, CSS, ...) via [puma (Ruby HTTP server)](https://github.com/puma/puma#readme)
|
|
|
|
- The /graphql endpoint enters the [graphql-ruby](https://github.com/rmosolgo/graphql-ruby#readme) stack
|
|
|
|
* The [client/](client/) is powered by NodeJS
|
|
|
|
- [webpack](https://webpack.js.org/),
|
|
|
|
[typescript](https://www.typescriptlang.org/),
|
|
|
|
[react](https://react.dev/),
|
|
|
|
and [react-router](https://reactrouter.com/en/main)
|
|
|
|
- The client produces a build/ directory
|
|
|
|
- The client provides static files (HTML, JS, CSS, ...)
|
|
|
|
- The client provides routes via [react-router](https://reactrouter.com/en/main)
|
|
|
|
- The client communicates with the server via [@apollo/client (GraphQL client)](https://www.apollographql.com/docs/react/)
|
|
|
|
* The [cli](cli/) is powered by Ruby
|
2024-04-26 19:08:38 +02:00
|
|
|
- Start / stop web server
|
|
|
|
- Run database migrations
|
|
|
|
- Run developer console
|
2024-08-01 03:48:00 +02:00
|
|
|
- Available as a RubyGem executable
|
2024-01-14 22:48:27 +01:00
|
|
|
* Each component (server, client, cli) are separate packages
|
2024-04-26 19:08:38 +02:00
|
|
|
in a monorepo
|
|
|
|
* Easy to distribute as a RubyGem
|
2024-01-14 22:48:27 +01:00
|
|
|
|
2023-12-08 19:27:00 +01:00
|
|
|
## Usage
|
|
|
|
|
2024-03-11 18:45:11 +01:00
|
|
|
**CLI**
|
2024-02-09 23:56:20 +01:00
|
|
|
|
2024-03-11 18:45:11 +01:00
|
|
|
Usage: twenty COMMAND [OPTIONS]
|
2023-12-08 19:27:00 +01:00
|
|
|
|
|
|
|
Commands:
|
2024-04-26 19:08:38 +02:00
|
|
|
up Start the twenty web server
|
|
|
|
down Stop the twenty web server
|
|
|
|
connect Connect a project to twenty
|
|
|
|
disconnect Disconnect a project from twenty
|
|
|
|
migrate Migrate the database
|
|
|
|
console Start the twenty developer console
|
2023-12-08 19:27:00 +01:00
|
|
|
|
|
|
|
## Install
|
|
|
|
|
2024-04-26 19:08:38 +02:00
|
|
|
Twenty is distributed as a RubyGem:
|
2024-03-12 09:10:02 +01:00
|
|
|
|
2024-04-25 06:46:13 +02:00
|
|
|
$ gem install twenty
|
2023-12-08 19:27:00 +01:00
|
|
|
|
2024-03-12 09:10:02 +01:00
|
|
|
## Sources
|
|
|
|
|
|
|
|
* [GitHub](https://github.com/0x1eef/twenty)
|
|
|
|
* [GitLab](https://gitlab.com/0x1eef/twenty)
|
|
|
|
|
2023-12-08 19:27:00 +01:00
|
|
|
## License
|
|
|
|
|
|
|
|
[BSD Zero Clause](https://choosealicense.com/licenses/0bsd/).
|
|
|
|
<br>
|
|
|
|
See [LICENSE](./LICENSE)
|