# 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`.