This app is a JSON-powered personal profile card with a comedic internship-hunting theme. On
load it fetches a small JSON file and renders three fields into a profile display:
{ "name": "Om Kamath", "netId": "ok97", "dream": "To get a goddamn internship in this economy"
}
Below the profile fields is a fake Internship Hustle Meter hardcoded at 0%, and
a satirical Dream Activity Log with timestamped entries mocking the application
grind — 14 applications, 14 automated rejections, a LinkedIn profile viewed by 3 recruiters
with zero callbacks. A collapsible Raw JSON Response section (▼) at the bottom
reveals the fetched payload.
Things That Didn't Work as Expected
✗Hustle Meter always 0%. It's hardcoded — no calculation happens from the JSON data, so the "based on dream intensity, current economic conditions, and pure vibes" caption is purely decorative.
✗Name and Net ID fields appear blank on initial load. There is no loading skeleton or placeholder — the labeled fields sit empty until the async fetch resolves, which looks broken.
✗Activity Log is fully static. The entries are hardcoded HTML, not driven by the JSON, so the "Text Media Module" framing is misleading — nothing in the log actually comes from the data source.
✗No error state. If the JSON fetch fails, the name and dream fields silently stay blank with no user feedback.
✗Status field ("Manifesting") is decorative only. It doesn't reflect any computed or fetched state, and doesn't change under any condition.
Prompt to Improve the App
// paste into your next build iteration
Dynamic Hustle Meter: Add applications and callbacks
integer fields to the JSON. Compute the meter percentage as
callbacks / applications * 100 and animate the bar from 0% to that value on
load with a CSS transition.
Loading skeletons: While the fetch is in flight, show animated shimmer
placeholders in the Name, Net ID, and Dream fields instead of leaving them blank.
JSON-driven Activity Log: Move the log entries into the JSON as an array of
objects with timestamp and message fields. Render them dynamically
so the log actually reflects the data source.
Error state: If the fetch fails or returns malformed JSON, display a clear
error message in place of the profile fields — e.g. "Failed to load dream data. The economy
wins again."
Dynamic Status badge: Derive the Status field from the data — e.g. if
callbacks > 0 show "Interviews Pending", else "Manifesting". Make it mean
something.