Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@



## Local testing

To verify the generator before publishing:

1. Run `npm pack` in this repository to produce a tarball (for example `create-tinker-stack-0.2.2.tgz`).
2. In a temporary directory, execute `npx --yes create-tinker-stack@file:/absolute/path/to/create-tinker-stack-0.2.2.tgz`.
- Replace the path with the absolute path to the tarball from step 1 (npm `create` does not currently support `file:` specifiers).
40 changes: 16 additions & 24 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,41 +5,39 @@ This is a [npm Template](https://remix.run/docs/en/main/guides/templates) for a
It puts emphasis on rapid prototyping and a prototype-driven development
([Pixar Planning](https://www.youtube.com/watch?v=gbuWJ48T0bE&t=1294s)).

The prototypes are using a virtual and ephemeral backend, so changes can be made very quickly without any need for
data migrations on schema changes.

Stakeholders can test a fully working UI before a single line of backend code has been written.

Test UI concepts on day 1, iterate on them with the designer on day 2 and present them to the customer on day 3.

The API to the backend has usually had several major iterations before a backend developer even gets involved.

## What is included?

This monorepo contains the following packages/apps:

### Apps and Packages

- A prototype for the application, based on React Router SPA.
- A package that provides the domain types and enums.
- A documentation in Antora (AsciiDoc) format.
- A package that provides the domain types and enums that can be shared with the backend.
- A documentation in [Antora](https://antora.org/) (AsciiDoc) format.
- A package that provides synthetic data for the applications using
[Faker.js](https://fakerjs.dev/).
- A package that provides a mock API via service workers using [MSW](https://mswjs.io/).
- A component library that is shared by the main application and the prototype.
- A component library that is shared by the main application and the prototype (still empty).
- ESLint and TypeScript configurations that are shared throughout the monorepo.

### Features

- Monorepo based on ESM standards.
- Turborepo for building and running the monorepo.
- Pre-Configured CI Pipeline for Gitlab CI.
- Continuous deployment for the prototype and preview environments for merge-requests.
- Automatic deployment of the documentation to Gitlab Pages.
- [TypeScript](https://www.typescriptlang.org/) Monorepo based on ESM standards.
- Turborepo setup for building and running the monorepo.
- Code formatting with [Prettier](https://prettier.io/) and linting with
[ESLint](https://eslint.org/).

Each package/app is written in [TypeScript](https://www.typescriptlang.org/).

The prototype is automatically deployed to a preview server on a push to the `main` branch or a
tagged commit.

## Documentation

The developer documentation is located in the `docs` folder. It is automatically published via
Gitlab Pages.

The project documentation is written in [AsciiDoc](https://asciidoctor.org/) and is generated using
[Antora](https://antora.org/).

Expand All @@ -48,13 +46,7 @@ The project documentation is written in [AsciiDoc](https://asciidoctor.org/) and
To get started, run the following command:

```bash
npm create tinker-stack
npm create tinker-stack@latest
```

### Local testing

To verify the generator before publishing:

1. Run `npm pack` in this repository to produce a tarball (for example `create-tinker-stack-0.2.2.tgz`).
2. In a temporary directory, execute `npx --yes create-tinker-stack@file:/absolute/path/to/create-tinker-stack-0.2.2.tgz`.
- Replace the path with the absolute path to the tarball from step 1 (npm `create` does not currently support `file:` specifiers).
This will create a new project based on the Tinker Stack.