How arajmir7/ajmir-aribam-portfolio works
This repository is a personal portfolio with a private inquiry service. Visitors browse profile, work, and writing pages; prospective contacts submit an inquiry through the same-origin form endpoint, which forwards it to FastAPI for persistence and email notification. The README documents the private service binding, Neon storage, and Resend delivery. Several backend route and service implementations, as well as page wiring, were not sampled, so only documented relationships are shown.
Main entry points: route.ts Contact endpoint · inquiries.py Inquiry service · email_outbox.py Email outbox · database.py PostgreSQL
Components 23
Portfolio site
- Home page
frontend/src/app/page.tsx - Profile pages
frontend/src/app/about/page.tsx - Work pages
frontend/src/app/work/page.tsx - Work detail
frontend/src/app/work/[slug]/page.tsx - Writing pages
frontend/src/app/notes/page.tsx - Project content
frontend/src/content/projects.ts - Writing content
frontend/src/content/writing.ts
Inquiry handling
- Contact page
frontend/src/app/contact/page.tsx - Inquiry form
frontend/src/features/contact/contact-form.tsx - Contact endpoint
frontend/src/app/api/contact/route.ts - Contact safeguards
frontend/src/lib/contact-security.ts
Private inquiry service
- FastAPI app
backend/app/main.py - Inquiry route
backend/app/api/routes/contact.py - Inquiry service
backend/app/services/inquiries.py - Inquiry records
backend/app/db/models.py - PostgreSQL
backend/app/db/database.py - Email outbox
backend/app/services/email_outbox.py - Email notifications
backend/app/services/notifications.py
Health and telemetry
- Health endpoint
backend/app/api/routes/health.py - Telemetry endpoint
frontend/src/app/api/telemetry/route.ts - Browser vitals
frontend/src/features/telemetry/web-vitals.tsx
Other components
- Visitor
- Resend
Connections 23
- Visitor → Home page: browses
- Visitor → Profile pages: browses
- Visitor → Work pages: browses
- Visitor → Work detail: browses
- Visitor → Writing pages: browses
- Work pages → Project content: reads
- Work detail → Project content: reads
- Writing pages → Writing content: reads
- Visitor → Contact page: opens
- Contact page → Inquiry form: renders
- Inquiry form → Contact endpoint: posts inquiry
- Contact endpoint → Contact safeguards: validates with
- Contact endpoint → FastAPI app: forwards inquiry
- FastAPI app → Inquiry route: dispatches
- Inquiry route → Inquiry service: handles inquiry
- Inquiry service → PostgreSQL: persists records
- PostgreSQL → Inquiry records: stores
- Inquiry service → Email outbox: queues delivery
- Email outbox → PostgreSQL: claims and updates
- Email outbox → Email notifications: sends notification
- Email notifications → Resend: delivers email
- Visitor → Health endpoint: checks status
- Browser vitals → Telemetry endpoint: posts metrics