# fristy.dev ![Code Health](scorecard.png) My personal corner of the internet — projects, live Discord status, and ways to reach me. **Live:** https://fristy.dev ## What's inside - **Projects** — pulled automatically from my self-hosted Gitea and refreshed hourly. If a repo has a website, the card links there; otherwise it goes straight to the repo. - **Discord** — live presence via Lanyard: status, game and activity artwork, Spotify, custom status. Refreshed every 15 seconds. - **Contact & Social** — email, Discord server, GitHub, Gitea, Spotify and Steam, each with its own card. - **Three languages** — Turkish, English and German. No path-style; your browser language is detected on the first visit, saved in a cookie, and switchable from the header anytime. ## Stack [Next.js](https://nextjs.org/) (App Router) · [React](https://react.dev/) · [Tailwind CSS v4](https://tailwindcss.com/) · [pnpm](https://pnpm.io/) · [Docker](https://docker.com/) ## Run it locally You need Node LTS and pnpm. ```bash pnpm install pnpm dev # http://localhost:3000 ``` | Script | What it does | | ------------------- | ------------------------------- | | `pnpm dev` | Start the dev server | | `pnpm build` | Production build | | `pnpm start` | Serve the production build | | `pnpm test` | Run the Vitest suite | | `pnpm lint` | Run ESLint | | `pnpm format` | Format everything with Prettier | | `pnpm format:check` | Fail if anything is unformatted | Code style is 4 spaces, enforced by Prettier (`.prettierrc`), EditorConfig and VS Code settings — `pnpm format` fixes everything. ## Docker ```bash docker build -t fristynet . docker run --rm -p 3000:3000 fristynet ``` No need to build it yourself though — CI publishes every `main` push: ```bash docker pull git.fristy.net/fristy/fristydev:latest ``` ## CI/CD Pushes to `main` (and `` tags) run format check, lint and build first. If those pass, the Docker image is built and pushed to the Gitea registry: - `git.fristy.net/fristy/fristydev:latest` on every `main` push - `git.fristy.net/fristy/fristydev:` for every pushed commit Pull requests only run the checks — nothing is pushed. ## License Apache-2.0 — see [LICENSE](./LICENSE).