Resume site with live content from Gitea
Deploy to GitHub Pages / build (push) Canceled after 0s
Deploy to GitHub Pages / deploy (push) Canceled after 0s

Replaces the static portfolio with a resume site that reads /data/resume.json:
the text comes from data/resume.json in this repo, and the projects are the
public Gitea repos tagged `resume`. Merges in the content of the hh.ru resume
(backend/DevOps skills, experience, languages) without personal details.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Emil
2026-09-20 20:55:05 +03:00
co-authored by Claude Sonnet 5
parent b001ddf6b5
commit 32c57a5ada
10 changed files with 719 additions and 249 deletions
+20 -17
View File
@@ -1,28 +1,31 @@
# Emil Shanayev — Portfolio
# Emil Shanayev — resume site
Updated static portfolio based on the original `Emil_Shanayev_Resume` repository.
Live at **https://shanaty.ru/resume/**. A static Next.js site whose content is loaded live from Gitea:
## Local development
- **Text** (name, bio, skills, experience, education, contacts, …) comes from [`data/resume.json`](data/resume.json) in this repo.
- **Projects** are the public repos on Gitea (`git.shanaty.ru/Emil_Shanaty`) that carry the topic **`resume`**. Tag a repo and it appears within about a minute; remove the topic and it disappears.
- Optional `projectNotes` in `data/resume.json` (keyed by repo name) enrich a project with a title, kind, longer description, highlights, tech tags, extra links and a `rank` (lower ranks first; the rest are newest first). Without a note a project shows its Gitea description, language and topics.
## How it works
A systemd timer on the server (`resume_sync.py`, in the `auto` repo) rebuilds `https://shanaty.ru/data/resume.json` every minute from the `main` branch of this repo plus the topic search. The page fetches that file on load and falls back to the copy bundled at build time if it is unreachable. A broken `data/resume.json` (invalid JSON, missing fields, non-http links) is rejected and the previous published data stays.
To update content: edit `data/resume.json`, commit, and **push to Gitea** (`git push gitea main`). No rebuild or deploy is needed.
## Development
```bash
npm install
npm run dev
npm run dev # http://localhost:3000, data from the public https://shanaty.ru/data/resume.json
npm run build # static export in out/
```
Open `http://localhost:3000`.
`BASE_PATH` sets the URL prefix (default `/Emil_Shanayev_Resume`, for GitHub Pages) and `NEXT_PUBLIC_DATA_URL` the data URL.
## Production build
## Deploy
```bash
npm run build
```
`./deploy-shanaty.sh` builds and publishes the site to shanaty.ru (needs the ssh key `~/.ssh/MyGitea`). Only needed after changing code or styles.
The static export is written to `out/`.
## Not published on purpose
## GitHub Pages
The project is preconfigured for:
`https://emil28092005.github.io/Emil_Shanayev_Resume/`
Push the project to the `main` branch, then select **Settings → Pages → Source → GitHub Actions**. The included workflow builds and deploys the static export automatically.
The official resume on hh.ru holds more personal details (phone, date of birth, salary expectations). This site only carries the professional content.