altair-website is the public website and back-of-house curation tool for a creative agency. It serves two purposes at once, as explicitly requested: it is the agency's own site, where prospective clients can learn who the agency is, review its work, and contact the agency to hire it; and it is a showcase-style portfolio site, where visitors can browse the agency's creative output purely to see the work.
The site is therefore built for two overlapping audiences. Prospective clients arrive to evaluate the agency's capabilities and decide whether to reach out. Portfolio viewers arrive to look at the work itself. Both are served by the same public surfaces: a Landing entry, a Portfolio index of projects, an About spread describing the agency, and a Contact dispatch for inquiries.
Behind the public site sits Studio, a protected workspace where the agency owner curates the portfolio projects and agency presentation content that the public pages display. Because that curated content is durable and must remain bound to the correct owner across visits, the agency owner establishes identity through self-service Sign Up on first use and verifies returning identity through Login thereafter.
The design register is confident, self-aware, and culturally literate — a studio with a point of view rather than a neutral service provider. The public site reads as an editorial artefact index; Studio reads as a legible, fast back-of-house control panel wearing the same industrial uniform.
altair-website is delivered as a first-party web application with a public-facing site and a protected curation workspace.
Current delivery. A custom web front end serves the public pages (Landing, Portfolio, About, Contact) and the identity surfaces (Sign Up, Login) plus the protected Studio workspace. A first-party backend persists portfolio projects, agency presentation content, and submitted contact inquiries, and provides the identity continuity that binds curated content to the agency owner. The public pages read the same durable content that Studio writes.
Actors. The accepted active human personas are the Agency Owner / Principal, the Prospective Client, and the Portfolio Visitor / Viewer. The backend and its persistence layer are non-persona system actors; there are no provider-owned or external destinations in the current scope.
Accepted behavior. Anonymous visitors reach Landing and move into Portfolio, About, and Contact. Prospective Clients submit a contact inquiry for hiring purposes and receive a numbered ticket confirming receipt. The Agency Owner / Principal enrolls through Sign Up, verifies returning identity through Login, and curates portfolio projects and agency presentation content in Studio so that the public Portfolio and About pages reflect that curation.
Ownership. All current surfaces are application-owned custom pages. Studio is the only destination requiring login; Landing, Portfolio, About, Contact, Login, and Sign Up are reachable without an established session.
Narrow exclusions. No stock photography, no decorative illustration, no gradient or glass surfaces, no blue/indigo/violet accent, and no rounded-card template treatment. No account-management capabilities beyond first-use enrollment and returning verification are in scope. No client-facing project management, billing, or messaging capability is in scope.
The product is a single first-party website with two faces. The public face is anonymous and open: anyone arriving at the root reaches Landing, and from there can browse the Portfolio index, read the About spread, and dispatch a Contact inquiry. Nothing on the public face requires an account, and no public page gates its content behind identity.
The working face is Studio, which is protected. The agency owner is the only accepted human actor who curates what the site shows, and that curation is durable: projects and agency presentation content persist between visits and must remain bound to the correct owner. Because the source establishes no invitation or provisioning boundary, first use is self-service enrollment through Sign Up, and returning use is verified through Login. Sign Up and Login are themselves anonymously reachable — they are the interactions that establish access, so they cannot sit behind the access they create. Studio is the only destination that requires an established session.
The current horizon covers the public site, the identity surfaces, and Studio curation of portfolio projects and agency presentation content. Nothing beyond that is committed: there is no client portal, no project management, no billing, no messaging, and no third-party provider surface in the accepted scope. Future ideas are not part of current pages or acceptance.
No reference directive in this project declares content_source authority, so no source content inventory is included. All portfolio projects, agency presentation content, and agency coordinates are authored by the Agency Owner / Principal through Studio rather than supplied as fixed source facts.
START A PROJECT control; a vertical tag rail in columns 10–12 of rotated 11px uppercase discipline tags separated by hairlines; an 8px hazard-stripe band along the bottom of the viewport; a credits ticker scrolling above that band; the 12-column grid rules drawn as 1px hairlines behind all content.RECEIVED block on the right. Anonymous; submitting creates a durable inquiry record.RECEIVED block; the numbered ticket printed on submission in place of a success toast.RECEIVED block. Error: if dispatch fails, the form retains every entered value and shows a ruled error line with a retry. Recovery: retry re-dispatches the same inquiry without re-entry; a validation failure marks the specific field and keeps all other values.FR-1 — Public agency site with dual purpose. As a visitor, I should reach a public site that both presents the agency for hiring and functions as a showcase-style portfolio, so that the agency's work and its availability for engagement are visible in one place. (explicit)
FR-2 — Browse showcased creative work. As a Portfolio Visitor / Viewer, I should browse the agency's showcased creative work as a ruled index of projects, so that I can see the agency's creative output clearly. (explicit)
FR-3 — View a single project artefact. As a Portfolio Visitor / Viewer, I should open an individual project and see its artefact and description, so that I can understand the work rather than only its title. (required_inference)
FR-4 — Read agency information. As a Prospective Client, I should read agency information sufficient to evaluate the agency and its capabilities, so that I can judge whether to engage it. (explicit)
FR-5 — Submit a contact inquiry to hire the agency. As a Prospective Client, I should submit a contact inquiry to the agency, so that I can begin hiring them. (explicit)
RECEIVED block. Access state: anonymous. Failure/recovery: a failed dispatch retains every entered value and offers retry; a validation failure marks the specific field and keeps other values. Continuation: the client retains the ticket number as the reference for the inquiry.FR-6 — Receive and review submitted inquiries. As an Agency Owner / Principal, I should receive submitted client inquiries as durable records, so that I can follow up on prospective work. (required_inference)
FR-7 — Self-service first-use enrollment. As an Agency Owner / Principal, I should complete self-service enrollment before first accessing Studio, so that I can begin curating without an invitation or provisioning step. (required_inference)
FR-8 — Returning identity verification. As an Agency Owner / Principal, I should verify my returning identity before accessing Studio, so that my durable curated content stays bound to me. (required_inference)
FR-9 — Protected Studio access. As an Agency Owner / Principal, I should reach Studio only after identity is established, so that curation of the public site is not open to anonymous visitors. (required_inference)
FR-10 — Curate portfolio projects. As an Agency Owner / Principal, I should create, edit, publish, unpublish, and remove portfolio projects in Studio, so that the public Portfolio reflects the work I choose to show. (required_inference)
FR-11 — Curate agency presentation content. As an Agency Owner / Principal, I should edit the agency presentation content in Studio, so that the public About spread describes the agency as I intend. (required_inference)
FR-12 — Review published state from Studio. As an Agency Owner / Principal, I should see the current published state of each project and of the presentation content in Studio, so that I know what the public site is showing. (required_inference)
The principal runs the creative agency and is the only accepted human actor on the working side of the product. Their context is back-of-house: they are not browsing the site for pleasure, they are deciding what the site shows. Their primary goal is for the site to present the agency's work and brand credibly enough that prospective clients evaluate and hire the agency, with success measured by inbound client inquiries and new business.
Their distinct accepted responsibilities are curation and reception. On curation, they create, edit, publish, unpublish, and remove portfolio projects, and they edit the agency presentation content that the About spread displays. On reception, they receive the contact inquiries that Prospective Clients dispatch, as durable records carrying sender details, description, timestamp, and ticket number. They also carry the identity responsibility that makes curation durable: self-service enrollment on first use and returning verification thereafter, because the content they curate must remain bound to them across visits.
Their relevant inputs and decisions are what work to show, how each project is tagged by year, discipline, and client, which art-directed image represents each project, the order of the index, and whether each item is published or held as a draft. Their interactions with other accepted participants are indirect but real: the Prospective Client's inquiry arrives as a record the principal reads, and the Portfolio Visitor / Viewer's experience is entirely determined by what the principal publishes. Their observable success is a public Portfolio and About spread that match their curation, and a stream of inquiries they can follow up on.
What makes this role different from the other two is that it is the only role that writes. Prospective Clients and Portfolio Visitors read and act on the public site; the principal is the one who decides what exists there, and the only one whose work persists between sessions.
The prospective client is evaluating the agency with hiring in mind. Their context is a decision: they have a project or a need, and they are judging whether this agency is the right one. Their primary goal is to understand the agency's capabilities well enough to decide whether to reach out, and then to reach out successfully.
Their distinct accepted responsibilities are evaluation and initiation. On evaluation, they read the agency's capabilities and positioning on the About spread and review showcased work on the Portfolio index, including opening individual projects to see the artefact and description rather than only a title. On initiation, they complete the Contact dispatch slip and submit an inquiry, receiving a numbered ticket as confirmation of receipt.
Their relevant inputs and decisions are which projects they open, whether the agency's disciplines match their need, and what they write in the inquiry — their name, email, and a description of the project or engagement, with optional budget or timeline context. Their interactions with other accepted participants are with the Agency Owner / Principal, who receives the inquiry as a durable record and follows up outside the product. Their observable success is a completed inquiry that leads to engagement, evidenced by the numbered ticket they receive.
What makes this role different from the Portfolio Visitor / Viewer is intent and endpoint. The prospective client is reading toward a decision and has a completion action — the inquiry — that the viewer does not. The viewer may never contact the agency at all.
The portfolio viewer is there for the work. Their context is showcase-style browsing: they may be a peer, a fellow designer, a student, or simply someone interested in the agency's creative output, and they are not necessarily hiring. Their primary goal is to see the work clearly and understand the agency's creative output.
Their distinct accepted responsibilities are exploration and comprehension. They scan the ruled Portfolio index, hover rows to bring each project's artefact in from the right edge, open individual projects to see the image and description, and read the agency presentation content on the About spread to place the work in context.
Their relevant inputs and decisions are which projects they open and how long they dwell on each artefact. Their interactions with other accepted participants are limited: they consume what the Agency Owner / Principal publishes, and they are not expected to contact the agency. Their observable success is seeing the work clearly and coming away with an understanding of the agency's creative output.
What makes this role different from the Prospective Client is that it has no commitment step. The viewer's journey ends in comprehension, not in an inquiry, and the product must serve that ending without pushing them toward Contact.
"WORK" and moves to Portfolio. The page transition is a 240ms hazard-stripe wipe across the viewport."ABOUT" and moves to About. The page transition is a 240ms hazard-stripe wipe."WORK" and moves to Portfolio to verify the agency's capabilities against actual output."CONTACT" and moves to Contact. The dispatch-slip layout renders with the ruled form on the left two-thirds and the agency coordinates and unstamped RECEIVED block on the right.RECEIVED block in place of a success toast. The client retains the ticket number as their reference.The creative direction is authoritative for this section. Muse: Virgil Abloh. Headline idea: remixed familiarity for a creative agency that quotes itself — the studio's own site treated as a tagged artefact, with the designer's language about design.
Mode. Dark mode is the primary and only specified mode.
Colour tokens by role.
| Role | Hex | Use |
|---|---|---|
| Background | #0B0B0B | Ink-black ground; carries roughly 70% of every screen |
| Surface | #161616 | Raised surfaces, Studio panes |
| Hairline | #2A2A28 | 1px rules, exposed grid lines, table borders |
| Text | #F4F1EA | Bone white; the only type colour for reading |
| Primary | #F4F1EA | Primary type and control foreground |
| Accent | #FF4A00 | Safety orange; hazard stripes, quotation marks around labels, active nav underline, form focus ring, one word in the display headline — never more than about 5% of the viewport |
| Muted | #8A8A85 | Metadata, timestamps, label/value pairs only — never body copy |
Construction-tape motif. A single repeating graphic: a 45° stripe of #F4F1EA on #0B0B0B. It appears 8px tall at the base of the landing hero, 4px as a section divider, and as the page-transition wipe. It is the only pattern in the system.
Typography. Headings and body both use Archivo. Headings are set in 700–800, uppercase, with tracking 0.02em for labels and 0 for display. Display headlines are flush-left, ragged-right, with tight leading (0.92) and enormous size contrast against 11px uppercase labels in the same family at 500. Quotation marks are literal typographic marks around section labels — "WORK", "ABOUT" — and recur as a UI motif in nav, buttons, and Studio panel headers.
Type scale, 1.25 modular, mobile-first:
| Role | Size |
|---|---|
| Display | 56 / 72 / 96 / 128px via clamp(3.5rem, 9vw, 8rem) |
| Section heads | 28 / 40 / 56px |
| Project titles | 20 / 28px |
| Body | 16 / 17px, 1.6 leading |
| Labels and metadata | 11 / 12px uppercase, tracked 0.08em |
Numerals are tabular in Studio.
Shape language. Hard 0px corners everywhere except form inputs and buttons, which take a 2px radius — enough to read as a control, not enough to soften the frame. Elements are framed by 1px rules rather than fills: exposed grid lines, hairline dividers, ruled label/value rows. Depth comes from stacked flat planes and a single 2px offset tag shadow on hovered artefacts. No blobs, no soft shadows, no glass.
Layout. A 12-column exposed grid with 24px gutters at 375px, 32px at 768px, and 48px at 1280px, with column rules drawn as 1px #2A2A28 lines behind the content on Landing and Portfolio. Landing is asymmetric: full-bleed display headline in columns 1–9, vertical tag rail in columns 10–12. Portfolio is a ruled index of full-width rows with a fixed left metadata column and a right-hand image that bleeds to the viewport edge on hover. About is a two-column editorial spread with a sticky left label column. Contact is a dispatch-slip layout: fields on the left two-thirds, agency coordinates and a stamped RECEIVED block on the right. Studio is a dense three-pane tool — left nav rail, centre content table, right inspector — on the same grid, with no rounded cards.
Imagery. No stock photography and no illustration for its own sake. Each portfolio project is represented by one art-directed image treated as an artefact — a product on concrete, a poster on a wall, a screen photographed at an angle, a garment on a rail — always with visible material texture and a hard crop. Images are framed by a 1px rule and carry a small corner tag in 11px uppercase showing client and year. Studio uses no imagery at all; it uses 64px thumbnails of the same artefacts with their tags. Icons are 2px stroke pictograms in bone white.
Explicitly avoided. Rounded cards with soft drop shadows and hover-lift; gradient blobs, glassmorphism, or any blurred translucent surface; blue, indigo, or violet as an accent; centred headline-plus-subtext-plus-pill-button hero compositions; Inter, Roboto, Helvetica, Poppins, or system-ui as heading or body families; stock photography of smiling teams, handshakes, or generic office scenes; bouncy, springy, or floating motion; decorative illustration, mascots, or spot art. The generic indigo/blue-on-white SaaS template is forbidden.
Readable text and controls. Headlines, wordmarks, labels, numbers, and controls stay entirely inside the viewport and their container at 375px, 768px, and 1280px, wrapping or scaling to fit, with no other element covering any part of them. Imagery, decoration, and motion may be cropped, bled, rotated, overlapped, or cut as the direction asks, provided they cover no readable text or control. The credits ticker may cross the viewport edge by design; every credit becomes fully readable as it passes.
The landing first screen is a quoted artefact of the studio itself.
The first screen is a full-viewport ink-black plane (#0B0B0B) with the 12-column grid rules visible behind everything as 1px #2A2A28 hairlines. There is no centred composition, no gradient, no floating card, and no image in the hero — the composition is type, grid, and one hot stripe.
A single display headline in Archivo 800 uppercase, set at clamp(3.5rem, 9vw, 8rem), occupies columns 1–9 and reads as a stacked three-line statement. The middle line is indented one column, breaking the left edge into a stepped profile. The last word is wrapped in literal typographic quotation marks set in safety orange #FF4A00 — the studio quoting itself, and the only hot colour in the frame.
Beneath the headline, pinned flush-left, sits a 1px-ruled row containing the agency's one-line proposition in 16px bone white #F4F1EA and a hard-edged orange button labelled START A PROJECT with a 2px radius. The button is the only control in the hero and the only other place orange appears.
Columns 10–12 hold a vertical rail of rotated 11px uppercase discipline tags — BRAND, DIGITAL, FILM, SPATIAL — stacked down the right edge, each separated by a hairline. The rail is the hero's only vertical structure and balances the stepped headline without centring anything.
A hazard-stripe band 8px tall runs along the very bottom of the viewport, and the credits ticker scrolls above it. The stripe is the studio's recurring graphic and the ticker is the studio's own credits — the site quoting its own provenance.
Every element in this composition is accepted content: the agency identity, its proposition, its disciplines, its credits, and the path into Contact. Nothing is added for decoration.
Interaction Model: Animated Motion Tempo: expressive Hero Dimensionality: flat
Landing Hero Motion Brief.
START A PROJECT control follow flush-left; the discipline tag rail fills down columns 10–12; the credits ticker begins its scroll above the hazard band. The outcome is a fully composed, still frame — the motion is the assembly of a printed artefact, not an entrance animation.WORK → "WORK"). Page transitions are a 240ms hazard-stripe wipe across the viewport. Portfolio rows slide their image in from the right edge on hover with a hard cut at the end, not an ease-out. The credits ticker runs continuously and pauses on hover. Studio feedback is instant and state-based. No bounce, no spring, no float.START A PROJECT control flush-left beneath it, the rotated discipline tag rail down columns 10–12, the 8px hazard band along the bottom, and the credits ticker scrolling above it.prefers-reduced-motion everything resolves to static: the ticker becomes a wrapped two-row list of credits, wipes become instant cuts, and hovers become simple underline reveals. The composed first frame is unchanged.NFR-1 — Durable curated state. Portfolio projects and agency presentation content persist durably and remain bound to the agency owner identity across sessions, so that curation survives between visits and the public site reflects the last published state. (required_inference; rationale: the accepted curation responsibility is recurring and its results are what the public site displays.)
NFR-2 — Public pages are anonymously reachable. Landing, Portfolio, About, Contact, Login, and Sign Up render without an established session. Studio is the only destination requiring login. (explicit via the accepted access contract; rationale: the public site's purpose is to be seen by prospective clients and portfolio viewers, and the identity surfaces must be reachable before the access they establish exists.)
NFR-3 — Readable text and controls stay whole. Headlines, wordmarks, labels, numbers, and controls remain entirely inside the viewport and their container at 375px, 768px, and 1280px, wrapping or scaling to fit, with no other element covering any part of them. (explicit; rationale: stated as a project-wide constraint in the creative direction.)
NFR-4 — Reduced-motion support. Under prefers-reduced-motion, the credits ticker becomes a wrapped two-row list, page-transition wipes become instant cuts, and hover reveals become simple underline reveals. (explicit; rationale: stated in the creative direction's motion specification.)
NFR-5 — Accessible contrast. Bone white #F4F1EA on ink #0B0B0B and on surface #161616 carries all reading text; muted #8A8A85 is restricted to metadata, timestamps, and label/value pairs and is never used for body copy. (explicit; rationale: stated in the palette specification.)
NFR-6 — Inquiry durability. A dispatched contact inquiry is persisted with its sender details, description, timestamp, and ticket number, and remains available to the agency owner as a durable record. (required_inference; rationale: the numbered ticket the client receives is only meaningful if the inquiry it references persists.)
NFR-7 — No fabricated content. Portfolio rows, agency presentation content, and inquiry records are never populated with placeholder or invented data; empty states render as ruled notices instead. (required_inference; rationale: the site's credibility rests on showing only the agency's real work.)
No source-specified technology choices were given; the above are labeled defaults and do not alter product behavior.
Assumptions.
content_source reference directive.)Constraints.
Agency Owner / Principal. The accepted persona who runs the creative agency, curates the site's content in Studio, and receives client inquiries.
Prospective Client. The accepted persona who evaluates the agency with hiring intent and dispatches a contact inquiry.
Portfolio Visitor / Viewer. The accepted persona who browses the site as a showcase-style portfolio without necessarily hiring.
Studio. The protected three-pane curation workspace where the agency owner manages portfolio projects and agency presentation content.
Portfolio project. A durable record representing one piece of showcased work, carrying title, year, discipline, client, an art-directed image, a description, a published state, and an index position.
Agency presentation content. The durable content describing the agency — description, capabilities, disciplines, and positioning — displayed on the public About spread.
Contact inquiry. A durable record created when a Prospective Client dispatches the Contact form, carrying sender details, description, timestamp, and a ticket number.
Ticket number. The numbered receipt printed in the RECEIVED block on Contact after a successful inquiry dispatch, serving as the client's reference.
Artefact. A portfolio project's art-directed image, treated as a tagged object rather than a decorative photograph, framed by a 1px rule and carrying a client/year corner tag.
Quoted label. The system-wide treatment in which every section, nav item, and Studio panel header renders its name in uppercase inside literal typographic quotation marks, flipping into that form on hover with a 120ms step.
Hazard stripe. The studio's recurring 45° construction-tape motif in bone white on ink, appearing 8px tall at the base of the landing hero, 4px as a section divider, and as the page-transition wipe.
Exposed grid. The 12-column layout whose 1px #2A2A28 column rules remain visible behind Landing and Portfolio content and become the table borders in Studio.
Dispatch slip. The Contact page's layout and metaphor: a ruled form on the left two-thirds and agency coordinates with a stamped RECEIVED block on the right.
No completed page designs yet.
Completed design pages will appear here when they are ready to preview.
No completed page designs yet.
Completed design pages will appear here when they are ready to preview.
No comments yet. Be the first!