topaz-instagram is a read-only data portrait of a single Instagram account — @Deep_sardaeni712. It is not a management tool, not an analytics dashboard, and not a scheduling or growth product. It is a gallery piece: the account's public body of work (posts, reels, likes, saves, comment threads, follower growth) is rendered as a living, generative visual form that the account owner — and anyone they choose to share the link with — can stand in front of and see.
The product intent is derived directly from the authoritative requirement thread: the user asked about their own Instagram account Deep_sardaeni712, confirmed they wanted to proceed with building something around it, and accepted the project name topaz-instagram. The specific tool, dashboard, or site was never named by the user; the accepted scope is a product built around that Instagram account, with one binding exclusion: the product must not pull up or manage anyone's Instagram account, and no Instagram account access or credential handling is part of it.
The audience is therefore the Instagram account owner — the person who holds @Deep_sardaeni712 — plus the people they share the portrait with. The owner's recurring responsibility is to state what they want built and to use the resulting product; the product's job is to give their account a presence you can stand in front of, fed entirely by data the owner supplies themselves (an exported archive or manually pasted post metrics), never by a live authenticated connection.
topaz-instagram is delivered as a single first-party custom web surface — the Landing page — which is the anonymous public entry to the portrait. There is no login, no account linking, no OAuth handshake with Instagram, and no server-side credential store. The Landing page is reachable by anyone with the link, and it is the only page in the current information architecture.
The current delivery shape is a custom UI (custom_ui: true) with one interaction surface:
| Surface | Kind | Owner | Access |
|---|---|---|---|
| Landing | custom_page | application | none |
Actors. The only accepted active human persona is the Instagram account owner. There are no system, provider, or external-service personas in the current scope; the product has no outbound integration with Instagram or any other provider.
Accepted behavior. The Landing page presents the account as a data portrait: a full-bleed generative hero, a metric band, a horizontally-scrolling post archive, a ruled "topography" ledger of per-post figures, and a closing statement band. All figures shown are supplied by the owner from an exported archive or pasted metrics. The page is read-only with respect to Instagram: it never authenticates, never fetches from Instagram's API, and never writes back to the account.
Ownership. All accepted human-facing behavior is owned by the Landing page. There is no separate backend service, no queue worker, and no provider surface in the current scope. Any data ingestion is a local, owner-initiated act of supplying an export or pasting metrics into the portrait.
Narrow exclusions. No Instagram account access, no credential handling, no account management, no posting, no scheduling, no follower automation, no direct messages, and no live Instagram API integration. These are binding and are not softened by the presence of Instagram-related vocabulary elsewhere in the document.
The product is a read-only portrait, not an admin panel. The distinction matters for every downstream decision: the owner does not log in to topaz-instagram to operate their Instagram account; they open it to look at their account as an artefact. The emotional register is gallery-like awe plus personal pride.
Because the product cannot and must not connect to Instagram, the data that drives the portrait arrives one of two ways, both owner-initiated and both local:
The portrait then renders those figures as a generative field, a metric band, an aperture strip, and a ledger. Nothing about this flow requires an account on topaz-instagram, and nothing about it touches Instagram's servers on the product's behalf.
Current vs. future. Everything described in this document is current. There is no accepted future horizon in the authoritative thread; no roadmap items, no "phase two" capabilities, and no deferred integrations have been accepted. The only forward-looking statement permitted here is the explicit exclusion itself: live Instagram integration is out of scope, not deferred.
Access boundary. The Landing page is anonymous and public (access_requirement: none). This is not a provisional negative — it is the correct boundary for a read-only portrait that the owner shares by link. There is no protected destination in the current scope, so there is no identity-establishment journey to design, and no account-management capability is implied.
Not applicable. No reference directive in the authoritative thread declares content_source, so no source content inventory is rendered.
The Landing page is the anonymous public entry to the portrait. It is a vertical museum sequence, not a dashboard: five full-bleed sections stacked in order, each separated by a full-width 1px hairline rule. On mobile (390px and below) every section collapses to a single column with 20px gutters; the archive strip remains horizontally scrollable.
Information and state
DEEP_SARDAENI712, set in the product's own type — never in Instagram's brand lockup or gradient.READ-ONLY · NO ACCOUNT ACCESS.Primary actions
Supporting actions
Domain entities
@Deep_sardaeni712; the subject of the portrait. Read-only.Component responsibilities
#05060A. Hosts the WebGL particle field. Asymmetric composition: the field's dense mass is pushed to the right two-thirds; type is anchored in the lower-left third. Carries the stacked headline, the A DATA PORTRAIT · NOT A DASHBOARD label, the Enter the portrait → link, and the read-only pill.#E8B54A band carrying one oversized Fraunces statement in near-black. The only bright surface in the entire product.States
Enter the portrait → link, with the metric band showing placeholder rules and the aperture strip and ledger showing a single ruled row that states no account data has been supplied yet. The data-source control is the only actionable element.Each requirement below is a distinct story point with provenance, lifecycle facts, and observable acceptance. Provenance values are explicit, basic_default, or required_inference.
FR-1 — Public entry to the portrait As an Instagram account owner, I should be able to open a public link to topaz-instagram and immediately see my account presented as a data portrait, so that I can share my presence as a form rather than an admin panel.
required_inference (the source never names a page; the Landing surface is the anonymous first impression).DEEP_SARDAENI712 in Fraunces light, the label A DATA PORTRAIT · NOT A DASHBOARD, the Enter the portrait → link, and the READ-ONLY · NO ACCOUNT ACCESS pill.Enter the portrait →.FR-2 — Read-only boundary As an Instagram account owner, I should be able to use topaz-instagram knowing it never logs in to, pulls from, or manages my Instagram account, so that my credentials and account control are never involved.
explicit (hard constraint from the authoritative thread).READ-ONLY · NO ACCOUNT ACCESS pill is visible in the hero; no authentication flow, credential field, or account-linking control exists anywhere in the product.FR-3 — Supply the account data As an Instagram account owner, I should be able to supply my account's data by providing an exported archive or pasting post metrics, so that the portrait can be rendered without any live Instagram connection.
required_inference (the read-only constraint makes owner-supplied data the only viable feed for the accepted portrait).FR-4 — Generative hero field As an Instagram account owner, I should be able to see my account's numbers rendered as a living particle field, so that my presence reads as a form rather than a chart.
required_inference (the accepted portrait concept requires a visual binding between the account's numbers and the rendered form).#E8B54A with teal counter-currents #38E0C8; particle count follows post frequency, brightness follows engagement, and position along the drift axis follows recency.prefers-reduced-motion, the field renders as a single static frame.FR-5 — Metric band As an Instagram account owner, I should be able to read my three headline figures as oversized numerals, so that the scale of my account is legible at a glance.
required_inference (the accepted portrait requires the account's headline figures to be presented).FR-6 — Post archive as aperture strip As an Instagram account owner, I should be able to browse my posts as a horizontally-scrolling strip of circular apertures, so that my body of work reads as a sequence of data points rather than a photo grid.
required_inference (the accepted portrait requires the account's posts to be presented).prefers-reduced-motion, the strip becomes a normal horizontally-scrollable row so every item can be brought fully into view.FR-7 — Topography ledger As an Instagram account owner, I should be able to read every post as a ruled row of tabular figures, so that my account's detail is legible like an instrument readout.
required_inference (the accepted portrait requires per-post detail to be presented).FR-8 — Closing statement band As an Instagram account owner, I should be able to reach a closing statement that names what the portrait is, so that the piece ends on its own terms rather than trailing off.
required_inference (the accepted portrait sequence requires a terminal section).#E8B54A band carrying one oversized Fraunces statement in near-black — the only bright surface in the product.Product context. The owner holds the Instagram account @Deep_sardaeni712. They asked about their own account and confirmed they wanted to proceed with building something around it. The specific tool, dashboard, or site was never specified by them — what they accepted is a product built around that account, with the binding exclusion that it must not pull up or manage anyone's Instagram account.
Primary goal. To see their account as an artefact — a presence they can stand in front of — rather than to operate, grow, schedule, or administer it.
Distinct accepted responsibilities.
Relevant inputs and decisions.
Interactions with other accepted participants. There are no other accepted human personas in the current scope. The owner's only counterparties are the people they share the link with, who are viewers of the portrait rather than participants in a workflow. There is no handoff, no approval, and no counterparty decision in the current product.
Observable success. The owner opens the link and sees their account rendered as a generative field, a metric band, an aperture strip, and a ruled ledger — all populated from data they supplied, with the READ-ONLY · NO ACCOUNT ACCESS pill confirming that nothing about their Instagram credentials was involved.
What makes this role's work different. The owner is not an operator. They do not log in, do not manage, do not schedule, and do not respond to anything inside the product. Their only recurring act is to supply data and then look at what it becomes. Every design decision in topaz-instagram follows from that: the product has no admin surface, no settings, no permissions, and no notifications, because the owner's job is to stand in front of the portrait, not to run it.
#05060A. The account handle DEEP_SARDAENI712 appears in Fraunces light at clamp(48px, 9vw, 132px), anchored in the lower-left third. Beneath it, in 11px uppercase IBM Plex Mono with 0.18em tracking, reads A DATA PORTRAIT · NOT A DASHBOARD.READ-ONLY · NO ACCOUNT ACCESS. The owner sees immediately that no credential is involved.Enter the portrait → or scrolls into the metric band.Enter the portrait → link — a single text link with a 1px amber underline, pinned to the bottom-left corner.#E8B54A band carrying one oversized Fraunces statement in near-black — the only bright surface in the entire product, arriving after four screens of void.prefers-reduced-motion enabled, the field renders as a single static frame and the archive strip becomes a normal horizontally-scrollable row, so every aperture can still be brought fully into view. The sequence remains fully readable.prefers-reduced-motion enabled, the static arrangement applies and the portrait remains fully usable.The creative direction is authoritative for this section. The muse is Refik Anadol; the headline is "Data made physical: an Instagram account turned into a living data sculpture."
| Role | Token | Hex |
|---|---|---|
| Background (void ground, ~70% of every screen) | --bg | #05060A |
| Surface (barely-there panels) | --surface | #0B0E18 |
| Hairline / contour lines | --hairline | #1C2233 |
| Text (readable text only) | --text | #F4F1EA |
| Primary (topaz amber — the field's dominant hue) | --primary | #E8B54A |
| Accent (cool teal counter-current) | --accent | #38E0C8 |
| Muted (metadata and axis labels) | --muted | #7A8296 |
The generative field itself supplies the colour, glowing in topaz amber #E8B54A with a cool teal counter-current #38E0C8 — the two hues of a gemstone under light, and a deliberate nod to the project name. Warm ivory #F4F1EA is reserved for readable text only. Surfaces #0B0E18 are barely-there panels with 1px #1C2233 hairlines, never white glass. No blue, no violet, no gradient blobs. The generic indigo/blue-on-white SaaS template is forbidden for this project.
clamp(48px, 9vw, 132px) for the display hero. Body 17px desktop / 16px mobile. Labels 11px uppercase, 0.18em tracking.No cards with rounded corners and drop shadows. Full-bleed canvas edges, hairline 1px rules that run the full width of the viewport, and circular aperture frames for post thumbnails — everything reads as a lens or a plinth. Panels are flat rectangles with a single top hairline. The only curves are the particle field's own organic flow and the circular post apertures.
A vertical museum sequence, not a dashboard:
On mobile everything collapses to one column with 20px gutters; the archive strip stays horizontally scrollable.
The generative field is the imagery — a WebGL point cloud of thousands of particles whose density and hue are driven by the account's own numbers (post frequency → particle count, engagement → brightness, recency → position along the drift axis). Post thumbnails appear only as small circular apertures, heavily darkened, treated as data points rather than photographs. Supporting imagery: fine topographic contour lines drawn in #1C2233, and a single amber data-wash gradient that runs behind the closing statement. Stock photography of phones, hands, or people scrolling is excluded.
The portrait as a standing wave.
The public entry is a full-bleed near-black canvas #05060A filling 100vh, in which a slow-drifting WebGL particle field glows in topaz amber with teal counter-currents — the account's own data made physical. The composition is deliberately asymmetric: the field's dense mass is pushed to the right two-thirds, and the type is anchored in the lower-left third over the dark part of the field.
Over that dark left edge sits a stacked headline in Fraunces light — DEEP_SARDAENI712 at clamp(48px, 9vw, 132px) — and beneath it, in 11px uppercase IBM Plex Mono with 0.18em tracking, A DATA PORTRAIT · NOT A DASHBOARD. Below that, pinned to the bottom-left corner, a single text link with a 1px amber underline: Enter the portrait →. In the top-right corner, a hairline-bordered pill reads READ-ONLY · NO ACCOUNT ACCESS.
Nothing is centred. There is no blue button and no gradient blob — the field itself is the hero. The account name is set in our type, never in Instagram's brand lockup or gradient.
The concept recomposes only accepted content, states, and controls: the handle, the read-only pill, the entry link, and the generative field bound to the owner-supplied numbers. It introduces no new behaviour, page, or destination.
Interaction Model: Parallax Motion Tempo: cinematic Hero Dimensionality: webgl
Focal subject. A full-bleed WebGL point cloud of thousands of particles, glowing in topaz amber #E8B54A with cool teal counter-currents #38E0C8, drifting slowly against a near-black void #05060A.
Input → transformation → outcome thesis. The owner-supplied account data (post frequency, engagement, recency) is the input. That data is transformed into the field's physical parameters — particle count, brightness, and position along the drift axis. The outcome is a portrait that breathes: the account's own numbers made into a form the visitor can stand in front of, with the field's dense mass pushed to the right two-thirds and the type anchored in the lower-left third.
Motion vocabulary. Continuous slow generative drift — the field breathes and slowly rotates. Scroll-linked morphing condenses the field as the visitor moves into the metrics band, then disperses it. Hovering a post aperture causes a soft luminous bloom and a caption fade-in. Section transitions are slow crossfades. Everything is choreographed at 8–20 second cycles: nothing snaps, nothing pops. No bouncy, springy, or snap-in motion.
Composed first frame. The near-black canvas fills the viewport. The particle field is already drifting, its dense mass to the right. The headline DEEP_SARDAENI712 sits in the lower-left third in Fraunces light, with A DATA PORTRAIT · NOT A DASHBOARD beneath it in 11px uppercase Plex Mono. The Enter the portrait → link is pinned to the bottom-left corner with its 1px amber underline. The READ-ONLY · NO ACCOUNT ACCESS pill sits in the top-right corner behind a hairline border.
Reduced-motion state. Under prefers-reduced-motion, the field renders as a single static frame — the composed first frame above, held still. The archive strip becomes a normal horizontally-scrollable row so every aperture can be brought fully into view. All readable text and controls remain whole and legible.
The direction's hero dimensionality is webgl, so a real-time 3D scene is expected. One crafted object: a particle field — a point cloud of thousands of particles arranged along a slow drift axis, rendered in topaz amber #E8B54A with teal #38E0C8 counter-currents against the void #05060A. The scene shows the product's defining state: the account's own numbers made physical. Particle count is bound to post frequency, brightness to engagement, and position along the drift axis to recency. The field breathes and slowly rotates on an 8–20 second cycle, and morphs under scroll — condensing as the visitor enters the metric band, then dispersing. Under prefers-reduced-motion, the scene renders as a single static frame.
NFR-1 — Read-only with respect to Instagram. The product must not pull up or manage anyone's Instagram account. No Instagram account access, credential handling, OAuth flow, or management capability is included. Provenance: explicit. Rationale: binding hard constraint from the authoritative thread.
NFR-2 — Anonymous public access. The Landing page requires no identity. There is no login, no account creation, and no session continuity requirement, because the product holds no per-user durable state. Provenance: required_inference. Rationale: the accepted page contract sets access_requirement: none, and a read-only portrait shared by link has no state that must remain bound to a participant.
NFR-3 — Owner-supplied data only. All figures rendered by the portrait originate from data the owner supplies — an exported archive or manually pasted post metrics. The product performs no live fetch from Instagram or any other provider. Provenance: required_inference. Rationale: the read-only constraint makes owner-supplied data the only viable feed for the accepted portrait.
NFR-4 — Readable text and controls stay whole. Headlines, wordmarks, labels, numbers, and controls stay entirely inside the viewport and their container at 375px, 768px, and 1280px, wrapping or scaling (for example font-size: clamp(...) with its mobile size) to fit. No other element covers any part of them. Provenance: explicit (creative direction). Rationale: accessibility and legibility of the portrait's readable content.
NFR-5 — Reduced-motion support. Under prefers-reduced-motion, the generative field renders as a single static frame and the archive strip becomes a normal horizontally-scrollable row, so every item can be brought fully into view. Provenance: explicit (creative direction). Rationale: the portrait must remain usable without motion.
NFR-6 — Scrollable content may bleed by design. The aperture strip may cross the viewport edge by design; it is judged by whether it actually scrolls and whether every item becomes fully readable as it passes. A scrollable row need not show every item fully at once. Provenance: explicit (creative direction). Rationale: the museum-sequence layout depends on the strip bleeding off both edges.
NFR-7 — No generic SaaS visual language. Blue, indigo, or violet accents on a white ground are excluded. Rounded white glass cards in a grid with hover-lift shadows are excluded. Inter, Roboto, Poppins, Lato, and system-ui defaults are excluded for headings and body. Provenance: explicit (creative direction). Rationale: the portrait must read as a gallery piece, not a social dashboard.
NFR-8 — No Instagram brand assets. Instagram's own brand gradient and logo lockup are excluded. The account name is set in the product's own type, never in Instagram's. Provenance: explicit (creative direction). Rationale: the portrait is the product's own artefact, not an Instagram surface.
The authoritative thread specifies no technology choices. The following are the minimal, coherent defaults needed to deliver the accepted behavior, 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][Default — not specified by user]No Python/FastAPI service, no Docker/docker-compose stack, and no Kubernetes deployment are required by the accepted behavior. If a future accepted requirement introduces server-side work, a single shared backend should be preferred over multiple services.
Assumptions
[Assumption — required_inference][Assumption — required_inference]@Deep_sardaeni712 is the single subject of the portrait. No multi-account support has been accepted. [Assumption — required_inference]Constraints
[Explicit — binding][Explicit — page contract][Explicit — persona contract][Explicit — creative direction][Explicit — binding]#E8B54A band carrying one oversized Fraunces statement in near-black.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!