Create Contact page with form UI and contact info #40

Closed
opened 2026-01-15 19:38:26 +00:00 by lmiranda · 1 comment
Owner

Description

Create a Contact page (portfolio_app/pages/contact.py) with a contact form UI (disabled in Phase 1) and displayed contact information. Backend form submission will be implemented in a future phase.

Page Structure

From blueprint "7. CONTACT PAGE":

  1. Intro Text - Open to opportunities statement + Bandit Labs mention
  2. Contact Form (UI only, disabled):
    • Name field
    • Email field
    • Subject dropdown (Job Opportunity / Consulting Inquiry / Other)
    • Message textarea
    • Submit button (disabled with tooltip)
  3. Direct Contact Section:
  4. Location Info - Toronto, ON + work eligibility

Acceptance Criteria

  • Page registered at /contact using Dash Pages
  • Contact form UI rendered with all fields
  • Submit button disabled with "Coming Soon" tooltip or message
  • Form fields are interactive but submission is blocked
  • Direct contact info displayed clearly (email, phone, social links)
  • Location and work eligibility shown
  • External links (LinkedIn, GitHub) open in new tab
  • Mobile responsive layout (form stacks on mobile)
  • Theme-aware styling

Technical Notes

  • Register page: dash.register_page(__name__, path="/contact", name="Contact")
  • Use dmc.TextInput, dmc.Select, dmc.Textarea for form fields
  • Subject dropdown options: ["Job Opportunity", "Consulting Inquiry", "Other"]
  • Disable submit: dmc.Button("Submit", disabled=True)
  • Add info alert: dmc.Alert("Form submission coming soon...", color="blue")
  • Use dmc.Anchor with target="_blank" for external links

Phase 2 Notes

Backend implementation will require:

  • Email service integration (SendGrid, AWS SES, or similar)
  • Form validation callback
  • Success/error feedback
  • Rate limiting consideration

Content Source

Full content in docs/changes/Portfolio-Changes.txt section "7. CONTACT PAGE"

Dependencies

  • Depends on: #40 (Extend sidebar navigation)

Labels: Type/Feature, Priority/Medium, Complexity/Medium, Efforts/M, Component/Frontend, Sprint/8

## Description Create a Contact page (`portfolio_app/pages/contact.py`) with a contact form UI (disabled in Phase 1) and displayed contact information. Backend form submission will be implemented in a future phase. ## Page Structure From blueprint "7. CONTACT PAGE": 1. **Intro Text** - Open to opportunities statement + Bandit Labs mention 2. **Contact Form** (UI only, disabled): - Name field - Email field - Subject dropdown (Job Opportunity / Consulting Inquiry / Other) - Message textarea - Submit button (disabled with tooltip) 3. **Direct Contact Section**: - Email: leobrmi@hotmail.com - Phone: (416) 859-7936 - LinkedIn link - GitHub link 4. **Location Info** - Toronto, ON + work eligibility ## Acceptance Criteria - [ ] Page registered at `/contact` using Dash Pages - [ ] Contact form UI rendered with all fields - [ ] Submit button disabled with "Coming Soon" tooltip or message - [ ] Form fields are interactive but submission is blocked - [ ] Direct contact info displayed clearly (email, phone, social links) - [ ] Location and work eligibility shown - [ ] External links (LinkedIn, GitHub) open in new tab - [ ] Mobile responsive layout (form stacks on mobile) - [ ] Theme-aware styling ## Technical Notes - Register page: `dash.register_page(__name__, path="/contact", name="Contact")` - Use `dmc.TextInput`, `dmc.Select`, `dmc.Textarea` for form fields - Subject dropdown options: `["Job Opportunity", "Consulting Inquiry", "Other"]` - Disable submit: `dmc.Button("Submit", disabled=True)` - Add info alert: `dmc.Alert("Form submission coming soon...", color="blue")` - Use `dmc.Anchor` with `target="_blank"` for external links ## Phase 2 Notes Backend implementation will require: - Email service integration (SendGrid, AWS SES, or similar) - Form validation callback - Success/error feedback - Rate limiting consideration ## Content Source Full content in `docs/changes/Portfolio-Changes.txt` section "7. CONTACT PAGE" ## Dependencies - Depends on: #40 (Extend sidebar navigation) --- **Labels:** Type/Feature, Priority/Medium, Complexity/Medium, Efforts/M, Component/Frontend, Sprint/8
Author
Owner

Completed

Created portfolio_app/pages/contact.py with:

  • Intro Section: Job search + consulting text
  • Contact Form: All fields present but disabled with "Coming Soon" alert
  • Direct Contact: Email, phone, LinkedIn, GitHub with icons
  • Location Section: Toronto + work eligibility

Form UI is complete and ready for backend integration in future phase.

Syntax and lint checks pass.

✅ **Completed** Created `portfolio_app/pages/contact.py` with: - **Intro Section**: Job search + consulting text - **Contact Form**: All fields present but disabled with "Coming Soon" alert - **Direct Contact**: Email, phone, LinkedIn, GitHub with icons - **Location Section**: Toronto + work eligibility Form UI is complete and ready for backend integration in future phase. Syntax and lint checks pass.
lmiranda added this to the Launch: Host, Bio and Toronto House Market Analysis project 2026-01-16 14:51:54 +00:00
lmiranda self-assigned this 2026-01-16 14:51:59 +00:00
lmiranda moved this to Done in Launch: Host, Bio and Toronto House Market Analysis on 2026-01-16 14:52:28 +00:00
Sign in to join this conversation.