gallery.badmanners.xyz/README.md

66 lines
1.9 KiB
Markdown

# gallery.badmanners.xyz
Static website built in Astro + Typescript + TailwindCSS.
## Requirements
- Node.js 20+
- (optional) rsync or LFTP, for remote deployment.
- (optional) LibreOffice, for the story export script.
## Development
### Setup
```bash
git clone https://git.badmanners.xyz/badmanners/gallery.badmanners.xyz
cd gallery.badmanners.xyz
npm install
```
### Local development
```bash
npm run dev # Start development server (quit with Ctrl-C)
npm run sync # Rebuild types from Astro config and src/content/ files
npm run prettier # Prettier formatting
```
### Configuration
The following optional environment variables can be set within a `.env` file:
| Name | Type | Description |
| ---------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------- |
| `PUBLISH_DRAFTS` | boolean | If set to true, includes drafts in the production build. Published drafts still won't be directly indexed by any other pages. |
### Export story for upload
Requires `libreoffice` to be installed and in your path.
```bash
npm run export-story -- -o ~/Documents/TO_UPLOAD slug-for-story-to-export
```
### Build and deploy to remote
```bash
npm run build
```
Then, if you're using rsync, after configuring the `gallerybm` host (or the name of your choosing) in `~/.ssh/config`, you can use a command like:
```bash
rsync --delete-after -acP dist/ gallerybm:/home/public
```
Or if you prefer LFTP, create a `.env` file at the root of the project:
```env
DEPLOY_LFTP_HOST=https://example-webdav-server.com
DEPLOY_LFTP_USER=example_user
DEPLOY_LFTP_PASSWORD=sup3r_s3cr3t_password
DEPLOY_LFTP_TARGETFOLDER=sites/gallery.badmanners.xyz/
```
Then run `npm run deploy-lftp`.