Your AI – your way.
Personify is a lightweight onboarding web-app that helps students quickly configure ChatGPT so it understands their learning style, goals, and personality. It replaces intimidating prompt-engineering with a friendly, conversational flow and delivers a ready-to-paste Custom Instructions block & ChatGPT memory prompt.
- Modular selection – pick the areas of life you want to personalise through an emoji-rich category selector.
- Chat-style flow – answer interactive questions (sliders, dropdowns, toggles, etc.) in a gradual conversation rather than a dull form.
- One-click generation – answers are transformed by an OpenAI endpoint into two Custom Instruction fields plus a memory prompt.
- Instant copy – copy buttons & deep-links make transferring the output into ChatGPT effortless.
- Dark / Light themes – global theme toggle with full reactive styling.
- Serverless backend – a single Netlify function calls the OpenAI API; the deployed frontend is 100 % static.
├─ src/ Front-end Angular 20 application
│ ├─ app/ Stand-alone feature modules & shared services
│ │ ├─ pages/ Route-level pages: home, select, flow, loading, result
│ │ ├─ shared/ Re-usable components, models & utilities
│ │ └─ theme.service.ts Global dark/light mode management
│ └─ styles.scss Global SCSS theme helpers
├─ netlify/functions/ Serverless function that proxies OpenAI
├─ backend/ Express API (used for local dev only – ignored in prod)
└─ docs/ Design, progress & planning notes
- Selection → Flow – user picks sub-categories;
SelectionServicesends IDs toFlowService. - Flow → Loading – answers collected in the chat flow are passed via Angular Router state.
- Loading → Serverless – Netlify function
/openaiPromptGenerationposts answers to OpenAI. - OpenAI → Results – response (Q1, Q2, memory prompt) is shown with copy helpers.
A visual summary:
SelectionService → FlowService → Loading page → Netlify Function → OpenAI → Results page
- Node.js 20+ and npm (Angular 20 requirement)
- Angular CLI:
npm install -g @angular/cli
-
Install dependencies
npm install
-
Environment setup (choose your development approach):
Option A: Full stack with Netlify (recommended)
- Install Netlify CLI:
npm install -g netlify-cli - Create
.envin project root with:OPENAI_API_KEY=your_api_key_here - Run:
netlify dev - Access at:
http://localhost:8888
Option B: Frontend-only development
- Run:
ng serve - Access at:
http://localhost:4200 ⚠️ API calls will fail without backend
Option C: Separate frontend + backend
- Create
.envinbackend/folder withOPENAI_API_KEY - Terminal 1:
ng serve(frontend on :4200) - Terminal 2:
cd backend && npm start(backend on :3001)
- Install Netlify CLI:
npm install
npm install -g netlify-cli
# Add OPENAI_API_KEY to .env file
netlify dev| Command | Purpose |
|---|---|
ng serve |
Frontend development server (:4200) |
netlify dev |
Full stack development (:8888) |
ng build |
Production build to dist/ |
netlify deploy |
Deploy to Netlify |
docs/PROJECT_OVERVIEW.md– original hackathon brief & complete project scopedocs/DEVELOPMENT_LOG.md– chronological implementation historydocs/DESIGN_RULES.md– design system & UX guidelines
© 2025 Parker Jones