blob: 7b90ad5829e52187aadfa9845805a03cc71d005a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
# jayrup.me
Minimal personal website — a terminal.css landing page, CV, projects, and dissertation. Built with Quarto, served via nginx.
## Repo is self-contained
All source files live in the repo. No symlinks or external paths. `assets/` holds static files that were originally pulled from elsewhere (dissertation PDF, public SSH key).
## Requirements
- **quarto** v1.6+ — renders `.qmd` to HTML + plain text
- **rsync** — deploys `public/` to the VPS
Optional (local preview via Docker):
- **docker** + **compose** — spins up nginx:alpine to serve `public/` on port 8080
- Requires an external compose network `nginx_default` (`docker network create nginx_default`)
- Otherwise edit `compose.yml` to remove the network dependency
## Quick start
```sh
# Build the site
./deploy.sh
# Or step by step:
quarto render --to html
find . -name '*.qmd' -not -path './.*' -not -path './public/*' | while read f; do
d=$(dirname "${f#./}")
b=$(basename "$f" .qmd)
quarto render "$f" --to plain --output "${b}.txt" --output-dir "public/$d"
done
# Local preview (Docker)
docker compose up -d
# → http://localhost:8080
```
## Deploy
```sh
./deploy.sh
```
This builds `public/` and rsyncs it to the VPS. Only needs SSH access to `jayrup.me`.
## Git remotes
| Remote | URL | Purpose |
|---|---|---|
| `origin` | `git@github.com:CaptainJack2491/website.git` | GitHub upstream |
| `meru` | `jayrup@100.68.59.43:~/projects/homepage.git` | Agent sync hub |
Push to `meru` to share changes between agents; push to `origin` before or after deploying.
```sh
git push meru main # sync to bare repo
git push origin main # deploy and publish
```
## Adding content
- **New page** — create a `.qmd` file anywhere. It auto-renders.
- **CV** — update `cv/index.typ` and rebuild the PDF. The rendered PDF + txt go in `cv/`.
- **Assets** — put files in `assets/` and update `deploy.sh` to copy them.
## Project structure
```
.
├── assets/ # Static files (dissertation.pdf, public_key)
├── cv/ # CV source (.typ) + output (PDF, txt)
├── projects/ # Project pages (.qmd)
├── index.qmd # Homepage
├── _quarto.yml # Quarto config (theme, format, output dir)
├── terminal.css # Stylesheet
├── nginx.conf # VPS nginx config
├── compose.yml # Local preview via Docker
├── deploy.sh # Build + rsync to VPS
└── README.md
```
|