Static site repo
https://pfy.ch
|
|
||
|---|---|---|
| .gitea/workflows | ||
| infrastructure | ||
| packages | ||
| scripts | ||
| .eslintignore | ||
| .gitignore | ||
| Dockerfile | ||
| package.json | ||
| pnpm-lock.yaml | ||
| pnpm-workspace.yaml | ||
| README.md | ||
| REWRITE_CHECKLIST.md | ||
| tsconfig.json | ||
Static Site
This repo contains the code to build & deploy my static site hosted at https://pfy.ch, as well as all the content/scripts/styles to go along with it.
Project Layout
This project is a monorepo consisting of the following sub packages:
infrastructure- All CDK definitionspacakges/api- Lambda APIpackages/site- Static Site generator & contentpackages/shared- Type definitions
├── infrastructure
│ ├── api
│ └── site
├── packages
│ ├── api
│ │ ├── lib # Utilities
│ │ └── src # Root handlers
│ │ └── services # Feature based endpoints
│ ├── shared # Type definitions used by site & api
│ └── site
│ ├── assets
│ │ ├── custom # Images, userscripts, icons, etc
│ │ ├── scripts # Typescript (ts,tsx) compiled at build time
│ │ └── styles # SCSS compiled at build time
│ ├── build
│ │ ├── steps # Individual build steps
│ │ ├── templates # Handlebars templates
│ │ └── utils # Utility functions used by steps
│ ├── pages # Custom html pages that are not generated
│ └── posts # Markdown content
└── scripts # Helper scripts for deploying
Using this package
If you want to fork this package for your own site, it's safe to empty the directories listed in packages/site/build/config.ts. This file outlines where the build scripts should look for content.
pnpm run site:dev # Run a copy of the site with hot-reloading on :8080
pnpm run site:build # Compile the site to .dist/
pnpm run site:deploy # Deploy the site using the aws profile "dev" (Must build beforehand)
pnpm run api:dev # Run a copy of the api locally with hot-reloading on :3000
pnpm run api:deploy # Deploy the api using the aws profile "dev"