# PCDD ## Purpose & users A protected Pharma Career Development Day experience for registered attendees, with personalized agendas, session details, speaker profiles, career resources, and account management. Administrators can manage attendee calendar schedule records and look up attendee accounts. ## Scope - Attendee sign-in and onboarding - Personalized and full event agendas - Session descriptions, speakers, links, and calendar scheduling - Speaker/job-profile content and attendee profile management - Admin-only removal of attendee schedule records - Admin-only read-only user lookup by email address, first name, or last name - Out of scope: public anonymous access, general event-content editing, and user editing or role changes from the admin lookup ## Tech stack - Vue-based cross-platform Fliplet app - Fliplet Data Sources for users, agenda content, speakers, and schedules - Fliplet session authentication - Lucide icons - Fliplet analytics, media, communication, and notifications capabilities ## Architecture - Manifest-driven protected screens with a public login screen - Shared navigation and data utilities loaded before screens render - User identity comes from the Users data source session - Admin access is determined by `Role = Admin` on the signed-in Users session - Role changes require a fresh sign-in before server-enforced permissions use the new role - Data-source security rules are the enforcement layer for schedule deletion and user lookup ## Screens | Screen | Path | Purpose | Data sources | |---|---|---|---| | Login | /login | Sign in | Users | | Welcome | /welcome | Welcome experience | Users | | Onboarding | /onboarding | Capture attendee interests | Users | | Home | /home | Event overview and next actions | Users, agenda-related sources | | My Journey | /journey | Career journey and tasks | Users, task-related sources | | Task Detail | /task/:id | View and complete a journey task | Task-related sources | | Profile | /profile | Account, interests, sign out, admin schedule management, and admin user lookup | Users, User Schedules | | Agenda | /sessions | Personalized/full agenda and session details | Users, Sessions, Speakers, User Schedules | | Pharma Functions | /pharma-functions | Explore job profile spotlights | Pharma-function content sources | ## Code organization - One Vue screen per user-visible page - Shared navigation, status, session-card, theme, and data utilities - Screen styles use screen-specific class prefixes - Data-source rows are read as `record.data.` - Preserve existing screen behavior with targeted edits ## Design language - Roche Sans typography - Cream background, purple headings, blush accents, dark readable body text - 14px corner radius and medium card elevation - Responsive mobile bottom navigation and tablet/desktop top navigation - Light management cards use explicit dark text and 44px minimum touch targets ## Data sources - Users: attendee identity, profile, interests, authentication state, and `Role`; users can read their own row, while signed-in Admin sessions may read only `Email`, `First Name`, `Last Name`, and `Role` for the user lookup - User Schedules: calendar/schedule markers keyed to attendee and session; attendee-owned access is preserved, while Admin users may read all rows and delete rows - Sessions: agenda session details and timing - Speakers: speaker details and linked photo values - Additional task and career-profile sources support journey and spotlight screens ## Decisions log - 2026-09-07: Added a Users `Role` field and used exact case-insensitive `Admin` as the schedule-management gate, so deletion is role-based rather than tied to hardcoded email addresses. - 2026-09-07: Kept attendee schedule access owner-scoped and added a separate Admin-only delete rule, avoiding a broad delete permission. - 2026-09-07: Placed schedule management in Profile to avoid adding another navigation destination for a bounded admin task. - 2026-09-07: Added an Admin-only Users read rule limited to email, first name, last name, and role, so administrators can find attendees without exposing authentication fields. - 2026-09-07: Kept the admin user lookup read-only and limited visible results to 10 at a time to avoid accidental account changes and large-page rendering costs. - 2026-09-07: Added a refresh-access sign-out path because role-based server permissions use the role stored in the signed-in session. ## Known gaps - An existing Users record must be assigned `Role = Admin` before either admin management section is visible. - After assigning or changing an Admin role, the user must sign out and sign in again before the new server-enforced access takes effect.