kios-webapp/README.md
2024-04-01 16:25:55 +02:00

77 lines
2.1 KiB
Markdown

## Quickstart
```
docker-compose -f docker-compose.yml up
```
## About
This project was bootstrapped with a [turbopress](https://github.com/turbopress/turbopress)
### Useful docs
- [Astro docs: Integrating with PayloadCMS](https://docs.astro.build/en/guides/cms/payload/)
- [Astro docs: Deployment and SSR adapters](https://docs.astro.build/en/guides/deploy/)
- [Astro docs: On demand rendering adapters](https://docs.astro.build/en/guides/server-side-rendering/)
## Why Astro?
Astro allow you to use your favorite UI components and libraries. Mix and match React, Preact, Svelte, Vue, SolidJS, AlpineJS, and Lit to build your own website.
## Why PayloadCMS?
I need a headless CMS that is easy to use with TypeScript support. PayloadCMS work really well in this use case.
## What's inside?
This Turborepo includes the following packages/apps:
### Apps and Packages
- `api`: a [Payload](https://payloadcms.com/) app
- `web`: an [Astro](https://astro.build/) app
- `eslint-config-custom`: `eslint` configurations (includes `eslint-config-prettier` and `eslint-configg-turbo`)
Each package/app is 100% [TypeScript](https://www.typescriptlang.org/).
### Utilities
This Turborepo has some additional tools already setup for you:
- [TypeScript](https://www.typescriptlang.org/) for static type checking
- [TailwindCSS](https://tailwindcss.com/) for CSS utility
- [ESLint](https://eslint.org/) for code linting
- [Prettier](https://prettier.io) for code formatting
## Prerequisites
Install `nodejs`, `pnpm` and `turborepo` on your local machine
## Develop
Create a `.env` file in the root folder, you can use the `.env.example` file as an example
I use `pnpm` for this project.
Run the following command:
```sh
pnpm installl
pnpm dev
```
By default, the payloadCMS will run on port 3000, and Astro will be served on port 3001.
## Build & Serve (NodeJs)
```sh
pnpm build
pnpm serve
```
## TypeScript support
To fully utilize the type safe features, manually generate the types for PayloadCMS by runng `pnpm generate:types`
Then, you can import the types easily as simple as
```ts
import type { User } from "@turbopress/api/types";
```