|
1 | 1 | # STRUDEL Kit |
2 | 2 |
|
3 | | -STRUDEL Kit is a React and TypeScript-based starter kit for building scientific UIs based on the STRUDEL Design System and Task Flows. Visit [strudel.science](https://strudel.science) for more information about the STRUDEL project. |
4 | | - |
5 | | -This library provides a suite of templates to implement UIs for various different task flows common to the scientific domain. The app is intended to be used as a starting point for building out a modern single-page web app for scientific-type UIs. |
| 3 | +STRUDEL Kit is a set of modern fullstack templates and components for building scientific apps based on the STRUDEL Design System and Task Flows. Visit [strudel.science](https://strudel.science) for more information about the STRUDEL project. |
6 | 4 |
|
7 | 5 | [Browse the full docs](https://strudel.science/strudel-kit/docs/) |
8 | 6 |
|
9 | | -## What's included? |
10 | | -- [**React**](https://react.dev/): A component-based JavaScript library for building UIs. |
| 7 | +## Technology Stack |
| 8 | +**Backend** |
| 9 | +- [**Python**](https://www.python.org/) Programming language popular for scientific and data analysis |
| 10 | +- [**FastApi**](https://fastapi.tiangolo.com/) Backend framework for building REST APIs |
| 11 | +- [**SQLAlchemy**](https://www.sqlalchemy.org/) SQL toolkit and ORM |
| 12 | +- [**Alembic**](https://alembic.sqlalchemy.org/en/latest/) Database migration tool |
| 13 | +- [**uv**](https://docs.astral.sh/uv/) Python package and project manager |
| 14 | + |
| 15 | +**Frontend** |
11 | 16 | - [**TypeScript**](https://www.typescriptlang.org/): A typed superset of JavaScript that compiles to plain JavaScript. |
| 17 | +- [**React**](https://react.dev/): A component-based JavaScript library for building UIs. |
12 | 18 | - [**Vite**](https://vite.dev/): A fast, opinionated frontend build tool. |
13 | 19 | - [**Material UI**](https://mui.com/material-ui/getting-started/): Open-source React component library based on Google's Material Design. |
14 | 20 | - [**TanStack Router**](https://tanstack.com/router/latest): A fully type-safe router with built-in data fetching, first-class search-param APIs, and more. |
15 | 21 | - [**ESLint**](https://eslint.org/): The pluggable linting utility for JavaScript and JSX. |
16 | 22 | - [**Prettier**](https://prettier.io/): An opinionated code formatter. |
17 | | -- [**Husky**](https://typicode.github.io/husky/): Runs a pre-commit hook to lint and style staged code. |
18 | 23 | - [**Cypress**](https://www.cypress.io/): End-to-end tests for built-in templates. |
19 | | -- [**Task Flow Templates**](https://strudel.science/design-system/task-flows/overview/): Six template flows based on common patterns. |
20 | | - |
21 | | - |
22 | 24 |
|
23 | 25 |  |
24 | 26 |
|
25 | | -## Getting Started |
| 27 | +## Getting started with a template |
26 | 28 |
|
27 | | -### Option 1: Use this template |
| 29 | +This library provides a suite of templates to implement UIs for various different task flows common to the scientific domain. Each template lives in the `templates` directory and is built on top of the main `base-app` template. |
28 | 30 |
|
29 | | -Click the green "Use this template" button on the [strudel-kit GitHub page](https://github.com/strudel-science/strudel-kit). Create your own repository from the strudel-kit code and give it a name. |
| 31 | +### Requirements |
| 32 | +- [Node](https://nodejs.org/en/download) |
| 33 | +- [degit](https://github.com/Rich-Harris/degit) |
| 34 | +- [Docker](https://www.docker.com/get-started/) |
30 | 35 |
|
31 | | -Clone the strudel-kit repository from your new repo. |
| 36 | +### Copy a template |
32 | 37 |
|
33 | | -### Option 2: degit |
| 38 | +Open a terminal and navigate to the directory where you want your app to live. |
| 39 | + |
| 40 | +Copy your template of choice (e.g. `explore-data`): |
34 | 41 |
|
35 | | -Generate a new project from strudel-kit using [degit](https://github.com/Rich-Harris/degit): |
36 | 42 | ``` |
37 | | -npx degit strudel-science/strudel-kit my-app |
| 43 | +degit strudel-science/strudel-kit/templates/explore-data my-app |
38 | 44 | ``` |
39 | 45 |
|
40 | | -### Option 3: Fork this repo |
41 | | - |
42 | | -Especially if you want to contribute back, you can click the Fork button to create a fork of this repo from the [strudel-kit GitHub page](https://github.com/strudel-science/strudel-kit). |
43 | | - |
44 | | -Clone the strudel-kit repository from your new fork. |
45 | | - |
46 | | -### Install and Start |
47 | | - |
48 | | -Install the dependencies: |
| 46 | +You can also copy sections of a fullstack template if you don't need the whole backend and frontend: |
49 | 47 |
|
50 | 48 | ``` |
51 | | -npm install |
| 49 | +degit strudel-science/strudel-kit/templates/explore-data/frontend my-frontend-app |
52 | 50 | ``` |
53 | 51 |
|
54 | | -Start up the app: |
| 52 | +You may even want to combine or add a specific task flow to an existing frontend: |
55 | 53 |
|
56 | 54 | ``` |
57 | | -npm start |
| 55 | +degit strudel-science/strudel-kit/templates/explore-data/frontend/src/pages/compare-data my-compare-data-page |
58 | 56 | ``` |
59 | 57 |
|
60 | | -Open [http://localhost:5175](http://localhost:5175) to view the app in the browser. |
| 58 | +## Getting started with the React components |
61 | 59 |
|
62 | | -Begin modifying the templates in `src/pages`. |
| 60 | +[./packages/react-components/README.md](./packages/react-components/README.md) |
63 | 61 |
|
64 | 62 | ## Contributions |
65 | 63 |
|
|
0 commit comments