diff --git a/README.md b/README.md index 6f8e7de..4874525 100644 --- a/README.md +++ b/README.md @@ -1,75 +1,86 @@ -# FrauJulian's Portfolio Website +# Hey, I'm Julian 👋 -## Preview +This is the source code of my personal portfolio at +[fraujulian.xyz](https://fraujulian.xyz/). It's where I show who I am, what I +work on, and how you can reach me. -Visit the live website at [fraujulian.xyz](https://fraujulian.xyz/). +I'm a full-stack developer from Austria. I care about reliable systems, clean +code, and privacy. Most of my day happens on the move, usually on a train, and +when I'm not coding, I'm probably scuba diving somewhere in an Austrian lake. 🤿 -## Technology +## What you'll find on the site -- Angular 22 -- TypeScript -- SCSS -- Vitest for tests - -## Features - -- English and German language options (`?lang=de` selects German) -- About, work, and project portfolio -- Contact links +- A short introduction about me and the skills I work with +- My current jobs and projects +- Ways to get in touch: email, phone, Signal, Gitea, and LinkedIn +- English and German versions (add `?lang=de` for German) +- A small portrait gallery: click the photo to see a bit more of my life - Imprint and privacy information -- Interactive portrait highlights -## Project Architecture +## Built with -- `src/app/home` — portfolio landing page -- `src/app/imprint` — imprint and privacy page -- `src/app/footer` — site footer -- `src/app/shared` — reusable UI components -- `src/app/services` — language and preference services -- `src/languages` — English and German content -- `scripts` — asset generation, versioning, and static file tools +I kept the stack small and modern on purpose: -## Setup +- Angular 22 with standalone components, signals, and zoneless change detection +- TypeScript and SCSS +- Vitest for tests +- A tiny Node.js static server with security headers and compression -Requirements: Node.js 24.15 or newer and npm 11.12 or newer. +The site is fully static. There is no tracking, no cookies, and no third-party +requests. Even the font is self-hosted. 🔒 -### Development +## Running it locally + +You need Node.js 24.15 or newer and npm 11.12 or newer. ```bash npm ci npm run dev ``` -The development server generates required static assets and runs the site at +This generates the optimized assets and starts the dev server at `http://localhost:4200`. -### Production +To build and serve the production version: ```bash npm run build npm start ``` -The build writes the static site to `dist/browser`. The static server serves the -built site at `http://localhost:3000`. +The build lands in `dist/browser`, and the static server runs at +`http://localhost:3000`. -## Tests +## Tests and checks ```bash npm run test +npm run check ``` -This generates assets and runs the Vitest tests in jsdom. +`npm run test` runs the Vitest suite in jsdom. `npm run check` runs linting, +formatting, version, and source text checks. Please run it before you open a +pull request. -## Docs +## Project structure + +- `src/app/home`: the portfolio landing page +- `src/app/imprint`: imprint and privacy page +- `src/app/footer`: site footer +- `src/app/shared`: reusable UI building blocks +- `src/app/services`: language, preference, and SEO services +- `src/languages`: English and German content +- `scripts`: asset generation, versioning, and the static server + +More notes: - [Nginx Proxy Manager deployment notes](npm.md) +- [Project conventions](AGENTS.md) -## Guidelines +## License -Run `npm run check` before submitting changes. See [AGENTS.md](AGENTS.md) for -project conventions. +The code is licensed under the +[GNU Affero General Public License v3.0](LICENSE). The content of the website, +such as texts and photos, is mine and not covered by that license. -## LICENSE - -Licensed under the [GNU Affero General Public License v3.0](LICENSE). +Thanks for stopping by! ✨