foresight / app /mock-data.js
umangchaudhry's picture
Deploy 48f0749 from GitHub
5a759a9 verified
Raw
History Blame Contribute Delete
8.23 kB
/*
* Foresight UI prototype β€” MOCK DATA
* -----------------------------------
* EVERYTHING in this file is fake, hand-authored placeholder content that only
* *looks* plausible. There are no real Vanderbilt records here, no API calls,
* no knowledge-base reads. This is the single place to tweak content during a
* design walkthrough ("change this event", "reword this nudge").
*
* See ../docs/ui-design-plan.md and issue #14 for scope.
*/
const MOCK = {
// ---- The four domains (primary nav + global color system) ----------------
// Colors are also defined as CSS variables in styles.css; kept here so JS can
// color chips/pins/tiles by domain key.
domains: {
strengths: {
key: "strengths",
name: "My Strengths",
facet: "personal",
color: "#E0A83E",
icon: "✦",
purpose: "Know what you're great at β€” and lean on it.",
},
crew: {
key: "crew",
name: "My Crew",
facet: "social",
color: "#E86A5C",
icon: "◍",
purpose: "Find your people. Family counts as crew, too.",
},
future: {
key: "future",
name: "My Future",
facet: "professional",
color: "#4A6FA5",
icon: "➀",
purpose: "Research, internships, fellowships, careers β€” one step at a time.",
},
vu: {
key: "vu",
name: "My VU",
facet: "academic",
color: "#4C9A6E",
icon: "β—ˆ",
purpose: "The academic side of campus β€” and who to ask for help.",
},
},
// ---- The signed-in student -------------------------------------------------
// Only the greeting fallback is left. The invented year / major / strengths /
// interests went with the Today rewrite: that screen now reads the real profile
// through GET /api/today, and a second, fictional copy of the same fields is
// exactly how a demo ends up showing someone else's data.
student: {
firstName: "there", // replaced at boot by the signed-in student's real name
},
// ---- Daily affirmations (display-only; cycles through this repository) -----
// Per 2026-07-09: non-interactive. Cross-cultural wisdom + positive psychology,
// aimed at negative self-talk.
affirmations: [
"These resources were built for you. You are allowed to use every one of them.",
"Asking for help is a skill the strongest students practice on purpose.",
"You don't have to have it all figured out today. Just take the next small step.",
"Belonging isn't something you earn here β€” it's something you already have.",
"The people in these offices *want* to hear from you. That's literally their job.",
"Being the first in your family here means you're building a map others will follow.",
"Progress over perfection. Showing up counts.",
"You bring a perspective this campus needs. Don't shrink it.",
"It's okay to feel out of place and still deserve to be here. Both are true.",
"Small conversations open big doors. Send the email.",
],
// Today's classes, this week's coursework, the interest feed and the old nudges
// used to live here. They are all real now β€” see GET /api/today, server/today.py,
// and the `Today` module in app.js. The nudges were not rewired but deleted: two
// of the three were feed items in a different card style, and the third ("you
// haven't been to office hours yet") needed attendance data that does not exist.
// ---- Chat ------------------------------------------------------------------
// Ask Foresight is real now. The greeting and the starter prompts come from the
// server (GET /api/chat/config) so they can be tuned without a frontend deploy,
// and the canned transcript that used to live here is gone β€” answers are
// generated from the knowledge base. See app/chat.js and server/agent/.
// ---- Four-domain page content ---------------------------------------------
domainContent: {
strengths: {
blurb: "You lead with Learner and Input β€” you love figuring things out and gathering knowledge. Here's how to put that to work.",
cards: [
{ h: "Play to your Learner strength", p: "Front-load reading before lectures β€” you retain more when you preview." },
{ h: "A worry, handled", p: "You rated \"I don't belong in my classes\" fairly high. That feeling is common for first-gen students β€” and it fades fastest when you speak up once in each class." },
{ h: "Where your strengths shine on campus", p: "Peer tutoring, research labs, and the Writing Studio all reward curiosity." },
],
},
future: {
blurb: "Your future is built one small step at a time. These are the on-ramps.",
cards: [
{ h: "Undergraduate research", p: "Info session tonight, 6:00p. First-years can and do join labs." },
{ h: "Internships (Handshake)", p: "Set up your profile now; recruiting for next summer starts earlier than you'd think." },
{ h: "Fellowships", p: "Awards like the Keegan support research and study. It's never too early to learn the landscape." },
{ h: "Immersion Vanderbilt", p: "The graduation requirement that can become a research or creative project you're proud of." },
],
},
},
// The grand calendar reads the real knowledge base now β€” see calendar.js.
// The campus map reads the real buildings + directory knowledge base β€” see campus.js.
// My VU reads the real schedule, key dates, class search and funding β€” see vu.js;
// its mock academics block (fake weekly grid + fictional 4-year plan) is gone.
// ---- Prep: communication & writing assistant -----------------------------
prepScenarios: [
{
key: "oh-intro",
domain: "vu",
title: "Introduce yourself at office hours",
draft: "Hi Professor Okafor β€” I'm {first}, from your 9:10 BSCI 1510 section. I wanted to stop by to introduce myself and ask a question about cell membranes from Tuesday's lecture. Is now an okay time?",
tips: ["You don't need a 'big' question β€” showing up is the point.", "Sit down; it signals you're planning to stay a minute.", "It gets easier the second time."],
},
{
key: "prof-email",
domain: "future",
title: "Email a professor about research",
draft: "Dear Dr. Ramirez,\n\nI'm a first-year student interested in neuroscience, and I read about your lab's work on memory. I'd love to learn whether there are ways for undergraduates to get involved, even in a small role. Would you be open to a brief conversation?\n\nThank you for your time,\n{first}",
tips: ["Name the specific work β€” it shows you did your homework.", "Ask for a conversation, not a job.", "One short paragraph is plenty."],
},
{
key: "fair-followup",
domain: "future",
title: "Follow up after a career fair",
draft: "Hi Sam,\n\nThanks for talking with me at the fair today about the summer analyst role. I enjoyed hearing about your team's projects, and I've attached my rΓ©sumΓ©. I'd welcome any next steps whenever you have a moment.\n\nBest,\n{first}",
tips: ["Send it the same day while they remember you.", "Mention one specific thing you talked about.", "Keep it short and warm."],
},
{
key: "roommate",
domain: "crew",
title: "Bring up something with a roommate",
draft: "Hey β€” do you have a few minutes to chat later? I've been meaning to talk about how we split quiet hours for studying, and I'd love to find something that works for both of us.",
tips: ["Lead with 'us,' not 'you.'", "Pick a calm moment, not mid-conflict.", "Propose, don't demand β€” leave room for their side."],
},
],
// ---- My Story: the "treasure trove" carried-forward memory ----------------
// ---- My Crew is real now β€” see app/crew.js and GET /api/crew. The invented
// orgs, events, member counts and "syncs from AnchorLink" banner that used to live
// here are gone rather than left lying around, the same way the Today rewrite
// removed its mock feed: a second, fictional copy of data the app now reads for
// real is exactly how a demo ends up showing someone else's campus.
};
// Expose globally for the plain-JS app.
window.MOCK = MOCK;