Compare commits
1
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2cf0dd1720 |
@@ -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
|
- A short introduction about me and the skills I work with
|
||||||
- TypeScript
|
- My current jobs and projects
|
||||||
- SCSS
|
- Ways to get in touch: email, phone, Signal, Gitea, and LinkedIn
|
||||||
- Vitest for tests
|
- English and German versions (add `?lang=de` for German)
|
||||||
|
- A small portrait gallery: click the photo to see a bit more of my life
|
||||||
## Features
|
|
||||||
|
|
||||||
- English and German language options (`?lang=de` selects German)
|
|
||||||
- About, work, and project portfolio
|
|
||||||
- Contact links
|
|
||||||
- Imprint and privacy information
|
- Imprint and privacy information
|
||||||
- Interactive portrait highlights
|
|
||||||
|
|
||||||
## Project Architecture
|
## Built with
|
||||||
|
|
||||||
- `src/app/home` โ portfolio landing page
|
I kept the stack small and modern on purpose:
|
||||||
- `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
|
|
||||||
|
|
||||||
## 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
|
```bash
|
||||||
npm ci
|
npm ci
|
||||||
npm run dev
|
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`.
|
`http://localhost:4200`.
|
||||||
|
|
||||||
### Production
|
To build and serve the production version:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
npm run build
|
npm run build
|
||||||
npm start
|
npm start
|
||||||
```
|
```
|
||||||
|
|
||||||
The build writes the static site to `dist/browser`. The static server serves the
|
The build lands in `dist/browser`, and the static server runs at
|
||||||
built site at `http://localhost:3000`.
|
`http://localhost:3000`.
|
||||||
|
|
||||||
## Tests
|
## Tests and checks
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
npm run test
|
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)
|
- [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
|
The code is licensed under the
|
||||||
project conventions.
|
[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
|
Thanks for stopping by! โจ
|
||||||
|
|
||||||
Licensed under the [GNU Affero General Public License v3.0](LICENSE).
|
|
||||||
Reference in new issue
Block a user