README.md (4966B)
1 # Start the container 2 3 Install Docker with Docker Compose v2.23.0 or newer. From this directory, run: 4 5 ```sh 6 docker compose up -d 7 ``` 8 9 Open <http://localhost:8000>. 10 11 To start with automatic application updates during development, run: 12 13 ```sh 14 docker compose watch 15 ``` 16 17 # Git frontend 18 19 Add one public HTTPS clone URL per line to `stagit/repos.txt`. Repository names 20 must be unique. Run `docker compose up -d --build`, then open <http://localhost>. 21 The same pages are served at <https://git.lindholmlabs.com> in production. 22 23 The stagit container clones or fetches immediately, generates static pages, then 24 sleeps for 24 hours. Restart it with `docker compose restart stagit` to sync now. 25 Mirrors and generated pages persist in named volumes. Unavailable remotes keep 26 their last local copy; removing a URL does not delete its mirror. Caddy serves the 27 completed output read-only; stagit exposes no ports. 28 29 The Git pages use local copies of Codemadness's 30 [stylesheet](https://codemadness.org/git/style.css), 31 [favicon](https://codemadness.org/git/favicon.png), and 32 [logo](https://codemadness.org/git/logo.png). 33 34 # Software Requirements Specification 35 36 ## Personal Résumé Website 37 38 ### 1. Intent 39 40 Build a permanent, lightweight résumé website for a software developer. 41 42 Treat the site as a document published on the Web, not as a web application. 43 44 ### 2. Application 45 46 **REQ-01 — Runtime**\ 47 Use Python and Flask. Keep all Flask logic in `cv/main.py`. 48 49 **REQ-02 — Page**\ 50 The application shall contain exactly one page. Serve the résumé at `/`. Keep HTML in `cv/index.html` and CSS in `cv/style.css`. 51 52 **REQ-03 — JavaScript**\ 53 Do not use JavaScript. 54 55 ### 3. Project Layout 56 57 **REQ-04 — Files**\ 58 Use this structure: 59 ``` 60 / 61 ├── .gitignore 62 ├── .gitattributes 63 ├── README.md 64 ├── compose.yml 65 ├── caddy/ 66 │ └── Caddyfile 67 ├── stagit/ 68 │ ├── Dockerfile 69 │ ├── sync.sh 70 │ ├── repos.txt 71 │ ├── style.css 72 │ ├── favicon.png 73 │ └── logo.png 74 └── cv/ 75 ├── main.py 76 ├── Dockerfile 77 ├── requirements.txt 78 ├── index.html 79 ├── robots.txt 80 ├── sitemap.xml 81 └── style.css 82 ``` 83 84 Do not add directories. 85 86 **REQ-05 — README**\ 87 The README shall contain only: 88 89 1. Instructions to start the container. 90 2. Git frontend instructions. 91 3. This SRS. 92 93 Place the start instructions first. 94 95 ### 4. Container 96 97 **REQ-06 — Operation**\ 98 Package the application with Docker. `docker compose up -d` shall start the site. Restarting the container shall restore normal operation. 99 100 **REQ-07 — Compose Watch**\ 101 Configure `develop.watch` in `compose.yml`. `docker compose watch` shall detect changes to application files and update or rebuild the service as required. 102 103 **REQ-08 — Runtime Dependencies**\ 104 Do not require external CDNs, hosted fonts, analytics, databases, build systems, JavaScript packages, or third-party runtime services. 105 106 ### 5. Visual Design 107 108 **REQ-09 — Direction**\ 109 Use the visual restraint of long-lived FOSS and Unix websites. Suitable references include CRUX Linux, kernel.org, OpenBSD, NetBSD, suckless.org, SQLite, musl libc, BusyBox, Alpine Linux, and SourceHut. Do not copy a reference site. 110 111 Do not imitate a terminal. Do not use fake prompts, simulated commands, or monospace text as decoration. 112 113 **REQ-10 — Palette**\ 114 Use this palette: 115 ```less 116 Accent blue #007acc 117 Light highlight #d4d4d4 118 Primary text #333333 119 Dark highlight #252525 120 Dark background #1e1e1e 121 ``` 122 123 Declare colors as custom properties in `:root`. Reference those properties throughout the stylesheet. Use accent blue mainly for links and small accents. 124 125 **REQ-11 — Typography**\ 126 Use system or web-safe fonts only. Declare each font stack once as a custom property in `:root`. 127 128 **REQ-12 — Style**\ 129 Use typography, spacing, and hierarchy to structure the page. Avoid gradients, shadows, glass effects, animation, oversized hero sections, card grids, carousels, and decorative image galleries. 130 131 ### 6. Content and Layout 132 133 **REQ-13 — Sections**\ 134 Include: 135 136 - Introduction 137 - Work experience 138 - Education 139 - Selected projects 140 - Technical skills 141 - Contact and external links 142 143 Present experience and projects as concise text with ordinary links. 144 145 **REQ-14 — Responsive Layout**\ 146 Use a restrained maximum width on large displays. Use one readable column on small displays. Require no JavaScript for responsive behavior. 147 148 ### 7. Document Quality 149 150 **REQ-15 — HTML**\ 151 Use semantic HTML5 and a logical heading order. The document shall remain readable without CSS. 152 153 **REQ-16 — CSS**\ 154 Keep the stylesheet small and conventional. Prefer standard layout methods over frameworks or design-system abstractions. 155 156 **REQ-17 — Priorities**\ 157 Prioritize, in order: 158 159 1. Maintainability 160 2. Accessibility 161 3. Readability 162 4. Browser compatibility 163 5. Load time 164 6. Visual character 165 166 When several solutions meet a requirement, use the simplest one.