fs-portfolio is a public, futuristic portfolio website for a full stack developer. Its product intent is to present the developer's full stack skills and projects to an outside audience — recruiters, clients, and engineering peers — through a dark, instrument-like surface that reads as a deep-tech launch page rather than a conventional personal site. The portfolio is publicly viewable; visitors arrive anonymously, scan the developer's range (front-end craft, back-end depth, systems thinking), and find a clear way to make contact.
The audience is technical and time-poor. The site must therefore be dense, dark, and legible: proof of range visible within seconds, deeper inspection available on demand, and a single obvious path to reach the developer.
fs-portfolio is a first-party web application delivered as a set of publicly reachable pages. It has two accepted active human participants:
The current delivery covers four pages: Landing, Portfolio, Projects, and Contact. All four are publicly accessible with no access requirement; there is no sign-in, no account, and no protected state in the current scope. The developer's presentation content (skills, projects, professional identity) is the authoritative material the site renders; visitors browse it and use Contact to reach the developer.
The futuristic visual style is a hard, explicit constraint: a dark void canvas, luminous cyan instrumentation, a single rationed magenta accent, and a real-time WebGL hero subject. This style is not decoration — it is the product's stated identity and the reason the portfolio reads as a system builder's surface.
Delivery ownership. fs-portfolio is a first-party application-owned surface. Every page is rendered and owned by the application itself; no page is delegated to a provider surface or an external destination. The site is public and anonymous: visitors do not establish identity, and the application does not maintain visitor-specific durable state. There is consequently no application-owned identity, no first-use identity establishment, and no returning verification in the current scope.
Current boundary. Current scope is exactly the four accepted pages and the behavior described in Sections 2c, 3, and 5: presenting the developer's full stack skills and projects, letting visitors browse and revisit that work, and letting interested visitors contact the developer. The developer's portfolio content is the material the site presents; the site does not itself author, version, or publish that content in the current scope.
Future boundary. Anything not listed above — including any content-authoring or editing surface, any analytics or visitor tracking, any account or authentication capability, and any additional page — is out of current scope and is not part of current acceptance. See Section 11.
No reference directive in this project declares content_source authority. No source content inventory is included.
The page inventory is the accepted final page contract: Landing, Portfolio, Projects, Contact. Each is represented exactly once below.
FULL STACK ENGINEER / SYSTEMS / INTERFACES; the developer's name set in Space Grotesk 700 at 12–16vw, flush bottom-left, spanning toward the right edge and slightly cropped by the viewport; two inline CTAs at the baseline — a magenta-filled VIEW PROJECTS and a hairline-outlined CONTACT; and a thin cyan scroll-progress rail running the full right edge with tick labels for each section. No centred stack, no subtext paragraph, no gradient blob.VIEW PROJECTS (magenta fill) advances the visitor into the project work. CONTACT (hairline outline, fills cyan on hover) advances the visitor to the contact surface. The right-edge progress rail and the fixed left-rail section index both act as navigation and as progress instruments.Each requirement is a distinct story point with provenance, lifecycle facts, and observable acceptance.
FR-1 — Futuristic portfolio presentation As a Full Stack Developer (Portfolio Owner), I should have a futuristic-styled portfolio website that presents my full stack skills and projects, so that my range is visible to the people evaluating me.
explicit (futuristic-styled portfolio for a full stack developer; presents full stack skills and projects).FR-2 — Public viewing by recruiters, clients, and peers As a Portfolio Visitor (Recruiter / Client / Peer), I should be able to view the portfolio publicly without an account, so that I can evaluate the developer immediately on arrival.
explicit (publicly viewable by visitors such as recruiters, clients, and peers).FR-3 — Browsing the developer's full stack skills As a Portfolio Visitor (Recruiter / Client / Peer), I should be able to browse the developer's full stack skills on the Portfolio page, so that I can judge the breadth and depth of their stack.
explicit (the portfolio presents the developer's full stack skills).FR-4 — Browsing and revisiting the developer's projects As a Portfolio Visitor (Recruiter / Client / Peer), I should be able to browse the developer's projects on the Projects page and return to them later, so that I can inspect the work in detail and re-check it before deciding.
explicit (the portfolio presents the developer's projects; publicly viewable).FR-5 — Contacting the portfolio owner As a Portfolio Visitor (Recruiter / Client / Peer), I should be able to reach the developer from the Contact page, so that I can act on my interest.
explicit (publicly viewable by visitors such as recruiters, clients, and peers; the Contact page is the accepted focused destination for contacting the portfolio owner).CONTACT CTA.FR-6 — Receiving visitor contact As a Full Stack Developer (Portfolio Owner), I should receive contact initiated by interested visitors, so that I can respond to hiring, contracting, and collaboration interest.
required_inference — the accepted Contact destination exists so that interested visitors can reach the portfolio owner; the owner's receipt of that contact is the indispensable other side of the same lifecycle.FR-7 — Keeping portfolio content current and accurate As a Full Stack Developer (Portfolio Owner), I should be responsible for keeping the portfolio's presented skills, projects, and professional identity current and accurate, so that visitors evaluate an accurate picture of my work.
required_inference — the accepted persona rationale assigns the developer responsibility for keeping the portfolio content current and accurate; this is the owner-side obligation of the presentation lifecycle.FR-8 — Navigating the portfolio as an instrument As a Portfolio Visitor (Recruiter / Client / Peer), I should be able to move between the portfolio's sections and pages using the site's own navigation instruments, so that I can reach any part of the work without hunting.
required_inference — the accepted four-page contract and the direction's fixed left-rail section index and right-edge scroll-progress rail make cross-page and in-page movement indispensable to using the accepted surfaces.Product context. The developer is the subject and owner of fs-portfolio. The site exists to present their full stack work — front-end craft, back-end depth, systems thinking — to an outside audience. They are not a visitor of their own portfolio in the browsing sense; they are the party whose professional identity the site carries and who is accountable for its accuracy.
Primary goal. A compelling, self-maintained portfolio that represents their full stack work to visitors, so that recruiters, clients, and peers form an accurate and favorable picture of their range.
Distinct accepted responsibilities. The developer owns the presented content: the identity line and role framing on Landing, the stack and skill metrics on Portfolio, the project ledger on Projects, and the contact address on Contact. They are responsible for keeping that content current and accurate as their work changes (FR-7). They are also the recipient of visitor contact initiated from the Contact page (FR-6) — the other side of the contact lifecycle, without which the Contact destination has no purpose.
Relevant inputs or decisions. What skills and technologies to present and how to group them; which projects to include and in what order; what professional identity framing to carry; which contact address to present publicly. These are content decisions the developer makes about their own presentation.
Interactions with other accepted participants. The developer's relationship to the Portfolio Visitor is one-directional in the current scope: the developer presents, the visitor evaluates. The only reciprocal interaction is contact — the visitor initiates from the Contact page and the developer receives it.
Observable success. The portfolio is publicly reachable, renders in the required futuristic style, presents the developer's full stack skills and projects accurately, and delivers visitor contact to the developer.
Source-backed constraints. The futuristic visual style is a hard constraint on how this developer's work is presented. The current scope defines no in-application authoring surface; the developer's content responsibility is an obligation about accuracy, not a granted editing capability.
Product context. The visitor arrives anonymously from outside — typically a recruiter screening candidates, a client assessing a potential contractor, or an engineering peer evaluating a collaborator. They are technical or technically literate, they scan rather than read, and they are deciding quickly whether this developer is worth a conversation.
Primary goal. Quickly understand the developer's full stack expertise and have a clear way to reach out.
Distinct accepted responsibilities. The visitor drives every browsing action on the site: they enter at Landing, read the identity framing, choose between the project work and contact, scrub the stack orbit and read the skill gauges on Portfolio, browse and revisit the project ledger on Projects, and initiate contact from Contact. They also decide whether to act on what they see — the evaluation itself is their work.
Relevant inputs or decisions. Which CTA to take on arrival; how far to scrub the stack orbit; which projects to open; whether the demonstrated range justifies reaching out; whether to make contact now or return later.
Interactions with other accepted participants. The visitor's only interaction with the developer is outbound: they initiate contact from the Contact page, and the developer receives it. Everything else is the visitor reading what the developer has presented.
Observable success. The visitor reaches the site without an account step, understands the developer's full stack range, inspects the projects in detail, and can initiate contact from a single focused destination.
Source-backed constraints. The visitor is anonymous and public — no account, no sign-in, no retained visitor-specific state. The site must remain legible to a technical reader on a dark, dense surface.
FULL STACK ENGINEER / SYSTEMS / INTERFACES.VIEW PROJECTS and hairline-outlined CONTACT.VIEW PROJECTS leads to Flow B; CONTACT leads to Flow D.VIEW PROJECTS CTA or from the left-rail section index.CONTACT CTA, the left-rail index, or after browsing the work.Muse and headline. Gleb Kuznetsov — cinematic future tech: a dark void where the developer's stack orbits as a live HUD. The surface is a deep-tech launch page, not a friendly-corporate or editorial-quiet site. The audience is technical, so the surface may be dense, dark, and instrument-like.
Colour tokens (dark mode).
| Role | Hex | Usage |
|---|---|---|
| Background (void) | #05070E | Carries ~70% of every screen; no white or near-white grounds anywhere |
| Surface (glass panel) | #0C1220 | Raised panels with 1px luminous strokes |
| Text | #E8EEF9 | Body copy at 15–17px; contrast ≈ 16:1 on background |
| Primary (signal) | #38E8FF | HUD labels, active nav, link underlines, data ticks, hero wireframe glow |
| Accent (hot) | #FF4FD8 | Rationed to under 5% of pixels: CTA fill, cursor-trail node, one project status dot, section index numeral |
| Muted | #6E7C96 | Micro-labels and metadata only — never reading copy |
Forbidden colours. Any blue-indigo primary (#0057FF, #2563EB, #6366F1, #7C3AED) and any white or near-white ground. The entire surface stays in the #05070E void. The generic indigo/blue-on-white SaaS template is forbidden for this project.
Typography.
-0.03em tracking, enormous scale jumps. The hero name runs 12–16vw so it spans the viewport edge to edge; section headlines sit at 56–72px.+0.22em letterspacing (SKILLS, STACK, DEPLOYED, LAT/LONG-style metadata).system-ui for headings or body.Type scale (1.5 modular). 128 / 88 / 56 / 32 / 20 / 16 / 13 / 11 px. Display 128–176px for the hero name; 88px page titles; 56px section heads; 32px project titles; 20px lede; 16px body; 13px captions; 11px uppercase HUD labels.
Shape language. Thin luminous strokes — 1px cyan at 40–70% opacity — over dark glass panels with 4–8px radii: sharp enough to read as instrumentation, never bubbly. Circular gauges and radial tick marks for skill and metric displays. Corner brackets and crosshair ticks frame key panels. Diagonal 1px flow lines and node-and-edge connector paths (the stack graph) are the recurring decorative geometry; nothing is purely ornamental — every line encodes a relationship. Rounded-pill everything is forbidden; radii stay at 4–8px.
Spacing rhythm. Wide margins (minimum 6vw) and generous vertical rhythm of 160px between sections, on a persistent 12-column instrument grid with content in floating glass panels that overlap the grid edges deliberately.
Imagery style. No stock photography and no flat clip art. Visuals are generated from the developer's own material: a real-time Three.js wireframe/point-cloud subject in the hero (an abstracted server-stack or node graph), glowing architecture diagrams, code panels rendered as luminous text on dark glass, terminal output as texture, and data-driven particle fields derived from commit/contribution counts. Project thumbnails are treated as instrument readouts — schematic diagrams and UI captures with cyan edge-glow on dark, never lifestyle mockups. Stock photography of people at laptops, flat vector "developer" clip art, and generic device mockups are forbidden. Glassmorphism used as decoration at full saturation (violet→pink gradients behind white frosted cards) is forbidden.
The cropped name over a live stack. The Landing page is a full-viewport #05070E void. Right-of-centre, occupying roughly 55% of the viewport width, a slowly rotating volumetric wireframe subject — an abstracted node-and-edge server stack — glows in cyan #38E8FF with magenta #FF4FD8 light accents and a soft radial glow beneath it. The developer's name is set in Space Grotesk 700 at 12–16vw, flush bottom-left, spanning toward the right edge and deliberately cropped by the viewport: it reads as architecture, not as a centred headline. Above it sits a single uppercase 11px cyan HUD line — FULL STACK ENGINEER / SYSTEMS / INTERFACES. Two CTAs sit inline at the baseline: a magenta-filled VIEW PROJECTS and a hairline-outlined CONTACT that fills cyan on hover. A thin cyan scroll-progress rail runs the full right edge with tick labels for each section.
The concept recomposes only accepted content and controls: the developer's name and role framing, the two CTAs, the section index, and the WebGL stack subject. It introduces no new behavior, page, or destination. There is no centred stack, no subtext paragraph, no gradient blob, and no blue button on white.
Interaction Model: Animated Motion Tempo: cinematic Hero Dimensionality: webgl
Landing Hero Motion Brief.
#38E8FF with magenta #FF4FD8 light accents, positioned right-of-centre at ~55% viewport width with a soft radial glow beneath it, over the #05070E void.cubic-bezier(0.16, 1, 0.3, 1). No bounces, no playful springs, no confetti-style micro-interactions.VIEW PROJECTS and hairline CONTACT CTAs sit inline at the baseline. The right-edge progress rail is at zero with its tick labels visible.prefers-reduced-motion, the orbit freezes and scrubs are swapped for fades: the wireframe subject holds a static pose, the camera push becomes a cross-fade between stack states, HUD numerals appear at their final values without counting up, and the cursor-trail node is suppressed. The name, HUD line, CTAs, and progress rail remain fully legible and operable.Landing Hero 3D Scene Brief — DIRECTION-DERIVED. The direction specifies webgl hero dimensionality, so a real-time 3D hero is expected. Build one crafted real-time object: an abstracted node-and-edge server stack rendered as a volumetric wireframe in cyan #38E8FF, with magenta #FF4FD8 light accents and a soft radial glow beneath it, positioned right-of-centre at ~55% viewport width. The scene shows the product's defining state — the developer's stack as a connected, orbiting system. It rotates slowly and responds to pointer parallax; scroll drives a scrubbed camera push through the graph. Under reduced motion the subject holds a static pose and the camera push becomes a cross-fade. If the scene cannot initialise, the void, name, HUD line, CTAs, and progress rail remain fully functional without it.
NFR-1 — Public anonymous access. Every page (Landing, Portfolio, Projects, Contact) is publicly reachable with no access requirement and no identity step. Provenance: explicit (the portfolio is publicly viewable by visitors such as recruiters, clients, and peers). Rationale: a recruiter, client, or peer must be able to evaluate the developer immediately on arrival; any gate would defeat the portfolio's purpose.
NFR-2 — No visitor-specific durable state. The current scope retains no visitor-specific state between visits; the Projects page is revisitable at the same public address without continuity of identity. Provenance: required_inference from the accepted public, no-access contract. Rationale: no accepted journey requires the application to remember a visitor, and no accepted capability creates a durable visitor relationship.
NFR-3 — Legibility on the dark surface. Body text #E8EEF9 at 15–17px on #05070E yields a contrast ratio of approximately 16:1. #6E7C96 is reserved for micro-labels and metadata and is never used for reading copy. Provenance: explicit (creative direction). Rationale: the audience is technical and scans quickly; the dense dark surface must not cost them legibility.
NFR-4 — Motion accessibility. prefers-reduced-motion freezes the hero orbit and swaps scrubs for fades. Provenance: explicit (creative direction). Rationale: continuous cinematic motion must not be mandatory for a visitor to read the portfolio.
NFR-5 — Graceful degradation of the WebGL hero. If the real-time hero scene cannot initialise, the Landing page remains fully legible and navigable without it. Provenance: required_inference from the accepted public-entry lifecycle. Rationale: the hero is the entry surface; a failed scene must not block a visitor from reaching the developer's work or contact.
NFR-6 — No-data and unavailable states. Where a page's content cannot be resolved — no stack nodes or skill metrics, no projects, no contact address, or an unresolvable project readout — the page shows an explicit indication rather than a blank or misleading surface. Provenance: required_inference from the accepted presentation lifecycle. Rationale: a portfolio that silently shows nothing misrepresents the developer's work.
NFR-7 — Futuristic visual style. The dark void palette, luminous cyan instrumentation, rationed magenta accent, Space Grotesk / IBM Plex Mono typography, 4–8px radii, and instrument-grid layout are required, not optional. Provenance: explicit (futuristic visual style is a required constraint). Rationale: the style is the product's stated identity.
The authoritative source specifies no technology choices. The following are coherent defaults for the accepted delivery shape (a first-party, publicly reachable, custom-UI web application with a real-time WebGL hero), labeled as defaults.
[Default — not specified by user][Default — not specified by user][Default — not specified by user][Default — not specified by user][Default — not specified by user][Default — not specified by user]Constraints (binding).
system-ui for headings or body, no rounded-pill radii, no playful springs or bouncy easing, no stock photography or flat "developer" clip art, and no decorative full-saturation glassmorphism.Assumptions (narrow, labeled).
Future (explicitly out of current scope and current acceptance).
VIEW PROJECTS / CONTACT CTAs.+0.22em letterspacing, used for labels such as SKILLS, STACK, and DEPLOYED.
STACK
Six nodes, five relationships deep. Scroll the band to push the camera through the graph — labels resolve from blurred cyan to sharp as each node passes centre.
Static arrangement
LEDGERBUILD RECORD
Three records from the working ledger — each one a system taken from schema to running edge.
LEDGER ENTRIES // 03
Preview only — the full ledger, filters and per-project detail live in Projects.
Open full ledgerThree capability channels — the range a full stack engagement actually draws on. Each gauge reads its channel against a 100-point scale, tick by tick.
UPLINK
Direct line for new work, collaboration or a technical conversation about the systems behind the projects.

STACK
Six nodes, five relationships deep. Scroll the band to push the camera through the graph — labels resolve from blurred cyan to sharp as each node passes centre.
Static arrangement
LEDGERBUILD RECORD
Three records from the working ledger — each one a system taken from schema to running edge.
LEDGER ENTRIES // 03
Preview only — the full ledger, filters and per-project detail live in Projects.
Open full ledgerThree capability channels — the range a full stack engagement actually draws on. Each gauge reads its channel against a 100-point scale, tick by tick.
UPLINK
Direct line for new work, collaboration or a technical conversation about the systems behind the projects.
No comments yet. Be the first!